项目全景与需求分析
理解ROS2项目生命周期,从用户故事到技术需求文档的转化。
系统架构设计
基于ROS2的节点图设计,定义Topic、Service、Action的通信矩阵。
开发环境搭建
使用Docker和DevContainer搭建可复现的ROS2 Humble开发环境。
工作空间与包管理
创建colcon工作空间,使用ros2 pkg create管理多语言包。
自定义消息与服务
定义.msg和.srv文件,实现复杂数据结构的跨语言通信。
基础节点编程
用Python编写第一个发布-订阅节点,理解rclpy生命周期。
高级节点编程
用C++编写节点,使用rclcpp::Node和回调组实现并发。
参数服务器实战
动态配置节点参数,实现运行时行为调整。
Launch文件系统
使用Python Launch文件启动多节点系统,支持条件化启动。
日志与调试
使用RQt工具链和ros2cli进行实时监控与调试。
TF2坐标变换
实现多传感器融合中的坐标树管理,使用tf2_ros进行广播与监听。
URDF与机器人建模
编写URDF文件,使用robot_state_publisher发布模型状态。
仿真环境集成
将机器人模型导入Gazebo Ignition,实现传感器仿真。
导航堆栈(Nav2)入门
配置Nav2的全局与局部规划器,实现自主导航。
SLAM建图实战
使用Cartographer或SLAM Toolbox构建环境地图。
行为树(BT)编程
使用BehaviorTree.CPP编写机器人决策逻辑。
动作服务器(Action)实战
实现长时间运行的任务,如机械臂抓取。
生命周期节点
管理复杂系统的启动与关闭状态,实现优雅降级。
组件与进程内通信
使用rclcpp_components优化实时性能。
安全通信
配置DDS安全插件,实现加密与认证的ROS2通信。
多机通信
配置ROS2_DOMAIN_ID和发现机制,实现分布式机器人系统。
测试驱动开发
使用pytest和ament_cmake编写单元测试与集成测试。
持续集成(CI)
配置GitHub Actions自动构建、测试与静态分析。
代码质量与规范
使用ament_lint和clang-tidy保证代码一致性。
文档生成
使用rosdoc2自动生成API文档,编写Sphinx教程。
性能优化
使用ros2 topic delay和ros2 bag分析系统瓶颈。
部署与发布
使用Docker多阶段构建生成轻量级部署镜像。
现场调试与运维
使用ros2 doctor和日志分析解决现场问题。
项目复盘与交付
编写技术总结报告,进行代码审查与交付演示。