【FastDDS】快速使用简述 ( 01-DDS、RTPS定义)

DDS与RTPS的定义

一、什么是DDS?

数据分发服务(DDS)是一种以数据为中心的通信协议,用于分布式软件应用程序之间的通信。它描述了通信应用程序编程接口(API)和通信语义,这些接口和语义支持数据提供者和数据消费者之间的通信。

由于它是一种以数据为中心的发布-订阅(DCPS)模型,在其实现中定义了三个关键的应用实体:发布实体(用于定义信息生成对象及其属性)、订阅实体(用于定义信息消费对象及其属性)以及配置实体(用于定义作为主题传输的信息类型,并创建具有服务质量(QoS)属性的发布者和订阅者,以确保上述实体的正确运行)。

DDS使用QoS来定义DDS实体的行为特征。QoS由各个QoS策略(派生自QoSPolicy类型的对象)组成。这些在《策略》中有描述。

1.1 DCPS概念模型

在DCPS模型中,定义了四个用于开发通信应用系统的基本元素。

  • 发布者(Publisher):它是负责创建和配置其所实现的数据写入器(DataWriters)的DCPS实体。数据写入器是负责实际发布消息的实体。每个数据写入器都会有一个指定的主题(Topic),消息将在该主题下发布。详情参见《发布者》。
  • 订阅者(Subscriber):它是负责接收在其订阅的主题下发布的数据的DCPS实体。它为一个或多个数据读取器(DataReader)对象服务,这些数据读取器负责将新数据的可用性通知给应用程序。详情参见《订阅者》。
  • 主题(Topic):它是将发布和订阅绑定在一起的实体。它在一个DDS域内是唯一的。通过主题描述(TopicDescription),它确保发布和订阅的数据类型的一致性。详情参见《主题》。
  • 域(Domain):这一概念用于关联所有在不同主题下交换数据的、属于一个或多个应用程序的发布者和订阅者。参与一个域的这些独立应用程序被称为域参与者(DomainParticipant)。DDS域由一个域ID标识。域参与者通过定义域ID来指定它所属的DDS域。具有不同ID的两个域参与者不会察觉到彼此在网络中的存在。因此,可以创建多个通信通道。这适用于涉及多个DDS应用程序的场景,这些应用程序各自的域参与者相互通信,但这些应用程序之间不能相互干扰。域参与者充当其他DCPS实体的容器,作为发布者、订阅者和主题实体的工厂,并在域中提供管理服务。详情参见《域》。

这些元素如下图所示。
在这里插入图片描述

DCPS模型实体在DDS域中。

二、什么是RTPS?

实时发布-订阅(RTPS)协议是为支持DDS应用程序而开发的,是一种基于尽力而为的传输协议(如UDP/IP)的发布-订阅通信中间件。此外,Fast DDS还支持TCP和共享内存(SHM)传输。

它旨在支持单播和多播通信。

在RTPS的顶层,继承自DDS的是域(Domain),域定义了一个独立的通信平面。多个域可以同时独立存在。一个域包含任意数量的RTPS参与者(RTPSParticipants),即能够发送和接收数据的元素。为了实现这一点,RTPS参与者使用它们的端点(Endpoints):

  • RTPS写入器(RTPSWriter):能够发送数据的端点。
  • RTPS读取器(RTPSReader):能够接收数据的端点。

一个RTPS参与者可以有任意数量的写入器端点和读取器端点。
在这里插入图片描述

RTPS高层架构

通信围绕主题(Topics)展开,主题定义并标记了正在交换的数据。主题不属于特定的参与者。参与者通过RTPS写入器在某个主题下发布的数据中产生变更,并通过RTPS读取器接收与其订阅的主题相关联的数据。通信单元称为变更(Change),它表示在某个主题下写入的数据中的一次更新。RTPS读取器/RTPS写入器将这些变更记录在它们的历史(History)中,历史是一种用作近期变更缓存的数据结构。

在eProsima Fast DDS的默认配置中,当通过RTPS写入器端点发布一个变更时,后台会执行以下步骤:

  1. 该变更被添加到RTPS写入器的历史缓存中。
  2. RTPS写入器将该变更发送给它已知的所有RTPS读取器。
  3. 接收数据后,RTPS读取器用新的变更更新它们的历史缓存。

然而,Fast DDS支持多种配置,这些配置允许更改RTPS写入器/RTPS读取器的行为。对RTPS实体默认配置的修改意味着RTPS写入器和RTPS读取器之间的数据交换流程会发生变化。此外,通过选择服务质量(QoS)策略,可以在多个方面影响这些历史缓存的管理方式,但通信循环保持不变。您可以继续阅读《RTPS层》部分,了解更多关于Fast DDS中RTPS协议的实现。

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Ray.so

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值