编辑推荐: |
本文主要介绍了DDS在机器人行业应用情况:行业的发展历程、DDS在该行业是否纳入标准、DDS在该行业应用的技术方案、DDS在该行业的应用价值及国内外该行业应用DDS的现状。
本文来自于微信公账号 工业软件行业观察,由火龙果软件Linda编辑、推荐。 |
|
一 行业的发展历程
1、什么是DDS
DDS(Data Distribution Service,数据分发服务)是由OMG(对象管理组织)发布的一个关于分布式实时系统中发布/订阅模型的规范。这个规范定义了一个以数据为中心的发布/订阅模型,提供了一个独立于平台的中间件框架,为实时系统中数据发布、传递和接收的行为提供了统一的标准。它允许应用程序实时地发布其所能提供的信息,并订阅所需要的信息。DDS还提供了丰富的QoS(Qualityof
Service)策略,以满足不同应用场景对通信质量的需求。
2、ROS概述
硬件技术的飞速发展,在促进机器人领域快速发展和复杂化的同时,也对机器人系统的软件开发提出了巨大挑战。机器人平台与硬件设备越来越丰富,致使软件代码的复用性和模块化需求越加强烈,而已有的机器人系统又不能很好地适应需求。为迎接机器人软件开发面临的巨大挑战,产生了多种优秀的机器人软件框架,为软件开发工作提供了极大的便利,其中最为优秀的软件框架之一就是机器人操作系统ROS(Robot
Operating System)。ROS与Android、Ubuntu并称为机器人三大操作系统。
ROS是一个用于编写机器人软件的灵活框架,其前身是斯坦福人工智能实验室为了支持斯坦福智能机器人STAIR而建立的交换庭(switchyard)项目,到2008年以后,主要由威楼加拉吉继续该项目的研发。ROS集成了大量的工具、库、协议,提供类似操作系统所提供的功能,包括硬件抽象描述、底层驱动程序管理、共用功能的执行、程序间的消息传递、程序发行包管理,可以极大简化繁杂多样的机器人平台下的复杂任务创建与稳定行为控制。
3、ROS1.0存在的问题
2007年诞生的ROS1.0,存在如下问题:
(1)对多机器人系统支持较弱
多机器人系统是机器人领域研究的一个重点问题,可以解决单机器人性能不足、无法应用等问题,但是ROS
1.0中并没有构建多机器人系统的标准方法。
(2)不支持跨平台
ROS 1.0基于Linux系统,在Windows、MacOS、RTOS等系统上无法应用或者功能有限,这对机器人开发者和开发工具提出了较高要求,也有很大的局限性。
(3)实时性差
很多应用场景下的机器人对实时性有较高要求,尤其是工业领域,系统需要做到硬实时的性能指标,但ROS
1.0缺少实时性方面的设计,所以在很多应用中捉襟见肘。
(4)网络设计欠佳
ROS 1的分布式机制需要良好的网络环境保证数据的完整性,而且网络没有数据加密、安全防护等功能,网络中的任意主机都可获得节点发布或接收的消息数据。
(5)稳定性差
ROS 1.0的稳定性较差,ROS Master、节点等重要环节在很多情况下会莫名宕机,这就导致很多机器人从研究开发到消费产品的过渡非常艰难。
4、基于DDS的ROS2.0的发布
虽然不少开发者和研究机构针对以上部分问题进行了改良,但这些局部功能的改善往往很难带来整体性能的提升,机器人开发者对新一代ROS的呼声越来越大,ROS
2.0的消息也不绝于耳。
终于,在ROSCon 2014上,新一代基于DDS的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的综合性能。
5、ROS2.0相比于ROS1.0的进步
相比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等系统的支持,让开发者的选择更加自由。
图 1 ROS 2的设计目标更加丰富
二 DDS在该行业是否纳入标准
诞生于2007年的ROS经过十余年的高速发展,已经成为机器人领域的事实标准。2014年在ROSCon
2014上,Open Source Robotics Foundation正式发布了新一代ROS的设计架构(Next-generation
ROS: Buildingon DDS),DDS正式成为ROS2的重要的组成部分。ROS对于使用哪家厂商的DDS的不做硬性规定,用户根据自身需要选择适合的DDS(详见http://design.ros2.org中“ROS
Built on DDS”小节)。
图 2 ROS不与DDS供应商绑定
三 DDS在该行业应用的技术方案
图 3 ROS1与ROS2整体架构的对比
对于ROS1、ROS2二者整体架构进行分析可知:
(1)ROS1主要构建于Linux系统之上,而ROS2支持构建的系统包括Linux、windows、Mac、RTOS,甚至没有操作系统的裸机。
(2)ROS1的通讯系统基于TCPROS/UDPROS,强依赖于master节点的处理,一旦master异常,将导致全系统通信故障。ROS2的通讯系统是基于DDS(一种分布式实时系统中数据发布/订阅的标准解决方案),同时在ROS2内部提供了DDS的抽象层实现,用户不需要关注底层DDS的提供厂家。
图 4 ROS1 通讯系统图片
图 5 ROS2 通讯系统
(3)ROS中最重要的一个概念就是“节点”,基于发布/订阅模型的节点使用,可以让开发者并行开发低耦合的功能模块,并且便于进行二次复用。得益于DDS的加入,ROS2的发布/订阅模型也会发生改变。
(4)ROS1的架构中Nodelet和TCPROS/UDPROS是并列的层次,都是负责通讯的,实际上Nodelet是为同一个进程中的多个节点提供一种更优化的数据传输方式。ROS2中也保留了这种数据传输方式,叫“Intra-process”,同样也是独立于DDS。
DDS作为ROS2的核心,最早应用于美国海军,解决舰船复杂网络环境中大量软件升级的兼容性问题,目前已经成为美国国防部的强制标准,同时广泛应用于国防、民航、工业控制等领域,成为分布式实时系统中数据发布/订阅的标准解决方案。其技术核心是以数据为核心的发布/订阅模型(Data-Centric
Publish-Subscribe ,DCPS),这种DCPS模型创建了一个“全局数据空间”(global
data space)的概念,所有独立的应用都可以访问。在DDS中,每一个发布者或者订阅者都称为参与者(participant),类似于ROS中节点的概念。每一个参与者都可以使用某种定义好的数据类型来读写全局数据空间。
图 6 DDS 及ROS API 层
四 DDS在该行业的应用价值
引入DDS后,使得ROS2在通信方面有如下提升:
(1)实时性:DDS通过优化的内核机制,实现微秒级的数据传输;纯分布式的系统结构,保证系统内不存在影响实时性的瓶颈节点。
(2)可靠性:DDS提供点到点的信息交互服务,在系统中不存在集中式的代理或服务进程,从而保证整个系统服务不存在单点故障的风险;同时提供可靠传输策略(Reliability
QoS),通过重发机制确保数据可靠地传输。
(3)持续性:ROS1尽管存在数据队列的概念,但是还有很大的局限,订阅者无法接收到加入网络之前的数据;DDS可以通过相应的QoS为ROS提供数据历史的服务,新加入的节点也可以获取发布的所有历史数据。
(4)灵活性:应用系统可以根据应用场景需求,灵活选择多种DDS提供的应用级QoS策略(例如可靠性传输、数据过滤、优先级排序等等),以满足系统的灵活性需求。
(5)扩展性:DDS使用“订阅/发布”机制进行数据交互,建立全局的虚拟数据空间,在通信层面将应用逻辑与节点的物理信息解耦合,使系统能够方便的实现节点增减或系统本身的分割/合并,满足系统的扩展性需求;运行时由DDS自动发现并连接设备和应用程序,即插即用,无需系统管理或目录服务。
(6)异构网络支持:DDS通过适配底层多种异构架构网络,对上层提供无差别的通信服务,使通信软硬件层对应用层完全透明。
(7)DDS解决了ROS通信层面的问题,这使操作系统的开发者、应用的开发者得以集中精力专注于业务的研究。
五 国内外该行业应用DDS的现状
1、支持ROS的DDS产品
ROS 2支持多种DDS 产品。在选择中间件实现时,用户可能会考虑许多因素:许可证书、平台可用性或计算占用空间等因素。供应商可能会提供多个针对满足不同需求的DDS。例如,RTI有一些特殊的Connext
DDS专门面向微控制器,也有专门面向需要特殊安全认证的应用等,用户可根据实际需要选择。
为了使应用调用ROS 2的DDS,需要创建“ROS中间件接口(ROS
Middleware interface,RMW)”包,应用程序通过调用RMW接口使用DDS通信服务。支持的RMW的DDS产品如下:
2、ROS中DDS的性能现状
2016年论文《Exploring the Performance
of ROS2》中,作者针对ROS1和ROS2在延时、吞吐量、线程数、内存消耗等几个方面的性能进行了量化对比,数据量从256byte到4M,实验条件覆盖了ROS分布式的多种使用场景,具有一定的参考价值,也是目前对ROS2性能方面量化分析的唯一论文,不过需要注意的是论文使用的ROS2是Alpha版本,根据作者的对比数据,可得到如下结论(原文参见http://www.guyuehome.com/805):
(1)ROS2的性能在不同数据量的场景下,表现呈指数级变化,应该是大数据在底层传输的一些处理时间导致的。
(2)不同厂商的DDS产品性能表现,相差巨大,应该根据不同的应用场景选用最佳的DDS产品。
(3)QoS提供了多种配置选项,需要根据不同的应用场景,选择最适合自己的配置。
(4)ROS1会丢失初始数据,而ROS2有显著改进。
(5)ROS2目前的整体性能(论文中使用的Alpha版本)并不如ROS1,毕竟还处于开发阶段,而且对DDS的特性支持有限,但是具有巨大潜力。
3、产业应用现状
(1)百度Apollo自动驾驶
百度Apollo自动驾驶在ROS中添借助基于RTPS服务协议功能,建立了去中心化的网络拓扑结构,网络构建不会以Master作为中心,而是通过域概念作为划分,所有节点加入域中,会通过RTPS协议相互广播通知其他节点,然后节点间会建立点对点连接,来发布订阅消息,以替代Master作为中央信息交换的功能。
(2)凌华与华为联合打造ROS无线平台测试床
图 7 凌华与华为联合打造ROS无线平台测试床
图 8 凌华与华为联合打造ROS无线平台测试床架构
ROS 机器人无线通用平台测试床为基于 ROS2 开源系统的机器人领域从业者和使用者提供标准化、通用化的机器人控制和无线通信承载方案。1)通过高可靠、高稳定性的无线专网承载技术,提高工业和服务机器人作业的精确控制和稳定运行,提高机器人的整体使用效率(如在工厂中,可通过人工智能技术,让工厂中的设备可以协助判别产线的良品率,以协助提高工厂的生产效率和品质)。2)引入机器人控制的分布式架构,提升机器人控制的效率和业务灵活性,进一步丰富机器人的业务使用场景和领域,带动机器人产业技术的持续更新升级。3)扩展
ROS、DDS 技术和蜂窝无线网络在服务及工业机器人领域的业务应用,为机器人产业提供工业级高品质的无线网络解决方案,并为之创造并扩大在工业、商业、及医疗等相关行业领域的市场空间。
|