DDS和ROS中间件实现

ROS 2和不同的DDS / RTPS供应商

ROS 2构建在DDS / RTPS之上,作为其中间件,提供发现,序列化和传输功能。本文详细介绍了使用DDS实现和/或DDS的RTPS有线协议的动机,但总之,DDS是一个端到端的中间件,提供与ROS系统相关的功能,例如分布式发现(不像ROS那样集中1)并控制传输的不同“服务质量”选项。

DDS是一个行业标准,已经被一系列供应商实现,例如RTI的实现Connext,以及ADLink的实现OpenSplice RTPS(又名DDSI-RTPS)是DDS用于通过网络进行通信的有线协议,并且还有不能满足完整的DDS API但为ROS 2提供了足够的功能的实现,例如eProsima的快速RTPS实现。

ROS 2支持多种DDS / RTPS实现,因为在选择供应商/实现时,它不一定是“一刀切(one size fits all)”。在选择中间件实现时,您可能会考虑许多因素:许可等逻辑考虑因素或平台可用性或计算占用空间等技术因素。供应商可能会提供多个针对满足不同需求的DDS或RTPS实施。例如,RTI有一些其Connext实现的变化,其目的各不相同,例如专门针对微控制器而另一个针对需要特殊安全认证的应用(我们目前仅支持其标准桌面版本)。

为了使用ROS 2的DDS / RTPS实现,需要创建“ROS中间件接口(ROS Middleware interface)”(又叫rmw接口或rmw)包,使用DDS或RTPS实现的API和工具实现抽象ROS中间件接口。实现和维护RMW包以支持DDS实现需要做很多工作,但支持几个实现对于确保ROS 2代码库不依赖于任何一个特定实现非常重要,因为用户可能希望根据需要切换不同实现版本以满足他们项目的需求。

支持的RMW实现:

Product nameLicenseRMW implementationStatus
eProsima Fast RTPSApache 2rmw_fastrtps_cppFull support. Default RMW. Packaged with binary releases.
RTI Connextcommercial, researchrmw_connext_cppFull support. Support included in binaries, but Connext installed separately.
RTI Connext(dynamic implementation)commercial, researchrmw_connext_dynamic_cppSupport paused. Full support until alpha 8.*
PrismTech OpenspliceLGPL (only v6.4), commercialrmw_opensplice_cppPartial support. Support included in binaries, but OpenSplice installed separately.
OSRF FreeRTPSApache 2__Partial support. Development paused.

"Partial support" 表示没有实现rmw接口所需的一个或多个功能。

有关使用多个RMW实现的实用信息,请参阅https://github.com/ros2/ros2/wiki/Working-with-multiple-RMW-implementations.

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值