Robot Operating System 2 第二代机器人操作系统1

并不是一个传统意义上的操作系统(如 Windows 或 Linux),而是一个用于构建机器人应用的开源软件框架和中间件。 它提供了一系列库、工具和约定,核心目标是实现代码的复用、模块化以及跨平台的机器人软件开发,使得软件的复用性更高,简化机器人开发任务,是加速机器人落地的软件库和工具集。

设计目标:面向真实世界应用

ROS 2 是对其前身 ROS 1 的彻底重新设计,旨在解决 ROS 1 在真实世界商业和研究应用中遇到的局限。其核心设计目标包括:

  • 支持多机器人系统: 提供开箱即用的、可靠的多机器人通信能力。
  • 支持实时控制: 改善对实时系统(Real-time Systems)的支持,满足高性能机器人(如机械臂)的控制需求。
  • 支持嵌入式平台: 能够轻松部署到资源受限的微控制器上。
  • 支持生产环境: 提升稳定性和安全性,使其适用于商业产品而非仅仅是学术研究。

相关章节

ROS2 相关基础 ROS2 的安装 ROS2 Architecture Ros2 bag

概念 Concepts

Basic Concepts ROS2 Nodes ROS2 Topics ROS2 Services RCL ROS2 Package1 ROS2 Message ROS2 Communication

实际实践

创建工作区 编写节点 rclcpp 或 rclpy 编译构建 colcon build 运行节点 ros2 run 测试通信 ros2 topic echo / ros2 topic pub ROS and mqtt 代码使用

核心概念:计算图模型 (Computation Graph)

一个 ROS 2 系统由一系列松散耦合的、可独立运行的节点 (Nodes) 组成,这些节点通过一个通用的通信层进行交互,形成一个“计算图”。 Pasted image 20260101204203.png

1. 节点 (Nodes)

节点是 ROS 2 中的基本可执行单元。一个机器人系统通常由许多各司其职的节点组成。例如,一个节点负责从摄像头读取图像,另一个节点负责处理图像以检测障碍物,还有一个节点负责根据障碍物信息控制电机。

2. 通信机制

节点之间通过三种核心机制进行通信:

  • 话题 (Topics)
    • 模式: 发布/订阅 (Publish/Subscribe) 模式,是多对多的异步通信。
    • 工作方式: 一个节点(发布者)将消息发布到一个特定的话题上(如 /camera/image),其他任意数量的节点(订阅者)都可以订阅该话题以接收这些消息。
    • 适用场景: 持续的数据流传输,如传感器数据、机器人状态等。这是最常用的通信方式。
  • 服务 (Services)
    • 模式: 请求/响应 (Request/Response) 模式,是一对一的同步通信。
    • 工作方式: 一个节点(客户端)向另一个节点(服务器)发送一个请求,并等待服务器处理并返回一个响应。
    • 适用场景: 需要远程过程调用(RPC)的场景,例如请求机器人执行一个特定的、耗时较短的计算或动作。
  • 动作 (Actions)
    • 模式: 带反馈的请求/响应模式,是一对一的异步通信。
    • 工作方式: 客户端向服务器发送一个目标 (Goal),服务器在执行任务的过程中会周期性地发布反馈 (Feedback),并在任务完成后返回一个最终结果 (Result)。客户端可以随时取消任务。
    • 适用场景: 需要执行耗时较长、且需要过程监控的任务,如“导航到某个位置”、“旋转机械臂 30 度”等。

3. 其他概念

  • 参数 (Parameters): 每个节点都可以拥有可动态配置的参数,方便在不重新编译代码的情况下调整节点行为。
  • 启动文件 (Launch Files): 使用 Python 编写的脚本,用于一次性地启动和配置一个包含多个节点的复杂系统。

与 ROS 1 的主要区别

类别ROS 1ROS 2
网络传输基于TCP/UDP的自定义协议现有标准(DDS),抽象层支持添加其他协议
网络架构中央名称服务器(roscore)对等节点发现
平台支持LinuxLinux、Windows 和 macOS
客户端库各种语言独立编写共享一个共同的底层C库(rcl)
节点与进程每个进程单节点每个进程多节点
线程模型回调队列和处理程序可交换的执行器
节点状态管理无生命周期节点
嵌入式系统最小实验性支持(rosserial)商业支持的实现(micro-ROS)
参数访问基于XMLRPC的辅助协议使用服务调用实现
参数类型赋值时推断类型类型声明并强制执行

核心生态系统

  • Rviz2: 强大的 3D 可视化工具,用于显示传感器数据、机器人模型和各种调试信息。
  • Gazebo: 功能齐全的 3D 物理仿真环境,用于在部署到真实机器人之前进行算法测试。
  • MoveIt2: 应用最广泛的开源运动规划框架,用于机械臂的路径规划、运动学求解和碰撞检测。
  • Nav2: 完整的机器人自主导航框架。
相关工具简要介绍
Rviz2Data
RQTGUI Framwork
Gazebo
Colcon

Footnotes

  1. https://docs.ros.org/ https://ros.ncnynl.com/ ↩