背景

大四毕业了,想着大学四年也需要总结一下。就从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. 总结

申请了一个自己的公众号江达小记,打算将自己的学习研究的经验总结下来帮助他人也方便自己。感兴趣的朋友可以关注一下。