第 3.2 节

软件算法组路线

作者
董佳辉的头像董佳辉
协作者
张长飞的头像张长飞刘业晗的头像刘业晗
发布于 2023/09/29更新于 2026/08/20

路线定位

软件算法组不是原“视觉算法组”的简单改名,而是完整的机器人上位机软件组。主要负责Linux平台和ROS2系统、运动学、里程计、状态估计、导航、环境感知、机械臂规划、比赛任务决策、多机器人通信和整机软件集成。

开始本路线前,应先完成嵌入式组与软件算法组公共路线。软件算法组不要求学习完整的MCU开发路线,但需要理解上下位机接口、数据帧、通信超时和底层反馈的基本概念。

第一阶段:C++、Python与Linux工程基础

学习目标:

  • 熟练使用现代C++编写模块化程序,掌握STL、RAII、智能指针、错误处理和并发基础。

  • 能使用Python完成脚本、数据处理、测试和算法验证。

  • 熟练使用Linux终端、权限、进程、网络、日志、SSH和设备文件。

  • 能使用Git协作,使用CMake组织多模块工程并管理第三方依赖。

推荐教程:

第二阶段:ROS2软件开发

必须掌握工作空间、功能包、Topic、Service、Action、Parameter、Launch、TF、URDF、rosbag2和RViz2,能够独立编写、调试和组合ROS2节点。

推荐教程:

阶段实践:创建一个包含传感器输入、状态处理、控制指令和Launch启动文件的ROS2工作空间,并使用rosbag2记录和回放数据。

第三阶段:上下位机通信

软件算法组负责Linux串口、Boost.Asio、ROS2 Serial Driver、SocketCAN、ROS2 SocketCAN、消息转换、重连和主机端诊断;嵌入式组负责UART HAL、DMA、MCU协议解析、CRC、CAN收发和底层失联保护。

推荐教程:

阶段实践:在Linux端接收底层里程计、IMU和故障反馈,发送带序号和超时机制的速度或位置指令,并验证断线重连与失联保护。

第四阶段:底盘运动学与机器人运动控制

学习目标:

  • 掌握差速、麦轮和全向轮底盘的正逆运动学。

  • 理解机器人坐标系、速度指令、约束和轨迹的关系。

  • 能将规划或遥控结果转换为底盘期望速度,并处理限速和坐标变换。

  • 理解ROS2 Control硬件接口与控制器的职责。

教程状态:

  • ROS2 Control(基础可用)

  • 底盘运动学系统教程(待建设,不创建空文件)

第五阶段:里程计与状态估计

学习目标:

  • 理解轮式里程计、IMU、坐标系和时间同步。

  • 能标定轮式里程计并分析系统误差。

  • 能使用EKF等方法融合轮速、IMU和其他定位信息。

  • 为导航系统提供连续、可信、坐标关系正确的状态估计。

推荐教程:

第六阶段:SLAM、定位与Nav2

学习目标:

  • 理解建图、定位、全局规划、局部规划、代价地图和恢复行为。

  • 能完成传感器、TF、里程计、地图和导航参数的整机配置。

  • 能分析定位跳变、路径振荡、避障失败和运动约束问题。

推荐教程:

第七阶段:OpenCV、YOLO、雷达与点云

学习目标:

  • 能完成相机标定、图像处理、目标检测、跟踪和目标位姿估计。

  • 能部署和评估YOLO模型,理解训练、推理和工程性能指标。

  • 能处理激光雷达和点云数据,完成滤波、分割、聚类和坐标变换。

  • 输出可供运动规划和任务决策使用的目标位置、姿态和置信度,而不是只返回没有坐标定义的像素偏差。

推荐教程:

第八阶段:MoveIt2与机械臂

学习目标:

  • 理解机械臂正逆运动学、关节空间和笛卡尔空间。

  • 能建立URDF/SRDF模型并配置MoveIt2。

  • 能完成运动规划、轨迹执行、抓取和基本碰撞检查。

  • 能设计底盘与机械臂协同流程。

队内教程:

当前路线保留完整能力目标,但不假定教程已经完成。抓取、实机控制和底盘机械臂协同仍需继续建设,不创建额外空教程。

第九阶段:状态机、任务决策与多机器人通信

学习目标:

  • 将比赛任务拆分为状态、事件、条件和动作。

  • 处理超时、失败、重试、降级和人工接管。

  • 组合导航、感知、机械臂和底层执行动作。

  • 设计多机器人之间的状态同步、任务分配和异常处理。

教程状态:状态机、行为决策和多机器人通信均为待建设,仅在本路线记录,不创建空Markdown文件。学习以当年项目实践和负责人带领为主。

第十阶段:整机软件系统集成

学习目标:

  • 设计清晰的软件模块、接口、配置和启动顺序。

  • 管理日志、诊断、自动启动、部署、版本和回滚。

  • 建立仿真、录包回放、单模块测试和整机测试流程。

  • 与嵌入式组共同验证单位、坐标系、频率、超时、安全状态和故障恢复。

整机软件架构与系统化测试教程目前待建设,不创建空文件。

路线分级与考核

  • 必修基础:C++、Python基础、Linux、Git、CMake、ROS2基础、上下位机通信、底盘运动学、里程计和基础状态估计。

  • 核心专项:SLAM/Nav2、OpenCV/YOLO、激光雷达与点云、ROS2 Control。

  • 项目进阶:MoveIt2、机械臂抓取、状态机、多机器人通信和整机软件架构。

软件算法组专项考核应覆盖C++工程、Linux、ROS2、运动学、基础状态估计和基础机器人软件。高级项目内容根据当年赛题单独考核。

软件算法能力检查表

以下检查表由原控制路线、原视觉路线和原综合路线迁移:

ROS2与机器人基础

  • 节点、Topic、Service、Action、Parameter和QoS。

  • Python/XML/YAML Launch、命名空间、重映射和参数配置。

  • rosbag2录制、回放、筛选和问题复现。

  • TF静态与动态广播、监听、时间和坐标变换。

  • RViz2、URDF、机器人模型和仿真环境。

  • 工控机远程开发、USB设备权限、分布式通信和日志优化。

  • 串口、SocketCAN、TCP/UDP及其ROS2节点封装。

  • 轮式里程计、IMU、激光雷达、相机、GNSS、手柄和键盘节点。

  • ROS2 Control、Nav2、MoveIt2和仿真平台按项目阶段学习。

感知与算法

  • 图像载入、显示、保存、颜色空间和像素操作。

  • 几何变换、ROI、图像金字塔、直方图和模板匹配。

  • 滤波、边缘、形态学、连通域、轮廓、直线和角点检测。

  • 特征点检测与匹配、相机标定、PNP、单目和双目视觉。

  • 目标检测、单目标与多目标跟踪、数据关联和位姿估计。

  • OpenCV部署、YOLO训练与推理、模型性能和工程加速。

  • 点云读取、滤波、分割、聚类、坐标变换和目标提取。

  • 运动学、轨迹、里程计、状态估计、导航和任务决策的接口协同。