ROS2架构与通信模型

ROS2简介

ROS 2是ROS(机器人操作系统)的下一代版本,它采用了新的架构。相较于ROS 1,ROS 2具有以下几个重要的改进:

  • 分布式架构:ROS 2支持分布式计算,可以在多个计算机上运行节点。这样可以提高系统的灵活性和扩展性,并支持更复杂的机器人系统。

  • 通信机制改进:ROS 2引入了一种新的通信机制,称为Data Distribution Service(DDS)。DDS支持更可靠、实时和分布式的数据交换,提供更好的通信性能和可靠性。

  • 多语言支持:ROS 2支持多种编程语言,包括C++、Python和其他语言。这使得开发人员可以根据自己的喜好和需求选择合适的语言进行开发。

  • 可靠性和安全性增强:ROS 2引入了一些机制来提高系统的可靠性和安全性。例如,ROS 2使用了严格的类型定义和验证,提供了更好的错误处理和调试支持,以及更强的权限管理。

ROS2的架构改进使得它更适用于更复杂、更灵活和更安全的机器人系统开发。

ROS1存在的问题

目前,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、节点等重要环节在很多情况下会莫名宕机,这就导致很多机器人从研究开发到消费产品的过渡非常艰难。

ROS2设计目标

相比ROS 1,ROS 2的设计目标更加丰富。
1)支持多机器人系统
ROS 2增加了对多机器人系统的支持,提升了多机器人之间通信的网络性能,更多机器人系统及应用将出现在ROS社区中。
2)去除原型与产品之间的鸿沟
ROS 2不仅针对科研领域,还关注机器人从研究到应用之间的过渡,可以让更多机器人直接搭载ROS 2系统走向市场。
3)支持微控制器
ROS 2不仅可以运行在现有的x86和ARM系统上,还可以支持MCU等嵌入式微控制器,比如常用的ARM-M4、M7内核。

4)支持实时控制
ROS 2还支持实时控制,可以提高控制的时效性和整体机器人的性能。
5)跨系统平台支持
ROS 2不仅能运行在Linux系统上,还增加了对Windows、macOS、RTOS等系统的支持,让开发者的选择更加自由。

ROS2系统架构

ROS2架构与通信模型

ROS1与ROS2系统架构的对比

1.OS层
ROS 1主要构建在Linux系统上;ROS 2支持构建的系统包括Linux、Windows、macOS、RTOS,甚至没有操作系统的裸机。

2.中间层
ROS中最重要的一个概念就是计算图中的“节点”,它可以让开发者并行开发低耦合的功能模块,并且便于二次复用。ROS 1的通信系统基于TCPROS/UDPROS,而ROS 2的通信系统基于DDS。DDS是一种分布式实时系统中数据发布/订阅的标准解决方案,下面会详细介绍。ROS 2内部提供了DDS的抽象层实现,用户无需关注底层DDS的提供厂家。

在ROS 1架构中,Nodelet和TCPROS/UDPROS是并列的层次,可以为同一个进程中的多个节点提供一种更优化的数据传输方式。ROS 2中也保留了类似的数据传输方式,命名为“Intra-process”,同样独立DDS。

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

ROS2的关键中间件——DDS
DDS(Data Distribution Service,数据分发服务),2004年由对象管理组织(Object Management Group,OMG)发布,是一种专门为实时系统设计的数据分发/订阅标准。DDS最早应用于美国海军,用于解决舰船复杂网络环境中大量软件升级的兼容性问题,目前已经成为美国国防部的强制标准,同时广泛应用于国防、民航、工业控制等领域,成为分布式实时系统中数据发布/ 订阅的标准解决方案。

其技术关键是以数据为核心的发布/订阅(Data- Centric Publish-Subscribe,DCPS)模型,这种DCPS模型创建了一个“全局数据空间”(Global Data Space)的概念,所有独立的应用都可以访问。目前已经有多家DDS厂商可以提供相关技术,包括可 供ROS使用的开源版本和商业版本。

ROS2通信模型

ROS 2的通信模型会稍显复杂,加入了很多DDS的通信机制。

ROS2架构与通信模型

基于DDS的ROS 2通信模型包含以下几个关键概念。
1.参与者(Participant)
在DDS中,每一个发布者或者订阅者都称为参与者,对应于一个使用DDS的用户,可以使用某种定义好的数据类型来读/写全局数据空间。

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

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

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

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

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

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

  • 实时性增强:数据必须在deadline之前完成更新。

  • 持续性增强:DDS可以为ROS 2提供数据历史服务,新加入的节点也可以获取发布者发布的所有历史数据。

  • 可靠性增强:配置可靠性原则,用户可以根据需求选择性能模式 (BEST_EFFORT)或者稳定模式(RELIABLE)。

ROS2架构与通信模型

ROS1与ROS2之间的通信:

ROS 2提供了一个如下图所示的ros1_bridge功能包,可以实现 ROS 1与ROS 2之间的数据转换。

ROS2架构与通信模型


参考:


anzhihe 安志合个人博客,版权所有 丨 如未注明,均为原创 丨 转载请注明转自:https://chegva.com/5935.html | ☆★★每天进步一点点,加油!★★☆ | 

您可能还感兴趣的文章!

发表评论

电子邮件地址不会被公开。 必填项已用*标注