ROS2官方教程:ROS2中不同的DDS/RTPS vendors

这篇说明简单讲解了ROS2和DDS/RTPS的关系,以及引出RMW的作用。感觉其中部分句子翻译的不好,而且vendors不知道怎么翻译,用了原词,希望指正。

原文链接:https://index.ros.org/doc/ros2/DDS-and-ROS-middleware-implementations/

ROS2中不同的DDS/RTPS vendors

ROS2是建立在以DDS/RTPS为中间件的基础之上的,DDS/RTPS提供了发现(discovery)、序列化(serialization)以及数据传递(transportation)的功能。这篇文章详细解释了DDS和RTPS实现的机理,总结的说,DDS是一种端对端的中间件,它可以提供ROS系统中的一些相关特性,比如说分布式发现(distributed discovery),非ROS1中的集中式发现方法,以及在不同的质量服务选项(“Quality of Service” options)中控制数据传输。

DDS(Data Distribution Service)是一种工业标准,它由各种不同的vendors实现,比如RTI公司实现的Connext或者是ADLink公司的OpenSplice,RTPS(Real Time Publish Subscribe protocol)是一种使用DDS作为网络通信的协议,没有完全实现全部的DDS API,但已经可以为ROS2提供充足的功能性,比如eProsima实现的Fast RTPS

ROS2支持多种不同的DDS/RTPS实现,这是由于当它选择一个vendor来使用时,并不是完全一致的(one size fits all)。当选择一个中间件实现时,有多种因素需要考虑,比如说后备考虑如license,或者技术考虑如平台兼容性或计算规模。vendors可能专注于不同的需求而提供多于一种的DDS或RTPS实现,比如说,RTI就有多种不同的Connext实现,它们的目的各不相同,比如有些是针对特定处理器平台的,有些是满足不同应用的安全性验证的(当前阶段,ROS2仅支持标准桌面版本)。

为了在ROS2中使用一个DDS/RTPS实现,我们设计了ROS Middleware interface(或简称RMW) 的软件包,它可以实现在使用DDS/RTPS API或工具时对ROS中间件接口的抽象。使用RMW来支持DDS的过程需要做很多实现和维护性工作,但是首先实现对一部分DDS的支持可以保证ROS2的框架代码不再需要尝试其他特殊的实现方法,同时用户也希望能将DDS与他们的应用工程分离开来。

支持的RMW实现

产品名称 协议 RMW实现 当前状态
eProsima Fast RTPS Apache 2 rmw_fastrtps_cpp 完全支持,默认RMW
RTI Connext 商业授权、研究授权 rmw_connext_cpp 完全支持,包括二进制包,但Connext需要单独安装
RTI Connext(dynamic implementation) 商业授权、研究授权 rmw_connext_dynamic_cpp 支持暂停,alpha 8版之前完全支持
PrismTech Opensplice LGPL(only v6.4)、商业授权 rmw_opensplice_cpp 部分支持,包括二进制包,但是OpenSplice需要单独安装
OSRF FreeRTPS Apache 2 - 部分支持,开发暂停

部分支持的意思是有一个或多个rmw接口需要的特性没有实现。详细的关于RMW实现的工作,参考Working with multiple RMW implementations

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章