关于ROS 2的这些,你知道吗?

ROS2(Robot Operating System 2)与树莓派(Raspberry Pi) ROS2是一个为机器人提供硬件抽象、设备驱动、函数库、可视化工具、消息通信以及软件包管理等多种功能的开源操作系统。它支持分布式计算,允许多个节点(即进程)在局域网内自由通信,非常适合用于多机器人协作和复杂机器人系统的开发。树莓派是一款基于ARM架构的微型电脑主板,以SD卡为内存硬盘,卡片主板周围有1/2/4个USB接口和一个10/100以太网接口(A型没有网口),可连接键盘、鼠标和网线,同时拥有HDMI高清视频输出接口和微型USB接口(电源)。 阅读详情

来源 | 古月居

作者 | 古月居

 

ROS已经走过11个年头,伴随机器人技术的大发展,ROS也得到了极大的推广和应用。尽管还存在不少局限性,但依然无法掩盖ROS的锋芒,社区内的功能包还是呈指数级逐年上涨,为机器人开发带来了巨大的便利。

ROS最初设计的目标机器人是PR2,这款机器人搭载了当时最先进的移动计算平台,而且网络性能优异,不需要考虑实时性方面的问题,主要应用于科研领域。

如今ROS应用的机器人领域越来越广:轮式机器人、人形机器人、工业机械手、室外机器人(如无人驾驶汽车)、无人飞行器、救援机器人等等,美国NASA甚至考虑使用ROS开发火星探测器;越来越多的机器人开始从科研领域走向人们的日常生活。

ROS 1虽然仍是机器人领域的开发利器,但介于最初设计时的局限性,也逐渐暴露出不少问题。

目前的ROS 1主要存在以下问题:

 

1. 多机器人系统

多机器人系统是机器人领域研究的一个重点问题,可以解决单机器人性能不足、无法应用等问题,但是ROS 1中并没有构建多机器人系统的标准方法。

2. 跨平台

ROS 1基于Linux系统,在Windows、MacOS、RTOS等系统上无法应用或者功能有限,这对机器人开发者和开发工具提出了较高要求,也有很大的局限性。

3. 实时性

很多应用场景下的机器人对实时性有较高要求,尤其是工业领域,系统需要做到硬实时的性能指标,但是ROS 1缺少实时性方面的设计,所以在很多应用中捉襟见肘。

4. 网络连接

ROS 1的分布式机制需要良好的网络环境保证数据的完整性,而且网络没有数据加密、安全防护等功能,网络中的任意主机都可获得节点发布或接收的消息数据。

5. 产品化

ROS 1的稳定性欠佳,ROS Master、节点等重要环节在很多情况下会莫名宕机,这就导致很多机器人从研究开发到消费产品的过渡非常艰难。

虽然不少开发者和研究机构针对以上部分问题进行了改良,但这些局部功能的改善往往很难带来整体性能的提升,机器人开发者对新一代ROS的呼声越来越大,ROS 2.0的消息也不绝于耳。

终于!

  • ROSCon 2014上,新一代ROS的设计架构(Next-generation ROS: Building on DDS)正式公布。
  • 2015年8月第一个ROS 2.0的alpha版本落地;
  • 2016年12月19日,ROS 2.0的beta版本正式发布;
  • 2017年12月8日,万众瞩目的ROS 2.0终于发布了第一个正式版——Ardent Apalone。
  • 2018年7月2日,第二个正式版——Bouncy Bolson发布,保持半年更新一个版本的节奏。
  • 2018年12月,第三个正式版——Crystal Clemmys也将发布。

众多新技术和新概念应用到了新一代的ROS之中,不仅带来了整体架构的颠覆,更是增强了ROS 2.0的综合性能。

ROS 2诞生的目标并不是取代ROS 1,也不可能立刻取代ROS 1,众多功能包迁移到ROS 2将会是一个漫长的过程,ROS 2自身功能的完善也还需要迭代多个版本,所以在很长一段时间内,ROS 2和ROS 1将会并存。

用一张图来总结ROS 2和ROS 1的主要特性:

 

ROS 2的设计目标

相比ROS 1,ROS 2的设计目标更加丰富:

  • 支持多机器人系统

ROS 2增加了对多机器人系统的支持,提高了多机器人之间通信的网络性能,更多多机器人系统及应用将出现在ROS社区中。

  • 铲除原型与产品之间的鸿沟

ROS 2不仅针对科研领域,还关注机器人从研究到应用之间的过渡,可以让更多机器人直接搭载ROS 2系统走向市场。

  • 支持微控制器

ROS 2不仅可以运行在现有的X86和ARM系统上,还将支持MCU等嵌入式微控制器,比如常用的ARM-M4、M7内核。

  • 支持实时控制

ROS 2还加入了实时控制的支持,可以提高控制的时效性和整体机器人的性能。

  • 跨系统平台支持

ROS 2不止能运行在Linux系统之上,还增加了对Windows、MacOS、RTOS等系统的支持,让开发者的选择更加自由。

 

ROS 2 的系统架构

ROS 2重新设计了系统架构,可以从下图中看到两代ROS之间架构的变化:

  • OS层

ROS 1主要构建于Linux系统之上;ROS 2带来了改变,支持构建的系统包括Linux、Windows、Mac、RTOS,甚至没有操作系统的裸机。

  • 中间层
  • ROS中最重要的一个概念就是计算图中的“节点”,可以让开发者并行开发低耦合的功能模块,并且便于二次复用。ROS 1的通信系统基于TCPROS/UDPROS,而ROS 2的通信系统基于DDS。

DDS是一种分布式实时系统中数据发布/订阅的标准解决方案。ROS 2内部提供了DDS的抽象层实现,用户不需要关注底层DDS的提供厂家。

  • 应用层

ROS 1强依赖于ROS Master,可以想象一旦Master宕机,整个系统会面临如何的窘境。但是在右边ROS 2的架构中,让人耿耿于怀的Master终于消失了,节点之间使用一种称为“Discovery”的发现机制来帮助彼此建立连接。

 

ROS 2的关键中间件——DDS

DDS(Data Distribution Service),即数据分发服务,2004年由对象管理组织OMG(Object Management Group)发布,是一种专门为实时系统设计的数据分发/订阅标准。

DDS最早应用于美国海军,解决舰船复杂网络环境中大量软件升级的兼容性问题,目前已经成为美国国防部的强制标准,同时广泛应用于国防、民航、工业控制等领域,成为分布式实时系统中数据发布/订阅的标准解决方案。

其技术关键是以数据为核心的发布/订阅模型(Data-Centric Publish-Subscribe ,DCPS),这种DCPS模型创建了一个“全局数据空间”(global data space)的概念,所有独立的应用都可以访问。

目前已经有多家DDS厂商可以提供相关技术,包括可供ROS使用的开源版本和商业版本。

ROS 2的通信模型

ROS 1的通信模型主要包含话题、服务等通信机制,ROS 2的通信模型会稍显复杂,加入了很多DDS的通信机制。

基于DDS的ROS 2通信模型包含以下几个关键概念:

参与者(Participant)

在DDS中,每一个发布者或者订阅者都称为参与者,对应于一个使用DDS的用户,可以使用某种定义好的数据类型来读写全局数据空间。

发布者(Publisher)

数据发布的执行者,支持多种数据类型的发布,可以与多个数据写入器(DataWriter)相联,发布一种或多种主题(Topic)的消息。

订阅者(Subscriber)

数据订阅的执行者,支持多种数据类型的订阅,可以与多个数据读取器(DataReader)相联,订阅一种或多种主题(Topic)的消息。

数据写入器(DataWriter)

上层应用向发布者更新数据的对象,每个数据写入器对应一个特定的Topic,类似于ROS 1中的一个消息发布者。

数据读取器(DataReader)

上层应用从订阅者读取数据的对象,每个数据读取器对应一个特定的Topic,类似于ROS 1中的一个消息订阅者。

话题(Topic)

和ROS 1中的概念类似,话题需要定义一个名称和一种数据结构,但ROS 2中的每个话题都是一个实例,可以存储该话题中的历史消息数据。

质量服务原则(Quality of Service)

简称QoS Policy,这是ROS 2中新增的、也是非常重要的一个概念,控制各方面与底层的通信机制,主要从时间限制、可靠性、持续性、历史记录这几个方面,满足用户针对不同场景的数据需求。

 

基于DDS的ROS 2通信模型包含以下几个关键概念:

参与者(Participant)

在DDS中,每一个发布者或者订阅者都称为参与者,对应于一个使用DDS的用户,可以使用某种定义好的数据类型来读写全局数据空间。

发布者(Publisher)

数据发布的执行者,支持多种数据类型的发布,可以与多个数据写入器(DataWriter)相联,发布一种或多种主题(Topic)的消息。

订阅者(Subscriber)

数据订阅的执行者,支持多种数据类型的订阅,可以与多个数据读取器(DataReader)相联,订阅一种或多种主题(Topic)的消息。

数据写入器(DataWriter)

上层应用向发布者更新数据的对象,每个数据写入器对应一个特定的Topic,类似于ROS 1中的一个消息发布者。

数据读取器(DataReader)

上层应用从订阅者读取数据的对象,每个数据读取器对应一个特定的Topic,类似于ROS 1中的一个消息订阅者。

话题(Topic)

和ROS 1中的概念类似,话题需要定义一个名称和一种数据结构,但ROS 2中的每个话题都是一个实例,可以存储该话题中的历史消息数据。

质量服务原则(Quality of Service)

简称QoS Policy,这是ROS 2中新增的、也是非常重要的一个概念,控制各方面与底层的通信机制,主要从时间限制、可靠性、持续性、历史记录这几个方面,满足用户针对不同场景的数据需求。

 

  • 实时性增强:数据必须在deadline之前完成更新;
  • 持续性增强:DDS可以为ROS 2提供数据历史服务,新加入的节点也可以获取发布者发布的所有历史数据;
  • 可靠性增强:配置可靠性原则,用户可以根据需求选择性能模式(BEST_EFFORT)或者稳定模式(RELIABLE)。

 

——完——

ros1 和 ros2的区别 为什么用ros2.00.概述1.基本概念基本概念:ROS网络(ROS Graph)概念简介:节点(Nodes)客户端程序库发现2. ros2 的目标3. ros2 的架构4. ros1 和ros2的通信模型 0.概述 其实是为了解决ros1中的一些问题 主要是从下面几个文章整过来 古月居的博客https://www.guyuehome.com/805 Why ROS 2? http://desi... 阅读详情

相关推荐

【C++】ROS:ROS2环境配置与基础示例

ros2环境配置与基础使用

DevFrank的博客 6142

ROS2 学习(一)ROS2 简介与基本使用

ROS2 学习(一)ROS2 简介与基本使用

qq_42994487的博客 4万+

ROS2从入门到精通0-2:ROS2简介、对比ROS1与详细安装流程

ROS是一个适用于机器人的开源的元操作系统。本文作为ROS2入门的第一节,主要介绍为什么引入机器人操作系统,ROS的发展历程,为什么在ROS1的基础上要进一步引入ROS2,并给出详细的ROS2安装测试流程

FRIGIDWINTER的博客 2万+

ROS2简介

ROS2(Robot Operating System 2)是机器人操作系统ROS的升级版,专为工业级实时性、安全性和跨平台需求设计。其核心特性包括分布式架构、实时性提升、跨平台支持和安全机制。ROS2采用DDS(Data Distribution Service)标准,实现了动态发现机制、QoS策略控制和零拷贝传输,显著提升了通信效率。相较于ROS1,ROS2在通信机制、节点管理、编程语言、编译方式、实时性支持和安全特性等方面都有显著改进。ROS2广泛应用于工业自动化、自动驾驶和教育研究等领域,提供了丰富

qq_36115224的博客 5811

杂记 | 使用keycloak实现SSO单点登录(新手向,概念、原理、逻辑、详细步骤、难点解释)

使用keycloak实现SSO单点登录(概念、原理、逻辑、详细步骤、难点解释)

野生猿林仔的博客 2万+

【TCAX相关】Python 官方手册下载页面(中文+英文)

Python 官方手册下载页面(中文+英文) 中文: https://docs.python.org/zh-cn/3.8/archives/ https://docs.python.org/zh-cn/3.6/archives/ 英文: https://www.python.org/doc/versions/ https://docs.python.org/3/archives/ https://www.python.org/ftp/python/doc/ ...

Seekladoom的博客 1010

ROS2--概述

ROS2概述

天道酬勤 3582

codesys【modbusRTU】主站

【代码】modbusRTU【codesys】

cfqq1989的博客 4370

ROS2中你需要知道的知识点

ROS2回调调度原理在ROS 2中,回调函数的执行管理由执行器(Executor)来处理。执行器使用底层操作系统的一个或多个线程来调用订阅、定时器、服务服务器、动作服务器等的回调,以响应传入的消息和事件。明确的执行器类包括在rclcpp的 executor.hpp ,rclpy的 executors.py 中,或者rclc的 executor.h 中。

1520

ABB机器人常见的几大数据类型

ABB机器人数据存储描述了机器人控制器内部的各项属性,ABB机器人控制器数据类型多达100余种,其中常见的数据类型包括基本数据、i/o数据、运动相关数据。 1、基本数据 基本数据: bool 逻辑值:逻辑状态下赋予的真或者假。逻辑值有两种情况:成立和不成立则逻辑值为真使用true或1表示不成立则逻辑值为假使用false或0表示 byte 字节值:用于计量存储容量的一种计量单位,取值范围为(0-255) num 数值:变量、可存储整数或小数整数取值范围(-8388607~8388608) dnum

soinlove36的专栏 1万+

【华为OD机试真题 2025C卷】895、贪心歌手 | 机试真题+思路参考+代码解析 (C++、Java、Py、C语言、JS)

【华为OD机试真题 2025C卷】895、贪心歌手 | 机试真题+思路参考+代码解析 (C++、Java、Py、C语言、JS) 华为od机试,华为od机试真题,华为od机试E卷,华为odE卷,华为od机试真题E卷,华为OD,华为OD机试,华为OD机试真题,华为od机考,华为od机试D卷,华为od机试真题D卷,华为od手撕代码,华为od,华为od机试C卷,华为od e卷,华为2025e卷,od机试,2025E卷,华为OD机试E卷,什么是华为od,华为od介绍,全面了解华为od,2025华为od,如何备战华

KJ.JK 961

ROS2:你知道我和你(ROS)最大的区别是什么吗?

大家好,我是小鱼。这两天深圳要刮台风了,雨下的是真的大,小鱼都变成落汤智了。 今天发一篇主线文章,讲一讲,ROS与ROS2的对比,最近在疯狂写教程,最快可能下周就会开始录制课程,到时候还请大家多多关注哈。 1.2 ROS与ROS2对比 经过上一节的学习,相信你已经对ROS和ROS2的发展有了一定的了解,本节小鱼将给大家从多个角度讲解ROS和ROS2的区别之处。 上一节说过,ROS的设计目的是简化在各种机器人平台上创建复杂而强大的机器人行为的任务,既然ROS已经基本解决了这个问题,那么为什么还有ROS

生活不止眼前的苟且 1768

车载软件刷写工具vFlash --- 自动化接口(Automation API)应用简介

车载软件刷写工具vFlash --- 自动化接口(Automation API)应用简介

Soly_kun的博客 359

各个版本镜像_你知道ROS2 Rolling镜像文件的发布了吗?

ROS2 Rolling Docker imageOSRF(开源机器人联盟)近期发布了基于ROS2 Foxy版本的Rolling镜像。之所以叫rolling,是因为这个镜像将紧跟ROS2的最新改动滚动更新,期望以比较快的节奏紧跟ROS2的开发动向。Rolling镜像文件的主要用途是:跟随ROS2主版本发布的各个component的维护者,可以使用Rolling image提前测试并及时发布本部件的...

weixin_28323057的博客 1201

130、NPU的仿真测试:使用Gem5进行全系统仿真

这篇文章摘要(149字): 本文分享了使用Gem5全系统仿真器验证NPU设计的实践经验。作者通过搭建自定义NPU模型并集成到Gem5系统中,实现了CPU-NPU-内存协同仿真。关键点包括:1) 使用SimObject机制构建可配置的NPU模型;2) 合理配置IO和内存总线避免访问冲突;3) 开发Linux驱动实现CPU与NPU通信;4) 利用Gem5调试功能监控内部状态。相比RTL仿真和FPGA验证,该方法能快速验证微架构设计并定位系统级问题,有效减少了流片风险。文章特别强调了时钟域配置、总线仲裁、对齐访问

m0_50546716的博客 121

Amazon SES 移出沙盒完整指南 & 高通过率模板

AWS SES沙盒模式转正式模式申请指南 申请正式模式需通过AWS审核,常见被拒原因包括邮件用途不清晰、缺少退订机制或发送量不合理。人工申诉需登录AWS Support Center提交服务限额提升请求,填写详细的公司信息、邮件用途及合规措施。 高通过率申诉模板需包含: 公司信息:名称、网址及与AWS的合作情况。 邮件规范:明确类型(交易/营销)、退订链接及退信处理机制。 发送计划:合理预估发送量,确保合规。 关键点:真实信息、用途清晰、退订机制完善、发送量合理。首次被拒可修改后重新提交。

xianyinsuifeng的博客 326

[具身智能-716]:ros2 pkg list 的功能以及 ros2 是如何知道自己安装了多少功能包的?

遍历内所有路径,搜寻,输出所有识别到的功能包。ROS 识别功能包两大必要条件:路径被写入路径下存在合法share/包名/package.xml的核心作用:将工作空间 install 目录添加进。

文火冰糖(王文兵)的博客 71

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

ROS2与ROS1时间戳处理对比:迁移项目时你必须知道的5个关键差异

本文深度对比了ROS2与ROS1在时间戳处理上的5个关键差异,涵盖从集中式模拟时间到分布式实时时钟的架构变革、时间数据表示与运算的规范化、定时器调度策略的升级、TF2时间同步机制的优化,以及实战迁移策略与性能考量。对于从ROS1迁移至ROS2的开发者而言,理解这些时间处理范式的根本性重构至关重要,能有效规避潜在错误并提升系统健壮性。

weixin_29053695的博客 104

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

ROS2与ROS1时间戳差异全解析:迁移项目时你必须知道的5个坑

本文深入解析了从ROS1迁移至ROS2时,在时间戳处理上必须注意的五个关键差异与陷阱。核心变化在于从`rospy.Time`到`builtin_interfaces/msg/Time`的范式转变,以及更灵活的时钟管理机制。文章通过实战代码示例,详细说明了如何避免bag文件回放、跨版本消息传递及节点时间同步中的常见错误,帮助开发者顺利完成项目迁移。

weixin_29044713的博客 125

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

ROS2节点全知道:除了ros2 run,用ros2 pkg executables一键列出所有可执行文件(含Python脚本)

本文深入解析ROS2节点的多元形态与发现机制,重点介绍`ros2 pkg executables`工具在系统维护、环境调试和自动化工具链中的独特价值。通过对比不同节点查找方法,展示该工具如何统一识别C++和Python节点,并提供高级应用场景如环境完整性检查、依赖分析和自动化测试集成,帮助开发者提升ROS2项目的可维护性。

weixin_30301449的博客 269

从ROS1到ROS2:Matlab用户必须知道的3个关键变化与QoS配置实战(以Fast DDS为例)

本文详细解析了Matlab用户从ROS1迁移到ROS2时需关注的3个关键变化,包括节点管理机制、QoS策略配置及DDS实现切换。通过Fast DDS实战案例,指导开发者优化通信性能,特别适合机器人算法开发者提升系统可靠性。

weixin_30947043的博客 618

想知道两轮差速方形底盘 URDF 咋做,ROS2 配 Rviz 咋显示吗?看这里!

一个方形底盘和两个差速驱动轮。

darcsdn 431

我有一个疑问,目前ArduPIlot与ROS2的通信方式是用DDS,我想知道其中的micro ros agent和Micro XRCE-DDS Client他们都扮演了什么角色?

组件所在位置作用飞控板(MCU)轻量 ROS 客户端,发送传感器数据、接收控制命令代理,负责将 MCU 数据桥接到标准 ROS 2 网络[ArduPilot 飞控板]v| DDSv[标准 ROS 2 节点]💡核心理解Client:在资源受限设备上,把 MCU 数据变成 ROS 2 消息格式,支持最小化通信协议。Agent:在资源充足设备上,把 Client 的轻量消息“翻译”成完整 ROS 2 消息,同时反向转发控制命令。DDS。

weixin_56545636的博客 858

ROS2机器人笔记20-11-29

turtlebot的文档是目前ROS1和ROS2机器人中做得最好最完善的并且还有免费的多语书。 ROS机器人编程新书推荐(附免费下载) 现在文档已经是这样了: 首先支持版本多,覆盖linux和windows,版本涵盖ros1和ros2,均为长期支持版,其实melodic也是完美支持的,这里发现标签中并没有。 以windows为例:在此更新的手册中,说明比以前的手册容易得多,并且操作起来也更简单。 新功能之一是通过在页面顶部选择特定的ROS版本来支持ROS1和ROS2的各种版本(其他版本或平

zhangrelay的专栏 3704

ROS2常用命令工具

build-type : C++或者C ament_cmake ,Python ament_python。rclpy std_msgs sensor_msgs :编译依赖。查看节点详细信息,包括订阅、发布的消息,开启的服务和动作等。topic_name:需要发布话题消息的话题的名字。罗列当前系统的所有接口,包括话题、服务、动作。message_type:话题的数据类型。service_name:需要调用的服务。pkg_name :创建功能包的名字。node_name:可执行程序的名字。

Johnor的博客 774

【ROS2】为什么要使用ROS2?《ROS2系统特性介绍》

2010年,ROS1首次发布正式版本,其研发的初衷是为设计PR2(个人服务型机器人)共用的软件架构。但随着ROS1技术的普及,ROS1开始广泛融入各领域无人系统的研发,陆续暴露了系统的诸多问题。为了适应新时代机器人研发的需要,2022年5月,ROS开发者团队推出新版本ROS2。.........

后厂村路蔡徐坤的博客 9596
上一篇: 黑科技机器人,竟然能干木工装修的活,将颠覆建筑业!
下一篇: “模块版”波士顿动力的Handle圣诞来袭,原来做个轮腿机器人可以这么简单
小高robot
博客等级 码龄8年 270粉丝 0原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值