名字叫 Robot Operating System,但 ROS 2 不是替代 Ubuntu 的 OS,也不是烧进 51 单片机里的系统。本文面向第一次接触 ROS 2 的读者;若你已熟悉 ROS 1、要迁 DDS/QoS,请直接看 ROS 2 要点。
系列入口:机器人栈分层。
ROS 2 是什么 / 不是什么
ROS 2 是一套机器人中间件 + 工具 + 生态约定:
- 把软件拆成多个节点(Node)
- 用标准方式做通信、参数、启动、可视化、录包
- 社区有大量驱动、导航、感知相关包
| ROS 2 是 | ROS 2 不是 |
|---|---|
| 跑在 Linux(等)之上的中间件生态 | 替代 Ubuntu 的操作系统 |
| 进程间通信与工具链 | 单片机上的裸机 OS |
| 包结构、接口、QoS 等约定 | 某一个品牌的控制器固件 |
| 便于组队与复用的软件平台 | 「装上就会自己导航」的成品大脑 |
底层传输常见基于 DDS;入门阶段先抓住 话题 / 服务 / Action / 参数 即可。
ROS 1 和 ROS 2(只需知道这些)
- 新项目默认学 ROS 2。
- ROS 1 资料多,但别当新栈起点。
- 概念可迁移:Node、Topic、Service;ROS 2 强化了 DDS、QoS、生命周期等。
发行版示例(以官方支持矩阵为准):
| 发行版 | 常见搭配 Ubuntu | 备注 |
|---|---|---|
| Humble | 22.04 | 教程里长期出现 |
| Jazzy | 24.04 | 较新 LTS 向选择 |
选定一个发行版 + 对应 Ubuntu,锁住别乱跨。
核心对象
节点(Node)
一个节点 ≈ 一个职责清晰的进程级组件,例如 camera_driver、lidar_driver、planner。
话题(Topic)——异步数据流
发布者往话题丢消息,订阅者收。适合传感器流、/cmd_vel、日志。一对多、持续更新。
有点像带类型的消息总线,但带 QoS;和 Kafka 不是一回事。
服务(Service)——一问一答
适合开关模式、查一次状态、触发标定。长任务(导航几秒~几分钟)更适合 Action。
Action——带反馈的长任务
Goal → Feedback → Result,可取消。适合导航到点、机械臂轨迹。
参数与 Launch
参数便于启动时注入最大速度等配置。Launch 一次拉起多个节点——真机很少靠人手逐个 ros2 run。
工作空间与包
ros2_ws/
└── src/
├── my_robot_desc/ # URDF 等
├── my_bringup/ # launch、配置
└── my_nodes/ # C++/Python 节点
cd ros2_ws
colcon build
source install/setup.bash
ros2 run <package> <executable>
接口常用 .msg / .srv / .action 描述。
天天会碰到的工具
| 命令/工具 | 用途 |
|---|---|
ros2 topic list / echo |
看话题、打印消息 |
ros2 node list |
看节点 |
ros2 interface show |
看消息定义 |
ros2 bag |
录包 / 回放 |
| RViz 2 | 三维可视化 |
| TF2 | 坐标系变换树 |
TF 很重要:每个传感器坐标系不同,导航与点云融合都依赖 TF 树正确。
和单片机的边界
[ 传感器/电机 ] ←→ [ MCU 固件 ] ←串口/CAN/网→ [ ROS 2 节点 ] ←→ [ 导航/视觉/UI ]
- ROS 2 一般不替代电机电流环。
- MCU 一般不直接跑完整导航栈。
- micro-ROS 等可评估,不是默认必选项。
选型清单见 何时 MCU、何时 ROS 2。
最小心智实验
环境装好后:
ros2 run demo_nodes_cpp talker- 另开终端
ros2 run demo_nodes_cpp listener ros2 topic list/ros2 topic echo /chatter
亲眼看到多进程 + 话题如何工作,再学 turtlesim、再上仿真小车。更多实验见 学习路径。
常见误区
- 「学会 ROS = 学会机器人」——缺控制与标定仍然走不远。
- 「小车不必碰 ROS」——纯 MCU 遥控的确不必;多传感器融合与导航时很划算。
- 「先读完所有包源码」——先跑通 demo,再按需深入。
- 「发行版随便混」——依赖绑在发行版上,混用最痛。
相关阅读
- 进阶:ROS 2 要点:DDS、QoS 与迁移
- 背景:ROS 1 入门 · Physical AI
- 选板:MCU 选板指南
