ROS 2 index翻译(二)——ROS 2和不同的DDS/RTPS供应商
ROS 2是建立在DDS/RTPS之上的。作为ROS2的中间件,DDS/RTPS提供发现、序列化和信息传输。这篇文章详细解释了使用DDS实现和DDS的RTPS有线协议背后的动机,但总体上来说,DDS是一个端到端的中间件,它提供与ROS系统相关的功能,例如分布式发现(没有集成在ROS1中)和控制不同的用于信号传输的“Quality of Service”选项。
DDS是一个工业标准,并且由一系列供应商实施,例如RTI、Connext或者ADLink的实现。OpenSplice RTPS(又名DDSI-RTPS)是DDS用于与其他网络通信的有线协议,它虽不能满足完整DDS API的使用要求,但能为ROS2提供足够的功能,例如eProsima实现快速RTPS。
ROS 2支持多种DDS/RTPS实现,因为在选择供应商/实现方式时,这没必要“一刀切”。在选择中间件实现时,有很多因素需要考虑:诸如许可等后勤方面的考虑,平台可用性或计算占用空间等技术方面的考虑。供应商可能会提供多个针对满足不同需求的DDS或RTPS实施。例如,RTI的Connext实现在目标上有些变种,像一个专门用于微处理器,另外一个专门针对需要特殊安全认证的应用(目前我们只支持他们的标准桌面版)。
为了在ROS2上使用DDS/RTPS,需要创建一个ROS中间件接口包(ROS Middleware interface,简称rmw接口或rmw)。rmw包使用DDS或RTPS API和工具,来实现抽象ROS中间件接口。实现和维护rmw包以支持DDS实现需要做很多工作,但是支持至少几种运用是很重要的,这样能保证ROS 2代码库不依赖任何一种特定的应用,因为用户可能希望根据项目需要来切换应用。
支持的RMW应用:
产品名称 | 许可证 | RMW应用 | 状态 |
eProsima Fast RTPS | Apache 2 | rmw_fastrtps_cpp | 全支持。默认RMW。二进制封装。 |
RTI Connext | 商用,科研 | rmw_connext_cpp | 全支持。支持二进制,但分开安装。 |
RTI Connext(动态应用) | 商用,科研 | rmw_connext_dynamic_cpp | 暂停支持。直到alpha 8才全支持。 |
PrismTech Opensplice | LGPL(仅 v6.4),商用 | rmw_opensplice_cpp | 部分支持。支持二进制,但OpenSplice要分开安装。 |
OSRF FreeRTPS | Apache 2 | - | 部分支持。已暂停发展。 |
部分支持是指rmw接口需要的一个或多个特性不能满足。
英语原文:https://index.ros.org/doc/ros2/Concepts/DDS-and-ROS-middleware-implementations/
posted on 2019-02-27 11:02 tuxinbang 阅读(1108) 评论(0) 编辑 收藏 举报