Tommy

ROS 2 学习整理

ROS 2 Study Notes

budding · 5 min read
···阅读reads

ROS 2 学习整理

整理日期:2026-08-10 面向目标:养老机器人体系(小暖大脑 / 小车移动 / 机械臂操作)的技术底座学习

一、ROS 2 是什么,为什么是它

ROS(Robot Operating System)不是操作系统,而是运行在 Linux 之上的机器人中间件 + 工具链 + 生态:它解决的核心问题是”一台机器人上几十个程序(感知、定位、规划、控制)如何解耦地互相通信、协同工作”。

ROS 2 是对 ROS 1 的彻底重写,关键变化:

二、版本选择(2026 年 8 月现状)

二、版本选择(2026 年 8 月现状)

ROS 2 每年 5 月 23 日发一版;偶数年为 LTS(支持 5 年),奇数年为普通版(支持 1.5 年)。每个版本只对应一个 Ubuntu LTS。

发行版发布支持到Ubuntu定位
Humble Hawksbill2022.052027.0522.04上代 LTS,生态最成熟,大量教程基于它
Jazzy Jalisco2024.052029.0524.04当前 LTS,新项目首选
Kilted Kaiju2025.052026.1124.04普通版,即将 EOL,不建议入
Lyrical Luth2026.052031.0526.04最新 LTS(2026.05.22 发布,LTS-on-LTS 组合)
Rolling持续滚动开发者预览,不用于学习/生产

建议:学习期用 Ubuntu 24.04 + Jazzy。 理由:Jazzy 生态已充分成熟(Nav2、MoveIt 2、micro-ROS、SLAM Toolbox 的二进制包和教程都齐),而 Lyrical Luth 虽是最新 LTS(支持到 2031),但发布仅两个多月,部分上层功能包和第三方教程尚未跟进,开发板对 Ubuntu 26.04 的支持也还在铺开。等项目进入长期开发阶段、且所依赖的包都已发布 Lyrical 版本时,再迁移更稳妥。若开发板/教程只支持 22.04,则用 Humble,概念完全通用。

三、核心概念(必须吃透的一层)

3.1 通信原语

3.2 运行机制

3.3 机器人建模与坐标

四、工具链

四、工具链

五、关键功能栈(与项目直接相关)

5.1 Nav2 —— 移动导航(对应:小车)

ROS 2 官方导航栈:定位(AMCL)+ 建图(配 SLAM Toolbox)+ 全局/局部路径规划 + 恢复行为,通过行为树编排,对外提供 NavigateToPose 等 Action。小车这条线的标准路径:底盘发布里程计 + 激光/深度传感 → SLAM Toolbox 建图 → Nav2 自主导航

5.2 MoveIt 2 —— 机械臂运动规划(对应:SO-101)

运动学求解、碰撞检测、轨迹规划一站式框架。SO-101 社区已有 URDF/MoveIt 配置可参考。注意:LeRobot 的模仿学习流程本身不依赖 ROS 2(它直接读写舵机串口),但当机械臂要与小车、导航、感知组成一个系统时,ROS 2 是把它们接起来的总线。

参见 给机器人找一双手

5.3 ros2_control —— 硬件抽象与控制器

硬件接口(读编码器/写指令)与控制器(位置/速度/力矩、差速底盘 diff_drive)分离的实时控制框架。自制小车底盘接入 ROS 2 生态的标准做法就是写一个 ros2_control 的 hardware_interface。

5.4 micro-ROS —— 嵌入式端(对应:ESP32 小车)

把 ROS 2 节点跑到 MCU 上(官方支持 ESP32),通过串口/WiFi 与主机的 micro-ROS Agent 通信。ESP32-S3 小车可以用它直接以”一等公民”身份出现在 ROS 2 网络里,发布轮速、订阅速度指令。

六、学习路线(按周)

  1. 第 1–2 周,通信基础:装 Ubuntu 24.04 + Jazzy;用 turtlesim 玩熟 CLI;分别用 Python 和 C++ 写发布者/订阅者、服务、动作;理解 QoS 和 launch
  2. 第 3 周,建模与仿真:写一个简单差速小车的 URDF,在 RViz2 里看 tf 树,在 Gazebo 里跑起来
  3. 第 4–5 周,导航线(优先,直接服务小车):SLAM Toolbox 仿真建图 → Nav2 仿真导航 → 理解代价地图与行为树参数
  4. 第 6 周起,分叉
    • 小车实机:ESP32 上 micro-ROS 发里程计/收 cmd_vel → 底盘接入 ros2_control → 实机建图导航
    • 机械臂:SO-101 URDF → MoveIt 2 仿真规划 → 与 LeRobot 流程的边界与集成
  5. 贯穿:每做一步用 rosbag2 录数据、用 rqt/RViz2 复盘,养成”数据驱动调试”的习惯

七、资料清单

八、常用命令速查

# 环境
source /opt/ros/jazzy/setup.bash

# 运行与启动
ros2 run <pkg> <node>
ros2 launch <pkg> <file>.launch.py

# 观察
ros2 node list / ros2 topic list
ros2 topic echo /scan
ros2 topic hz /odom
ros2 interface show geometry_msgs/msg/Twist

# 调试
ros2 param list / get / set
rqt_graph
ros2 bag record -a && ros2 bag play <bag>

# 构建
mkdir -p ~/ros2_ws/src && cd ~/ros2_ws
colcon build --symlink-install
source install/setup.bash

九、常见坑

展开评论Show comments