佛山大学 · 醒狮战队
27 算法组指南
2027 赛季醒狮战队算法组 · 新生指南
算法组欢迎零基础新生。你不需要提前学过机器人算法,也不需要一开始就会使用所有工具。招新期间,我们会从基础开始培训,并通过两到三轮考核,帮助大家逐步了解算法组、找到适合自己的方向。
外部学习资源
下载资料
一、算法组做什么
简单来说,算法组负责让机器人:
- 看得见:识别装甲板、能量机关和场上目标;
- 打得准:计算目标位置,跟踪并预测目标运动;
- 走得稳:确定自身位置,规划路线并避开障碍;
- 会判断:根据血量、弹药和敌情选择行动。
在战队中,机械组负责机器人的结构,电控组负责电机、底盘、云台和通信,算法组则为机器人提供视觉、导航和决策能力。一个功能从想法变成赛场上的稳定表现,离不开各组之间的配合。
二、算法组分为哪两个组别
算法组分为视觉组和导航组。
| 组别 | 主要工作 | 常见输出 |
| 视觉组 | 识别和跟踪目标,帮助机器人完成瞄准 | 检测结果、目标位置、瞄准指令 |
| 导航组 | 定位、规划、控制和决策 | 机器人位姿、运动路径、底盘速度、行动目标 |
决策属于导航组,不是单独的组别。导航组既要解决"机器人怎么走",也要解决"机器人现在该去哪里、该做什么"。
新生前期会统一学习基础知识,之后再根据个人兴趣和考核表现进入视觉组或导航组。能力强的同学后续还可以学习相关知识并维护雷达站、自定义客户端。
三、视觉组:让机器人看见并瞄准目标
视觉组主要负责装甲板、能量机关和其他场上目标的识别、跟踪与瞄准。
一套基础视觉流程通常是:
读取相机图像 → 检测目标 → 计算目标位置 → 跟踪并预测运动 → 向电控发送指令
刚开始学习时,我们会先完成几个小目标:
- 从相机中稳定读取画面;
- 在画面中找到并标出目标;
- 输出目标的位置和处理频率;
- 说清楚数据使用的单位和坐标系。
完成这些基础内容后,再进一步学习 PnP 位姿解算、目标跟踪、运动预测和弹道补偿。
视觉算法不只追求"识别得准",还要关注处理速度、延迟和稳定性。比赛中,及时而稳定的结果往往比速度很慢的高精度结果更有用。
四、导航组:让机器人自主移动和行动
导航组包含定位、规划、控制和决策。
导航首先要回答三个问题:
- 1.机器人现在在哪里?
- 2.机器人要去哪里?
- 3.机器人应该怎么过去?
| 模块 | 主要任务 |
| 感知 | 使用激光雷达、相机等传感器了解周围环境 |
| 定位 | 结合雷达、IMU 和轮速等信息计算机器人位置 |
| 规划 | 根据地图和目标点生成路径或轨迹 |
| 控制 | 将轨迹转换成底盘可以执行的速度指令 |
| 决策 | 根据比赛状态和敌情选择目标与行动模式 |
坐标系是导航学习中的重要基础。相机、雷达、底盘、里程计和地图之间的关系必须清楚,数据的单位、时间戳和频率也需要统一。
决策模块负责选择巡逻、进攻、回防或补给等行动。新生会先从简单的状态机开始,不需要一上来就使用复杂模型。决策模块决定"去哪里、做什么",具体怎么走仍由规划和控制模块完成。
ROS2与坐标系相关知识是导航组后续学习与考核的核心重点。
五、算法组平时在做什么
算法组的日常工作并不只是写代码。我们还会:
- 阅读比赛规则,确认机器人可以做什么;
- 标定相机、激光雷达和 IMU;
- 与电控组确认通信内容、单位和频率;
- 采集数据,在电脑和机器人上进行测试;
- 记录日志和 rosbag,复盘并解决问题。
电脑上能运行,不等于实车上能使用。一个功能上车前,需要检查传感器标定、坐标系、时间戳、单位、运行频率、通信接口和整体延迟。
测试通常按照以下顺序进行:
单个节点测试 → rosbag 数据回放 → 实车静止测试 → 低速测试 → 对抗测试
每一步稳定后再进入下一步。实车测试时必须安排急停和现场看护;没有把握时,应先让机器人停止运动,确保人员和设备安全。
六、零基础需要学什么
算法组的开发以 Ubuntu 为主。新人不用等所有知识都学完再开始做项目。我们会分阶段安排学习内容:第一阶段主攻C++;ROS2仅导航组学习;Linux、Git、OpenCV、CMake、RViz等工具会在第三阶段才系统上手,可以先完成小任务,再根据遇到的问题补齐知识。
建议先学习:
- C++:变量、函数、类、指针和常用容器;
- Linux:文件操作、权限、进程和软件安装;
- Git:拉取代码、创建分支、提交和推送;
- ROS 2:节点、话题、TF、launch 和 rosbag;
- OpenCV:读取图像、处理图像和相机标定;
- CMake:编译和修改基础 C++ 工程;
- RViz:查看坐标系、点云、地图和路径。
可以从这些官方资料开始:
- ROS 2 官方文档:https://docs.ros.org/
- OpenCV 官方教程:https://docs.opencv.org/
- RoboMaster 官方论坛:https://bbs.robomaster.com/
暂时不会某个工具没有关系。相比入队前已经学了多少,我们更看重学习速度、任务完成度,以及遇到问题时是否愿意主动查资料、尝试和总结。
七、培训与考核
加入育苗群后,我们会安排基础培训,设置三轮递进式考核筛选,每一轮任务会逐步贴近真实赛场上的开发任务,具体题目和时间以队内通知为准。
考核主要关注:
- 是否按要求完成任务;
- 是否理解自己编写的代码;
- 是否会查资料、看报错和排查问题;
- 是否能清楚说明自己的思路和结果;
- 是否愿意持续投入时间并与队友协作。
| 阶段 | 参考入队时间 | 学习与考核内容 |
| 第一阶段 (第一轮考核) | 1-4周 | 全体新生统一学习C++,考核重点为指针、面向对象、简单STL库,此阶段不分方向,暂不接触ROS2。完成考核后进行组别分流。 |
| 分流节点 | 第4周左右 | 第一阶段考核结束,第二阶段开始前,结合个人兴趣与考核表现,选择进入视觉组或者导航组。 |
| 第二阶段 (第二轮考核) | 2-3个月 | 导航组:学习ROS2并完成相关考核;目标是能够在RViz中讲清坐标系,理解多坐标系之间的转换关系。 视觉组:不学习ROS2;目标是能够独立写出稳定识别装甲板的识别代码,使用队内提供视频素材,不需要调用真实摄像头。 |
| 第三阶段 | 4-6个月 | 本阶段开始系统学习Linux、Git、OpenCV、CMake、RViz等全套开发工具。 视觉组:独立完成视觉自瞄,将代码烧录到实车,完成对靶车识别-计算-云台锁定完整流程。 导航组:完成包含简单决策的点到点导航。 |
注:表格内时间仅为参考,不做硬性时间限制,评判标准以任务完成质量、代码理解程度、结果可复现能力为主。
八、怎样学习和解决问题
学习开源项目时,建议按照以下顺序进行:
- 1.阅读 README,了解项目结构;
- 2.在自己的环境中将项目跑通;
- 3.使用 rosbag 或样例数据验证结果;
- 4.读懂与任务相关的关键模块;
- 5.小范围修改,并记录修改前后的变化。
遇到问题时,请先整理好四项信息:你想实现什么、实际发生了什么、已经尝试过什么,以及完整命令和关键日志。排查问题时一次只改一个变量,并记录结果。能够稳定复现的问题,通常更容易解决。
判断一个功能是否真正"能用",至少要看四点:数据是否稳定、指令是否合法、延迟是否可以接受,以及发生异常后能否安全停止或恢复。
算法学习并不要求你从一开始就掌握复杂理论。先把一个小功能做出来,再把它做稳定、讲清楚、复现出来,就是很好的开始。
欢迎加入醒狮战队算法组
期待与你一起,让机器人真正看得见、走得稳、会判断。