为什么叫 ROS 2?为什么说它是「机器人的操作系统」?
本文从命名由来和比喻含义两方面说明:ROS 2 里的「2」指什么,以及「Robot Operating System」和常见意义上的操作系统(如 Linux)有何不同。阅读本仓库其它文档时,可把本文当作概念背景。
1. 为什么叫 ROS,又为什么有「ROS 2」
- ROS 最初来自 Willow Garage 等社区项目,全称习惯写作 Robot Operating System(机器人操作系统)。它并不是从零写的一个内核,而是跑在通用操作系统之上的一套中间件、工具链与生态约定。
- ROS 2 是相对 ROS 1 的新一代设计与实现:更换了通信中间件抽象(如 DDS)、改进了实时性与安全、统一了多机器人与生命周期等模型。版本号上的「2」表示大代际升级,与发行版名(如 Humble)是不同维度:前者是产品线/架构代际,后者是长期支持(LTS)发行版代号。
简言之:ROS 2 = 在「机器人软件栈」这一角色上,承接并替代 ROS 1 的那套系统。
2. 「机器人的操作系统」到底指什么
这里的 Operating System 更接近比喻,而不是计算机课本里「直接管理 CPU/内存/设备的内核」。
在机器人工程里,团队往往需要反复解决同类问题:
- 多进程/多机之间的话题、服务、动作、参数如何通信;
- 传感器与控制的**数据类型、时间戳、坐标系(TF)**如何统一;
- 启动、调试、录包、可视化如何标准化;
- 算法、驱动、仿真如何以包的形式复用。
ROS / ROS 2 在这些层面上提供了类似操作系统给应用程序提供 API 那样的一层:约定 + 库 + 工具。所以社区会说它是「面向机器人的操作系统」——指的是机器人应用所依赖的那一层平台,而不是要替代 Linux 或 Windows。
3. 那 Linux、Windows、RTOS 算不算「机器人操作系统」
它们当然可以用来跑机器人,但通常不会用「Robot Operating System」这个专有名词来称呼它们,原因包括:
| 系统类型 | 主要解决的问题 | 与「ROS 式机器人 OS」的差别 |
|---|---|---|
| 通用操作系统(如 Ubuntu、Windows) | 进程、文件、网络、设备驱动、用户界面 | 不提供 ROS 语义下的 Node/Topic/Service、标准消息生态、colcon/ament 工作流等;机器人团队仍要在其上自建或引入一层中间件。 |
| 实时操作系统 / 裸机(如 FreeRTOS、VxWorks、MCU 固件) | 确定性时序、硬实时控制 | 偏底层控制回路;一般不承担整机多模块分布式图、高层导航与工具链的统一抽象。 |
| ROS / ROS 2 | 在通用 OS(或 RTOS 配合)之上,统一机器人软件如何拆分、通信、集成与运维 | 定位是机器人应用的平台层,名称里的「Operating System」强调的是这一层角色,而非内核实现。 |
因此:不是「只有 ROS 才能做机器人」,而是 ROS 2 把自己定义成专门服务机器人软件开发的那类「平台型」系统;其它系统要么是更底层的真·操作系统,要么是不包含 ROS 语义的通用环境,所以不会用同一个专有名词来概括。
4. 小结
- ROS 2 表示相对 ROS 1 的新一代架构与实现;与 Humble 等发行版名称并存,含义不同。
- Robot Operating System 是行业习惯称呼,强调在通用 OS 之上为机器人应用提供的中间件与生态,不是与 Linux 并列的另一种内核。
- Linux/Windows/RTOS 解决的是更底层或更通用的问题;它们可以承载 ROS 2,但不等同于 ROS 2 所特指的那一层「机器人软件操作系统」含义。
若你希望把本文与源码阅读串联,可继续阅读:ros2_humble_代码架构说明.md、ros2_humble_软件模块源码设计解析.md。
正在加载留言…