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

来源 | 古月居

作者 | 古月居

 

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)。

 

——完——

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值