10706aec65bd10ac9919163f4654a8e583581f28
上海交通大学 RoboMaster 2019赛季 视觉代码
本代码是上海交通大学RoboMaster2019赛季步兵车辆的视觉部分,其中主要功能包含自瞄,能量机关,陀螺识别 。哨兵仅仅取用其中的自瞄和陀螺识别部分。
作者:自瞄(唐欣阳,卫志坤),能量机关(孙加桐,罗嘉鸣)。
运行效果:自瞄帧率120(摄像头最大帧率)
一、代码运行环境
| 硬件设备 | 操作系统 | 运行库 | ToolChain |
|---|---|---|---|
| IntelNUC MindVision工业相机×1 USB转TTL×1 |
Ubuntu18.04 Ubuntu16.04 Windows10 |
OpenCV3.4.5 OpenCV_contrib3.4.5 Eigen3 MindVision相机驱动 |
Ubuntu18/16 : cmake3+gcc7+g++7 Win10 : cmake3+VS2019 |
| 实际装载在步兵和哨兵上的运行环境为Ubuntu18.04。 |
相机驱动下载地址:相机驱动
OpenCV下载地址:OpenCV
Eigen下载方法:
- Ubuntu16/18:
sudo apt install libeigen3-dev - Windows10 : Eigen下载地址
二、程序编译运行方式
Ubuntu16/18(在项目文件夹下)
mkdir build
cd build
cmake ..
make -j8
sudo ./run
Windows10
打开cmake-gui,选择项目文件夹和build文件夹,生成VS工程。在VS中编译项目。
命令行参数
./run --help可以查看所有命令行参数及其作用。
三、文件目录结构
.
├── armor // 存放自瞄主要算法代码
│ ├── include // 自瞄头文件
│ └── src // 自瞄源码
├── CMakeLists.txt // cmake工程文件
├── energy // 存放能量机关主要算法代码
│ ├── include // 能量机关头文件
│ └── src // 能量机关源码
├── main.cpp // 主函数
├── others // 存放摄像头、串口、配置文件等
│ ├── include // others头文件
│ ├── libmvsdk.dylib // mac相机驱动链接库
│ ├── libMVSDK.so // linux相机驱动链接库
│ ├── MVCAMSDK_X64.dll // win10相机驱动链接库
│ ├── MV-UB31-Group0.config // 相机配置文件
│ └── src // others源码
└── tools // 存放分类器训练代码及参数,自启动脚步等
├── auto-pull.sh // 自动代码更新脚本
├── create-startup.sh // 自启动文件创建脚本
├── monitor.bat // win10进程守护脚本
├── monitor.sh // linux进程守护脚本
├── para // 分类器参数
└── TrainCNN // 分类器训练源码
四、程序运行基本流程
↗ 大能量机关 ↘
各项初始化→读取当前状态 → 小能量机关 → 回到读取状态
↓ ↘ 自瞄 ↗
数据接收线程
五、识别方式
1.自瞄装甲板识别方式
首先对图像进行通道拆分以及二值化操作,再进行开闭运算,通过边缘提取和条件限制得出可能为灯条的部分。再对所有可能的灯条进行两两匹配,根据形状大小特性进行筛选,得出可能为装甲板的候选区。然后把所有候选区交给分类器判断,得出真实的装甲板及其数字id。最后根据优先级选取最终击打目标以及后续处理。
2.能量机关识别方式
六、代码命名规范
函数名:使用首字母小写的驼峰命名法
类型名:使用首字母大写的驼峰命名法
变量名:使用下划线分割命名法
Languages
C
71.3%
C++
17.7%
Python
10.6%
CMake
0.2%