RM 视觉学习手册¶
Navigator 战队视觉组内部手册
干活中学 · 真实代码 · 不懂就查 · 查完回来
快速入口¶
-
:material-rocket-launch:{ .lg .middle } 端到端走读(推荐起点)
一帧图像从相机到子弹的完整旅程,建立全局直觉
-
:material-code-braces:{ .lg .middle } 代码走读主线
检测 → 跟踪 → 解算 → 瞄准,跟着数据流读真实代码
-
:material-book-open-variant:{ .lg .middle } 知识字典
不懂的 C++ / ROS2 / OpenCV / 术语,随时查阅
:octicons-arrow-right-24: 基础字典 · :octicons-arrow-right-24: 术语表
-
:material-bug:{ .lg .middle } 调试指南
编译报错、检测不到目标、跟踪丢失、串口不通?
操作指南¶
怎么用这本手册(必读)
这本手册的核心理念是 "干活中学"——直接读代码,不懂就查字典,查完回来继续读。
第一次使用¶
- 打开 端到端走读 — 花 30 分钟看完整个流程,建立全局认识
- 打开 ch06 系统架构 — 理解代码仓库的目录结构和数据流
- 打开 ch07 装甲板检测 — 开始逐函数读真实代码
读代码时遇到不懂的怎么办¶
flowchart LR
A["读代码遇到不懂"] --> B{"是什么类型的问题?"}
B -->|"不懂 C++ 语法"| C["📖 查 ch02 C++ 字典"]
B -->|"不懂 ROS2 概念"| D["📖 查 ch04 ROS2 字典"]
B -->|"不懂 OpenCV 函数"| E["📖 查 ch05 OpenCV 字典"]
B -->|"不懂缩写/术语"| F["📖 查 术语表"]
B -->|"代码跑不起来"| G["🔧 查 调试指南"]
C --> H["学完回来继续读代码"]
D --> H
E --> H
F --> H
G --> H
各章节怎么跳转¶
每个代码章节都有两个链接
- GitHub 源码 — 点击直接打开对应的代码文件
- 📖 知识库 — 点击跳转到相关知识字典
例如在 ch07 看到 cv::threshold() 不懂 → 点旁边的 📖 链接 → 跳到 ch05 OpenCV 字典 → 学完 → 回来继续
Mac 用户¶
本手册优先面向 Mac 用户(🍎),同时保留 Windows(🪟)和 Linux(🐧)的内容供队友参考。涉及平台差异的地方会标注对应图标。
代码走读主线(跟着数据流读代码)¶
阅读顺序
建议按顺序读,每一步都可以跳转字典补知识:
flowchart LR
A["📷 相机采集
hik_camera_node"] -->|"/image_raw"| B["🔍 装甲板检测
armor_detector"] B -->|"/detector/armors"| C["📊 EKF 跟踪
armor_tracker"] C -->|"/tracker/target"| D["🎯 弹道解算
rm_serial_driver"] D -->|"/serial/gimbal"| E["⚡ 云台电机"]
hik_camera_node"] -->|"/image_raw"| B["🔍 装甲板检测
armor_detector"] B -->|"/detector/armors"| C["📊 EKF 跟踪
armor_tracker"] C -->|"/tracker/target"| D["🎯 弹道解算
rm_serial_driver"] D -->|"/serial/gimbal"| E["⚡ 云台电机"]
| 步骤 | 代码走读 | GitHub 源码 | 不懂时查这些字典 |
|---|---|---|---|
| 1 | 端到端走读 | — | 建立全局直觉 |
| 2 | ch06 系统架构 | RM_Vision_2027 | 📖 ch04 ROS2 · ch02 C++ |
| 3 | ch07 装甲板检测 | detector.cpp | 📖 ch05 OpenCV |
| 4 | ch08 目标跟踪 | ekf.cpp | 📖 ch04 TF2 |
| 5 | ch09 PnP 解算 | pnp_solver.cpp | 📖 ch05 透视变换 |
| 6 | ch10 弹道与瞄准 | solve_trajectory.cpp | 📖 ch11 标定 |
| 7 | ch12 进阶主题 | planner.cpp | 📖 ch04 Launch |
基础字典¶
什么时候查字典
代码走读时遇到不懂的概念,点击旁边的链接跳转。不需要提前全部看完。
| 字典章节 | 内容 | 什么时候需要查 |
|---|---|---|
| ch01 开发环境 | Ubuntu · Git · VSCode · SSH · CMake | git clone 代码、SSH 连工控机、cmake 编译报错 |
| ch02 C++ 基础 | 变量 · 指针 · class · STL · lambda | 看到 ::、&、*、template 等不懂的语法 |
| ch03 Linux 基础 | 文件系统 · Shell · vim · udev | 在工控机上操作、改配置、看日志、权限报错 |
| ch04 ROS2 核心 | 节点 · 话题 · TF2 · Launch · Component | 看到 publish、subscribe、tf2、.msg 时 |
| ch05 OpenCV | 二值化 · 轮廓 · 透视变换 · 形态学 | 看到 cv:: 开头的函数时 |
进阶字典¶
| 字典章节 | 内容 | 什么时候需要查 |
|---|---|---|
| ch11 标定系统 | 内参 · 外参 · 手眼标定 | 看到 camera_matrix、R_camera2gimbal 时 |
| ch12 进阶主题 | MPC · 全向感知 · 决策 · YOLO · 能量机关 | 完成基础走读后,深入研究 |
参考资料¶
| 资料 | 内容 |
|---|---|
| 调试指南 | 常见问题排查 · 工具速查 · 硬件检查清单 |
| 术语表 | 核心术语速查(EKF、PnP、QoS、TF2 等) |
| 学习资源 | 教程网站、PDF、论文链接汇总 |
三个代码仓库¶
| 仓库 | 说明 | 主要对应章节 |
|---|---|---|
| RM_Vision_2027 | 你们的 2027 赛季代码(主读这个) | ch06-ch12 |
| sp_vision_25 | 同济大学开源方案(参考对比) | ch07, ch08, ch12 |
| rm_vision | 去年框架(ChenJun 开源) | ch06-ch10 |
| vision_tutorial | 《了解CV和RM视觉组》PDF | 全书参考 |
如果你完全零基础¶
可以先补基础,再回来读代码
如果连 C++ 都不会,可以先按这个顺序补基础:
- ch01 开发环境(2-3天)→ 能用 Ubuntu 写代码
- ch02 C++ 基础(3-4周)→ 能看懂 class、指针、STL
- ch04 ROS2 核心(2-3周)→ 理解节点/话题/TF2
- ch05 OpenCV(2周)→ 能看懂检测器里的 OpenCV 代码
- 然后开始 端到端走读
但如果你有一定基础,直接从端到端走读开始,遇到不懂的再查字典。