ROS (Robot Operating System) 并不是一个传统意义上的“操作系统”,Windows 或 Linux,它更像是一个用于编写机器人软件的灵活框架,你可以把它想象成机器人的“神经系统”,它负责连接机器人的各种“感官”(传感器)、“肢体”(执行器)和“大脑”(计算单元),让它们能够协同工作。

核心概念:ROS 是什么?
ROS 是一套软件库和工具集,旨在简化复杂机器人软件的创建、管理和协作,它提供了操作系统级别的服务,如硬件抽象、设备驱动、库函数、可视化工具和消息传递等,让开发者可以专注于机器人算法和应用逻辑的实现。
关键特点:
- 开源: ROS 是完全开源的,由开源机器人基金会管理,拥有庞大的全球社区支持,任何人都可以免费使用、修改和贡献代码。
- 模块化: ROS 的核心思想是“节点”(Node),一个复杂的机器人功能被拆分成许多独立的小程序(节点),每个节点负责一个特定的任务(读取摄像头数据、处理激光雷达信息、控制车轮转动)。
- 分布式通信: 这些节点之间通过一个名为“话题”(Topic)的发布/订阅机制进行通信,节点 A 发布消息到话题“/camera/image”,任何订阅了该话题的节点 B、C 都能接收到这个消息,这种解耦的设计非常灵活,易于扩展和维护。
- 语言中立: 主要支持 C++ 和 Python,但也提供了其他语言的接口,方便不同背景的开发者使用。
- 丰富的工具集: ROS 提供了大量强大的工具,用于调试、可视化、仿真、数据分析等,极大地提高了开发效率。
核心组件:ROS 的“五脏六腑”
要理解 ROS,必须了解以下几个核心概念:
| 组件 | 中文名 | 描述 | 例子 |
|---|---|---|---|
| Node | 节点 | 一个独立的、可执行的处理单元,是 ROS 程序的基本单元。 | 一个读取激光雷达数据的节点,一个规划路径的节点。 |
| Topic | 话题 | 节点之间进行异步通信的通道,一个节点向话题发布消息,多个节点可以订阅该话题。 | /cmd_vel(发布速度命令)、/chatter(发布聊天文本)。 |
| Message | 消息 | 通过话题传递的数据结构,是节点间通信的载体。 | sensor_msgs/LaserScan(激光雷达数据)、geometry_msgs/Twist(速度命令)。 |
| Service | 服务 | 节点之间进行同步通信的方式,一个节点提供服务,另一个节点发送请求并等待响应。 | /spawn(在仿真环境中生成一个新模型)。 |
| Package | 功能包 | ROS 软件的基本组织单元,包含节点、库、配置文件、数据等。 | turtlebot3、navigation。 |
| Launch File | 启动文件 | 一个 XML 或 Python 文件,用于一键启动多个节点、设置参数、加载配置等。 | roslaunch my_robot bringup.launch |
| Master | 主节点 | ROS 网络的中心,负责管理节点的注册和话题的映射,让发布者和订阅者能够找到彼此。 | roscore 命令启动的就是主节点。 |
ROS 的版本与生态
ROS 的发展有几个重要的版本,了解它们对选择和学习至关重要。

ROS 1 (经典版)
这是最广泛使用的版本,拥有最庞大的生态系统和社区支持,它分为两个主要的发布系列:
- ROS Noetic (N): 基于 Ubuntu 20.04 LTS,是 ROS 1 的最后一个长期支持版本,截至 2025年底,ROS 1 已停止官方维护,所有新项目强烈建议使用 ROS 2。
- ROS Melodic (M): 基于 Ubuntu 18.04 LTS,曾是 ROS 1 的主流 LTS 版本。
ROS 1 的主要挑战:
- 单线程架构: 默认情况下,所有节点运行在同一个进程中,一个节点的崩溃可能导致整个系统瘫痪。
- 命名空间冲突: 在大型项目中,节点和话题的命名容易冲突,管理困难。
- 缺乏实时性和安全性: 不适合对实时性和安全性要求高的工业应用。
ROS 2 (未来版)
为了解决 ROS 1 的痛点,ROS 2 应运而生,它在架构上进行了革命性的升级。
- 基于 DDS (Data Distribution Service): ROS 2 使用 DDS 作为中间件,提供了更强大的发现机制、服务质量、实时性和安全性。
- 多进程架构: 每个节点都是一个独立的进程,一个节点的崩溃不会影响其他节点,系统更加健壮。
- 统一的命名空间: 引入了“命名空间”和“域”的概念,极大地解决了命名冲突问题。
- 跨平台支持: 除了 Linux,ROS 2 还原生支持 Windows 和 macOS。
ROS 2 的主要版本:

- ROS 2 Humble Hawksbill (H): 基于 Ubuntu 22.04 LTS,是当前的长期支持版本,推荐用于新项目。
- ROS 2 Iron Irwini (I): 基于 Ubuntu 20.04 LTS,是上一个 LTS 版本。
- ROS 2 Jazzy Jalisco (J): 基于 Ubuntu 24.04 LTS,是即将发布的下一个 LTS 版本。
ROS 的主要应用领域
ROS 已经成为机器人研究和开发的行业标准,广泛应用于:
- 学术研究: 全球绝大多数大学的机器人实验室都在使用 ROS 进行算法研究和原型验证。
- 服务机器人: 如扫地机器人、送餐机器人、导览机器人等。
- 自主移动机器人: 如 AGV(自动导引车)、自动驾驶汽车、无人机等。
- 工业自动化: 如机械臂控制、自动化产线等。
- 仿真: ROS 提供了强大的仿真环境(如 Gazebo、RViz),可以在虚拟世界中测试算法,无需昂贵的硬件。
如何开始学习 ROS?
对于初学者,学习路径至关重要。
新项目,请直接从 ROS 2 开始!
- 选择 ROS 2 发行版: 推荐从 ROS 2 Humble 开始,因为它有最长的支持期和最丰富的文档。
- 安装环境: 根据你的操作系统(推荐 Ubuntu 22.04),按照官方文档进行安装。
- 掌握基础命令:
ros2: ROS 2 的核心命令,替代了 ROS 1 的ros。ros2 run: 运行一个节点。ros2 topic list: 查看所有活动的话题。ros2 topic echo: 打印话题的消息内容。ros2 node list: 查看所有运行的节点。ros2 service list: 查看所有可用的服务。
- 学习官方教程: ROS 2 官方提供了非常棒的 "Beginner Tutorials",跟着一步步做是最好入门方式。
- 学习通信机制: 深入理解话题、服务、动作和参数。
- 学习常用工具:
rviz2: 3D 可视化工具,用于显示传感器数据、机器人模型、路径等。Gazebo: 3D 物理仿真器,用于在虚拟环境中测试机器人。rqt: 一套可插拔的 GUI 工具集,用于调试、可视化、日志分析等。
- 实践项目: 找一个简单的机器人项目(比如控制一个虚拟的差速小车)开始实践,将所学知识串联起来。
| 特性 | ROS 1 | ROS 2 |
|---|---|---|
| 架构 | 单进程 | 多进程 |
| 中间件 | ROS原生 | DDS (Data Distribution Service) |
| 通信 | 话题、服务 | 话题、服务、动作、参数 |
| 实时性 | 无内置支持 | 内置QoS策略,支持实时 |
| 安全性 | 较弱 | 内置安全机制 |
| 社区 | 成熟,但已停止LTS更新 | 活跃,是未来的发展方向 |
ROS 是一个强大而灵活的机器人开发框架,如果你是初学者,请毫不犹豫地选择 ROS 2,特别是其 LTS 版本(如 Humble),它解决了 ROS 1 的许多固有缺陷,是构建现代、健壮、可扩展机器人系统的基石。
标签: ros机器人开发教程 ros新手入门指南 ros2 vs ros1区别