学习路径 / VISION

视觉组学习路径

视觉组输出的不是一张“识别结果图”,而是电控可以立即使用的目标位置、姿态和置信信息。算法要在有限算力下保持稳定帧率,还要面对反光、遮挡、运动模糊和相机抖动这些真实问题。

原始资源视觉组原始学习仓库
打开原始资源 ↗
原始内容整理

教程面对谁?

本文面向参加 RoboMaster 比赛的感知、视觉、算法组成员,以及有志于计算机视觉领域研究的同学。阅读前需要有计算机科学基本知识并至少掌握一门编程语言,同时对 RoboMaster 比赛规则和过程有大致了解。

教程希望介绍视觉组工作的基本概况和进入视觉组需要学习的知识,帮助其他技术组了解视觉模块的运行机制,方便协作开发,也让新人更快接触视觉软件开发过程。

视觉组在比赛中做什么?

视觉组负责机器人模块主要是传感器和数据处理:通过处理相机、激光雷达等传感器采集的信息,让机器人在一定程度上具有“视觉”或“知觉”功能。

在比赛中,视觉可以让机器人自动识别敌方装甲板,实现自瞄;也可以帮助操作手击打能量机关;视觉感知系统还是哨兵机器人、自动步兵的重要组成部分,同时承担雷达等全局感知任务。

建议的学习顺序

  • 数学:微积分、线性代数、概率论,必要时继续学习凸优化、信号与系统、自动控制和李群优化。
  • 计算机基础:计算机组成、操作系统、模拟与数字电路,逐层理解从硬件到软件的抽象。
  • 编程与框架:C/C++、CMake、Python、Numpy、Matplotlib,之后再接触 Eigen、Ceres、ROS/ROS2。
  • 视觉工具:OpenCV 是核心工具;需要深度学习时学习 PyTorch,并自己完成数据集、训练、评估和推理。

遇到问题怎么办?

学习要循序渐进,先补齐前置知识,再开始后续内容;尽量成体系地学习,不要只在网上搜零散答案。遇到 bug 时先看报错信息,使用 Google 或 Bing、官方文档和 StackOverflow;提问时把环境、复现步骤、完整日志和已经尝试过的方法写清楚。

按原文顺序学习

从基础到能交付。

建议按顺序推进,每一阶段都留下代码、板卡、结构或实验记录,方便后续考核和面试时展示。

01 · OpenCV 与图像基础

从图像坐标和颜色空间开始,练习阈值分割、形态学处理、轮廓筛选和相机标定。不要只看算法在理想图片上的效果,要收集不同距离、亮度和背景下的样本,说明每个参数改变后误检和漏检如何变化。

02 · 装甲板识别

先完成灯条和装甲板候选区域提取,再逐步加入几何约束、颜色约束和时序信息。遇到误检时保留原图、二值图和筛选中间结果,能够解释是光照、反光、遮挡还是阈值设置造成的问题。

03 · 坐标变换与运动预测

建立相机、云台和车体坐标之间的变换关系,理解姿态角、目标距离和枪口方向的对应关系。再加入目标速度估计、系统延迟和弹道补偿,先用离线数据验证,再上车测试,避免把所有误差都归因于“识别不准”。

04 · 实时通信与联调

通过 UDP 或其他接口把目标信息交给电控,明确消息格式、单位、时间戳和无目标时的行为。实际联调时记录端到端延迟、丢帧和线程负载;目标是系统在连续运行一段时间后仍然稳定,而不是只在演示片段中有效。

学习建议:遇到问题前先搜索资料、阅读报错、做最小复现;仍未解决时,再带着完整背景和日志向组内同学提问。
建议的阶段产出:一组带场景说明的测试图片、装甲板识别程序、坐标和延迟测量记录,以及一段连续运行的实车视频。