news 2026/8/10 2:47:53

ROS 2 概念

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
ROS 2 概念

目录

1. ROS 2 核心概念

2. ROS 2 架构

3. ROS 2 的关键特性

3.1 实时性与性能

3.2 安全性

3.3 跨平台

3.4 多机器人系统

3.5 生命周期管理

3.6 工具链现代化

4. ROS 2 与 ROS 1 的主要区别

5. ROS 2 生态系统

6. 应用场景

7. 总结


1. ROS 2 核心概念

ROS 2 的核心思想是提供一套通信机制开发工具,让机器人软件可以像拼图一样由多个独立模块(节点)组合而成。主要概念包括:

  • 节点(Node):可执行程序的最小单元,负责完成特定的任务(如控制电机、处理激光数据)。多个节点通过ROS 2图(Graph)连接。

  • 主题(Topic):基于发布-订阅模式的单向数据流。节点可以将消息发布到主题,其他节点订阅该主题以接收消息。

  • 服务(Service):基于请求-响应模式的同步通信。客户端发送请求,服务端处理后返回响应。

  • 动作(Action):用于长时间运行的任务,支持进度反馈和可取消操作,基于服务和主题构建。

  • 参数(Parameter):节点的可配置变量,可以在运行时动态修改。

  • 消息(Message):节点之间交换的数据结构,由字段类型组成(如整数、浮点数、数组等)。

  • 发现机制(Discovery):节点自动发现其他节点及其提供的话题/服务,无需中心服务器。

2. ROS 2 架构

ROS 2 采用分层架构,从底层到上层包括:

  • 操作系统层:支持Linux、Windows、macOS及RTOS(实时操作系统)。

  • 中间件层(Middleware):核心是DDS(Data Distribution Service)协议。DDS是一种面向实时系统的数据分发标准,提供发布-订阅、服务质量(QoS)配置、安全性等。ROS 2将DDS作为默认通信中间件,并通过rmw(ROS Middleware Interface)抽象层支持多种DDS实现(如Fast DDS、Cyclone DDS、Connext DDS等)。

  • ROS 2客户端库(RCL):提供语言特定的API(如rclcpp for C++,rclpy for Python),封装了与DDS交互的复杂性。

  • 应用层:由用户编写的节点组成,通过客户端库调用ROS 2功能。

3. ROS 2 的关键特性

3.1 实时性与性能

  • 支持实时操作系统(如FreeRTOS、RT-Linux),可通过配置QoS(如可靠性、持久性)来满足实时需求。

  • 多线程执行器(Executor)设计,允许节点并发处理回调,提高吞吐量。

3.2 安全性

  • 集成了DDS安全规范,提供身份验证、访问控制、加密通信等特性,适用于安全关键应用。

3.3 跨平台

  • 原生支持Windows、macOS、Linux以及嵌入式平台(如ARM架构)。

  • 通过DDS的灵活传输机制,支持多种物理链路(如UDP、TCP、共享内存)。

3.4 多机器人系统

  • 使用DDS的分区(Partition)和域(Domain)概念,轻松支持多机器人协同,隔离不同机器人间的通信。

3.5 生命周期管理

  • 节点具有可管理的生命周期(未配置、未激活、激活、关闭等),便于系统状态监控和控制。

3.6 工具链现代化

  • 命令行工具(CLI)ros2命令提供节点、话题、服务、参数等管理功能。

  • 启动文件:使用Python编写,支持条件执行、嵌套启动等复杂场景。

  • 可视化工具:Rviz2(3D可视化)、rqt(GUI插件框架)、PlotJuggler(数据绘图)等。

  • 调试与性能分析:支持ros2 bag(录制/回放数据)、ros2 trace(基于LTTng的跟踪)等。

4. ROS 2 与 ROS 1 的主要区别

方面ROS 1ROS 2
通信中间件自定义的TCPROS/UDPROS(基于TCP/UDP)DDS(数据分发服务),支持QoS
实时性支持有限(需绕过ROS核心)原生支持实时内核和QoS配置
多机器人支持需手动设置环境变量或命名空间通过域ID和DDS分区内置支持
安全性无原生加密DDS安全插件实现加密、认证
跨平台主要支持Linux支持Windows、macOS、Linux、RTOS
构建系统catkin(基于CMake)ament(基于CMake或Python setuptools)
语言支持C++03(roscpp)、Python(rospy)C++14/17(rclcpp)、Python3(rclpy),未来更多语言
启动文件XML格式Python脚本(支持逻辑控制)
参数服务器全局中心化的参数服务器节点本地参数,可动态配置

5. ROS 2 生态系统

  • 核心包rclcpprclpycommon_interfaces(标准消息)、ros2cli等。

  • 客户端库:除了C++和Python,社区还提供了Rust、Java、C#等语言的客户端。

  • 工具包navigation2(导航堆栈)、MoveIt 2(运动规划)、ros2_control(机器人控制框架)、turtlebot3(演示平台)等。

  • 社区与支持:Open Robotics主导,各大机器人公司(如Intel、Bosch、Amazon)贡献,每年有ROSCon大会。

6. 应用场景

  • 工业机器人:实时控制、安全通信、多机协作。

  • 服务机器人:如清洁机器人、配送机器人,需要跨平台和易于集成感知、导航模块。

  • 自动驾驶:原型开发与模拟(如Autoware.Auto基于ROS 2)。

  • 科研教育:模块化架构便于快速验证算法,丰富的仿真工具(Gazebo、Ignition)。

7. 总结

ROS 2 是现代机器人软件开发的事实标准。它通过采用DDS作为通信基础,大幅提升了系统的实时性、安全性和跨平台能力,同时保留了ROS 1的灵活性和丰富的工具生态。无论是学术研究还是工业应用,ROS 2都提供了强大的基础架构,帮助开发者构建可靠、可扩展的机器人系统。

随着机器人技术的不断演进,ROS 2也在持续迭代,未来的发展方向包括更深入的实时支持、更丰富的硬件抽象以及更紧密的云集成。对于希望进入机器人领域的开发者来说,掌握ROS 2已成为一项必备技能。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/8/10 2:45:40

Keil 生成 bin 文件

打开项目设置,在User, 后处理设置中勾选Run #1,在后面的文本框里输入以下代码, fromelf --bin -o "L.bin" "#L"仅在Keil 5.40 测试通过

作者头像 李华
网站建设 2026/8/10 2:47:28

NIPT检测优化:BMI与孕周对胎儿染色体浓度的影响

一、问题重述 1.1问题背景 1997年,卢煜明教授首次发现孕妇外周血中存在胎儿游离DNA,为无创产前检测奠定了基础。NIPT是一种通过分析孕妇外周血中的胎儿游离DNA片段,利用二代高通量测序技术与生物信息分析技术,分析胎儿是否发生染色体非整倍体变异的一项产前筛查技术。[1]…

作者头像 李华
网站建设 2026/8/10 2:44:59

国产USB3.0转千兆网卡单芯片方案——CH398

简介CH398 是一款高集成度的 USB3.0 千兆网卡芯片,全流程国产化,内置 RISC-V 处理器、符合 USB3.2 Gen1 及 USB2.1规范的控制器及收发器、符合 IEEE802.3 协议规范、支持 10M/100M/1000M 网络的以太网 MACPHY,单芯片即可实现 USB 到以太网的桥…

作者头像 李华
网站建设 2026/8/10 2:45:55

JunZi Music 2.0.5 | 聚合网易云和酷狗双音源,支持超清母带下载

JunZi Music是一款特色鲜明的听歌软件,整合了网易云音乐和酷狗音乐双音源。它允许用户导入网易云和酷狗的歌单,不过歌单属于本地存储,卸载软件后会消失;同时具备收藏歌曲功能,该功能通过服务器保存,可跟随账…

作者头像 李华
网站建设 2026/7/14 15:32:57

手把手教你用coze搭建AI Agent(智能体)

一、注册账号 打开coze官网并登录,进入扣子编程页面,选择智能体开发 二、搭建AI Agent 在输入框内输入你想要实现的功能,举例: 帮我创建一个名叫“新闻早知道”的智能体,帮我搜集最近24小时内的新闻,主要…

作者头像 李华