警告

您正在阅读的 ROS 2 文档版本已达到 EOL(生命周期结束),不再受官方支持。如果您想了解最新信息,请访问 Jazzy.

关于不同的 ROS 2 DDS/RTPS 供应商

ROS 2 以 DDS/RTPS 作为中间件,提供发现、序列化和传输功能。 本文 详细解释了使用 DDS 实现和/或 DDS 的 RTPS 线协议的动机。总之,DDS 是一种端到端中间件,可提供与 ROS 系统相关的功能,如分布式发现(而非 ROS 1 中的集中式发现)和对不同运输 "服务质量 "选项的控制。

DDS 是一个行业标准,由一系列供应商实施,如 RTI 实施的 Connext凌华科技的实施 OpenSpliceEclipse 的旋风 DDS.RTPS (又名 DDSI-RTPS)是 DDS 用于网络通信的有线协议。有一些实现并不完全符合 DDS API,但为 ROS 2 提供了足够的功能,例如 eProsima 的实现 快速 RTPS.

ROS 2 支持多种 DDS/RTPS 实现,因为在选择供应商/实现时,并不一定要 "一刀切"。在选择中间件实现时,您可能会考虑许多因素:如许可证等后勤因素,或平台可用性或计算足迹等技术因素。供应商可能会针对不同需求提供多种 DDS 或 RTPS 实现。例如,RTI 的 Connext 实现就有多种不同的用途,如一种专门针对微控制器,另一种针对需要特殊安全认证的应用(目前我们只支持其标准桌面版本)。

为了在 ROS 2 中使用 DDS/RTPS 实现,需要一个"R操作系统 M中级w是界面"(又名 rmw 接口,或只是 rmw需要使用 DDS 或 RTPS 实现的应用程序接口和工具创建 RMW(ROS 中间件)包来实现抽象的 ROS 中间件接口。为支持 DDS 实现而实现和维护 RMW 包是一项繁重的工作,但至少支持几种实现对于确保 ROS 2 代码库不与任何特定实现绑定非常重要,因为用户可能希望根据自己项目的需要更换实现。

支持的 RMW 实现

产品名称

许可证

RMW 的实施

现状

eProsima 快速 RTPS

阿帕奇 2

rmw_fastrtps_cpp

完全支持。默认 RMW。与二进制版本一起打包。

日蚀 旋风 DDS

日蚀公共许可证 v2.0

rmw_cyclonedds_cpp

全面支持。与 Eloquent 的二进制版本一起打包。

RTI Connext

商业、研究

rmw_connext_cpp

完全支持。支持包含在二进制文件中,但 Connext 需单独安装。

RTI Connext (动态实施)

商业、研究

rmw_connext_dynamic_cpp

支持暂停。全面支持至阿尔法 8.*

ADLINK 开放式拼接

Apache 2,商用

rmw_opensplice_cpp

部分支持。支持包含在 Foxy 之前的二进制文件中,但 OpenSplice 需单独安装。

"部分支持 "是指 rmw 接口所要求的一个或多个功能没有实现。

有关使用多个 RMW 实施的实用信息,请参阅 与多个 RMW 实施项目合作"; 教程。