背景
大四毕业了,想着大学四年也需要总结一下。就从RoboMaster这个比赛写起吧。我是大二参加的比赛,做视觉识别部分。当时的想法很简单,因为很喜欢Linux不想焊板子调电控就参加了视觉部分(虽然最终还是负责了一大部分的电控。。。)。做视觉可以用妙算可以开发一些很有趣的东西,学到很多前沿的知识。
大二时做视觉真的是从零开始的。虽然队里之前有研究生做视觉,但是却没有技术传承,连个问问题的人都没有。虽然名义上视学组有三个人,一个研究生一个大三学长还有我,但是他们都跑路了。所以我很能理解一些新接触RM视觉的人心中的迷茫。今年我考完研后去帮这一届做了下视觉,发现了很多问题,很多之前踩过的坑大家依然在踩,所以依然是各自为政天天拖拉最后赶工的状态。
我打算将RoboMaster视觉的各个方面的技术要点写成一系列的教程,帮助新手入门,也希望对其他战队有一些参考的价值。代码主要参考了东南大学SuperNova战队的开源代码(传送门:GitHub),他们的代码写得一级棒,搭建了一个很好的项目框架。很佩服他们将这么好的代码分享出来的魄力。
最近申请了一个微信公众号,名字叫江达小记。作为一个工科男起名字很头疼,就参照妍喵的网易云音乐电台妍喵小记起了个江达小记,打算将自己的学习研究的经验总结下来帮助他人也方便自己。感兴趣的朋友可以关注一下。
本系列教程会不断更新。
RoboMaster视觉教程目录
1. 摄像头
- 摄像头参数
卷帘曝光与全局曝光
曝光
Gamma矫正
帧率与摄像头选型 - 镜头
- 滤光片
- Linux摄像头驱动
摄像头调试工具
使用RMVideoCapture类调用摄像头
使用OpenCV的VideoCapture来调用摄像头
2. 妙算(Nvidia Tegra K1)系统配置
- 概览
- 妙算资料链接汇总
- 妙算系统重置/克隆/恢复
- 妙算安装系统后要做的事
妙算通过网线直连电脑并共享电脑网络
妙算远程调试
妙算安装 FTP
妙算配置软件源
妙算系统标题栏一跳一跳解决方案
妙算安装 OpenCV / CUDA
妙算安装 GCC5
妙算安装配置Qt Creator
3.视觉识别程序框架
- 概览
- 多线程
- 除了多线程,还可使用多进程
- 接下来以东南大学的开源程序为例讲一下他们的整体架构
下面进入正题
项目配置文件概览
ImgProdCons 类
主函数
用类来包装算法
4. 装甲板识别算法
- 概览
下面是一些资料链接,篇篇经典! - 装甲板识别
- test_infantry.cpp
- 分析一下装甲板
- 识别函数 int ArmorDetector::detect()
5. 目标位置解算(通过像素点获取转角)
- 概览
- 直接使用像素坐标的缺陷
- 摄像头标定
- 根据小孔成像原理得到需要的转角
- 角度测量验证
6. 目标位置解算(PnP求解目标与摄像头间的相对位置)
- 概览
- 算法原理
- solvePnP的使用流程
- 实验:测量二维码相对于摄像头的位置
- RoboMaster视觉程序中的位置解算
- 扩展
7. 风车大符识别
- 分享一些资料链接
8. 串口通讯
- 概览
- DJI开源代码串口部分
- 东南大学开源代码串口部分
- Qt编写串口助手
- 说一点题外话
9. 风车大符识别2
- 图像预处理
- 装甲板轮廓识别
- 识别要打击的装甲板
- 风车定位
10. 目标预测
- 为什么要进行目标预测
- 预测问题的几种情况及分析
- 怎样做预测
11. 总结
申请了一个自己的公众号江达小记,打算将自己的学习研究的经验总结下来帮助他人也方便自己。感兴趣的朋友可以关注一下。