ROS 2 index翻译(二)——ROS 2和不同的DDS/RTPS供应商

news/2024/7/4 3:42:44

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 RTPSApache 2rmw_fastrtps_cpp全支持。默认RMW。二进制封装。
RTI Connext商用,科研rmw_connext_cpp全支持。支持二进制,但分开安装。
RTI Connext(动态应用)商用,科研rmw_connext_dynamic_cpp暂停支持。直到alpha 8才全支持。
PrismTech OpenspliceLGPL(仅 v6.4),商用rmw_opensplice_cpp部分支持。支持二进制,但OpenSplice要分开安装。
OSRF FreeRTPSApache 2-部分支持。已暂停发展。

 

 

 

 

 

 

 

 

 

部分支持是指rmw接口需要的一个或多个特性不能满足。

英语原文:https://index.ros.org/doc/ros2/Concepts/DDS-and-ROS-middleware-implementations/

转载于:https://www.cnblogs.com/tuxinbang/p/10705416.html


http://www.niftyadmin.cn/n/3614052.html

相关文章

4.3 结构体

结构体类型定义方法: 结构体变量声明方法: 注意:上述第二种声明方式可以省略结构体名称Date 结构体变量初始化方法:

DHCP 管理命令

在华为S9306交换机上查看vlan 30 dhcp地址池分配情况。 <s9306-01>dis ip pool interface vlanif30 Pool-name : vlanif30Pool-No : 1Lease : 1 Days 0 Hours 0 MinutesDomain-name : -DNS-server0 : 61.177.7.1 DNS-server1 : 221.228.255.1 NBNS-server0 : - Netbios-t…

4.4 枚举(实例三色球组合)

枚举类型定义方法: 注意:枚举常量是以标识符(比如上面的Sun、Mon、Tes等等)表示的整型量,而不是字符串或字面常量 枚举变量声明方法: 枚举变量的使用方法:

LayUI前端框架开发视频讲解

简  介课程知识点&#xff1a; 1、两种容器的区别与使用 2、常用页面元素的使用 3、LayUI内置对象的使用 4、结合学习的知识点编写项目模块 课程播放地址&#xff1a; 进入学习01什么是LayUI【录播】课程资料与在线答疑服务(3分钟) 【录播】认识layui前端框架(10分钟) 【…

4.6 实例:文字信息统计

实例:文字信息统计 即:用户输入一段文本(英文),统计其字符总个数、大写字母个数、小写字母个数、数字个数及其他字符个数。 问题分析:

poj3666(DP+离散化)

题目链接&#xff1a;http://poj.org/problem?id3666 思路&#xff1a; 看了讨论区说本题的数据比较弱&#xff0c;只需要考虑不减序列即可&#xff0c;比较懒&#xff0c;所以我也只写了这一部分的代码&#xff0c;思路都一样&#xff0c;能AC就行了。 首先要想明白一点&…

4.7 使用string字符串

实例:String字符串的的操作(String在C++中是一个类,而不是数据类型) 问题分析: 目的:练习使用string类表示字符串; 先定义两个string对象,为他们赋值,用“+”号将它们连接起来; 使用find函数查找“Heavy”的位置,使用erase函数删除该字符串,再使用insert函…

七层协议、TCP(粘包-多路复用)、UDP

ip mac可以识别全世界范围内独一无二的一台计算机 port可以标识一台计算机之上的应用软件 网络编程的目的就是开发出一款基于CS结构的应用程序 一、C/S架构 提供数据的一方称之为服务器&#xff08;Server&#xff09;,访问数据的一方称之为客户端&#xff08;Client&#xff…