ROS2与机器人开发学习路线(12个月计划)
阶段一(第1~3个月):基础环境与语言入门
1. 安装Ubuntu与ROS2 Foxy
- 安装Ubuntu LTS系统
- 配置ROS2 Foxy开发环境
- 学习Linux常用命令(
ls
,grep
,chmod
等)
2. Git与Bash脚本
- 配置Git账户(SSH Key绑定)
- 编写自动化Bash脚本(如日志清理、编译触发)
3. Makefile与调试工具
- 编写多文件编译的
Makefile
- 使用
g++
编译C++程序 - 掌握
gdb
基础调试命令(断点、堆栈追踪)
- 编写多文件编译的
4. C++基础语法
- 实现“Hello, Robot”控制台程序
- 学习引用、指针、STL容器(
vector
,map
)
5. C++面向对象
- 类与对象设计(封装)
- 继承与多态(虚函数表)
- 模板编程(泛型容器)
6. Python快速入门
- 基础语法(列表推导、装饰器)
- 用Python脚本处理日志文件(正则匹配)
7. Python + Shell联动
- 开发一键编译与发布脚本(跨语言调用)
8. ROS2工作区配置
- 创建Colcon工作区
- 配置
~/.bashrc
环境变量
9. ROS2话题通信
- 编写Publisher/Subscriber节点
- 控制TurtleSim画图(
/turtle1/cmd_vel
)
10. ROS2服务通信
- 实现“计算器”Service/Client(加减乘除)
11. 构建系统深入
- 掌握
colcon build
参数(--packages-select
) - 自定义ROS2消息包(
.msg
文件)
- 掌握
12. 综合项目:TurtleSim遥控
- 通过键盘控制乌龟运动
- 记录轨迹并生成SVG图像
阶段二(第4~6个月):嵌入式与ROS2通信
13. FreeRTOS基础
- 任务(Task)、队列(Queue)、信号量(Semaphore)
14. STM32双任务开发
- 实现任务互斥(Mutex)与数据交换
15. STM32串口驱动
- 开发UART通信驱动
- 对接
ros2_serial
框架
16. 跨平台通信
- Python +
pyserial
实现PC↔STM32双向通信
- Python +
17. ROS2节点生命周期
- 管理节点状态(激活/销毁)
- 使用参数服务器(
rclcpp::Parameter
)
18. 传感器数据上传
- STM32通过串口发送IMU数据至ROS2
19. 底盘控制集成
- ROS2发布
/cmd_vel
控制指令 - 订阅
/odom
里程计反馈
- ROS2发布
20. TurtleBot3仿真
- 话题控制Gazebo仿真机器人运动
21. 联合调试
- 分析STM32与ROS2通信延迟(
Wireshark
抓包)
- 分析STM32与ROS2通信延迟(
22. 一键构建脚本
- 开发交叉编译脚本(ARM GCC + ROS2)
23. 项目文档与开源
- 撰写技术文档(Markdown格式)
- 发布GitHub示例工程
24. 阶段复盘
- 整理代码库与演示PPT
阶段三(第7~9个月):导航与多传感器融合
25. TF2静态坐标
- 广播与监听静态坐标系(
base_link
→laser
)
- 广播与监听静态坐标系(
26. TF2动态坐标
- 实现多坐标系实时变换(
odom
→base_link
)
- 实现多坐标系实时变换(
27. 激光雷达接入
- 发布
/scan
话题 - 融合里程计数据(
/odom
+/scan
)
- 发布
28. IMU数据处理
- 卡尔曼滤波去噪
- 验证TF坐标关系一致性
29. 在线建图
- 使用
SLAM Toolbox
或Cartographer
- 使用
30. 建图与定位测试
- 实车/Gazebo环境建图(
.pgm
导出)
- 实车/Gazebo环境建图(
31. Navigation2集成
- 配置
nav2_bringup
启动文件 - 调用
MoveBase
接口
- 配置
32. 导航调优
- 路径平滑(
TEB
算法) - 动态避障参数调整
- 路径平滑(
33. 动态重规划
- 配置成本地图(
layer
分层策略)
- 配置成本地图(
34. 多传感器整合
- 激光+IMU+里程计融合导航
35. 实地/Gazebo测试
- 调试TF时间同步问题
36. 阶段复盘
- 撰写技术博客
- 录制RViz导航日志视频
阶段四(第10~12个月):项目集成与成果输出
37. 项目规划
- 设计URDF机器人模型(底盘+传感器)
38. Xacro优化
- 使用Xacro语法简化URDF
- 添加关节与传动描述
39. Launch文件开发
- 编写多节点启动文件(
ros2 launch
) - 集成日志管理(
ros2 bag
)
- 编写多节点启动文件(
40. 核心功能开发
- 底盘驱动、SLAM、导航模块联调
41. 可视化监控
- 集成RViz2实时显示(传感器数据+路径)
42. 稳定性验证
- 压力测试(72小时连续运行)
43. 技术文档撰写
- 输出API参考手册(Doxygen生成)
44. 演示视频制作
- 录制3–5分钟功能演示(OBS录屏)
45. GitHub与简历更新
- 完善代码仓库(README+Wiki)
- 更新简历中的项目经验
46. 作品集整理
- 制作PDF作品集(技术栈+成果截图)
47. 最终审核
- 定稿文档、视频、简历
48. 申请与面试
- 提交职位申请
- 模拟技术面试(ROS2相关问题)