eProsima Fast DDS Documentation翻译

eProsima Fast DDS Documentation

eProsima

eProsima Fast DDSDDS (Data Distribution Service) 协议的一个C++语言实现版本,该协议由 Object Management Group (OMG) 组织定义。eProsima Fast DDS 库则同时提供了该协议的应用编程接口(API)和用于部署以数据为中心的发布者-订阅者模型的数据通信协议(FastBuffer),旨在为实时系统建立高效可靠的数据分发功能。eProsima Fast DDS 在资源处理方面是可预测,可扩展,灵活以及高效的,为了满足这些要求,它使用了类型接口,并且依赖多对多的分布式网络范式,这些使得进行通信的发布者与订阅者可以分离解耦。

eProsima Fast DDS 包含:

  1. The DDS API 实现。

  2. Fast DDS-Gen, 用于桥接类型化接口和中间件实现的代码生成工具。

  3. 下层的 RTPS 协议实现。

由于有上述特性, eProsima Fast DDS 目前已经被选为 Robot Operating System 2 (ROS 2) 系统的默认中间件并且被包含在最新发布版本Foxy Fitzroy中。

DDS API

DDS采用的通信模型是多对多单项数据交换,其中应用程序产生数据并且发布到属于消费这些数据的订阅者的本地缓存中。 数据流由负责数据交换的实体根据服务质量规则(QOS)来进行调节。

作为一个以数据为中心的模型,DDS建立在了“全局数据空间“(”global data space”)的概念上,该数据空间为所有对数据有兴趣的应用提供了访问。想要发布数据的应用需要声明它们的意图,用于成为数据的发布者,同时,想要获取的应用也需要声明意图,用于成为数据的订阅者。每当发布者发布一个新的数据到这个数据空间,中间件会将这个数据传递给所有对该数据感兴趣的订阅者。

那些跨域的通信,例如连接所有分布式应用的被隔离的抽象层可以互相通信。只有属于同一个域的实体才能够互相匹配,发布数据的实体和订阅数据的实体是通过主题来进行匹配的。

主题是明确的标识符,其关联了一个在域中唯一的名称,并且对应了一种数据类型和一组附加的数据特定的QoS。

DDS实体或者作为类,或者作为类型接口。后者意味着更高效的资源处理,因为其能够获取数据的类型的特点可以在处理数据前就提前分配存储空间,而不是处理时动态分配存储空间。

 

上面的示意图解释了在DDS域之间信息如何流转。只有属于同一个域的实体可以通过匹配主题的方式发现对方,从而可以在发布者和订阅者之间交换数据。

Fast DDS-Gen

对接口的依赖意味着需要有一种生成工具可以将类型描述翻译成合适的代码实现,这样的工具可以填补接口定义和中间件之间的空缺。这个任务现在由一个专用的生成工具来执行, Fast DDS-Gen, 一个java应用程序,它根据IDL (Interface Definition Language) 文件中的数据类型定义生成源代码。

RTPS Wire Protocol

eProsima Fast DDS 通过标准网络进行数据交换所使用的协议是RTPS(Real-Time Publish-Subscribe protocol ),一个由OMG联盟定义并且维护的DDS互操作性有线协议。这个协议提供了基于TCP/UDP/IP传输的发布者-订阅者通信功能,并且保证 eProsima Fast DDS 和其他不同的DDS实现之间保持兼容。

鉴于发布-订阅根节点以及为了满足DDS应用程序域所要解决的相同的需求而设计的规范, RTPS协议映射到了许多DDS概念,因此其是DDS实现的自然选择。所有的RTPS核心实体通过RTPS域被连接在一起,RTPS域代表了隔离的通信平台,其可以让各个通信端点进行匹配。在RTPS协议中,这些指定的实体和DDS实体进行一对一的通信,从而完成相互的数据通信。

Main Features

  • 两层API(Two API Layers). eProsima Fast DDS 由一个高层的DDS兼容层和一个底层的RTPS兼容层组成。

  • 实时性能表现(Real-Time behaviour). eProsima Fast DDS 可以通过配置来提供特定时间约束下的实时性保证。

  • 内建的发现服务(Built-in Discovery Server). eProsima Fast DDS 是建立在对于已存在的发布者和订阅者的动态发现机制上,这套机制并不需要和任何服务端进行通信或者设定。但是, eProsima Fast DDS 也是可以被设置为客户端-服务器模式的发现方式的。

  • 同步和异步的发布模式(Sync and Async publication modes). eProsima Fast DDS 支持同步和一部梁红数据发布模式。

  • 更好并且更可靠的通信(Best effort and reliable communication). eProsima Fast DDS 支持基于类似UDP传输协议的最优通信模式。此外,可以设置基于TCP传输协议的可靠通信模式。

  • 传输层(Transport layers). eProsima Fast DDS 实现了一个插件化的传输层架构,当前的版本实现了五种传输层协议:UDPv4, UDPv6, TCPv4, TCPv6 and SHM (shared memory).

  • 安全(Security). eProsima Fast DDS 通过配置,可以提供安全的通信。为了实现安全通信, eProsima Fast DDS 在三个方面实现了可配置的安全性:远程参与者的验证,实体的访问控制,数据的加密。

  • 统计模块. eProsima Fast DDS 可以配置拥有能够收集和提供用户数据交换的相关信息的功能。

  • 吞吐控制(Throughput controllers). 用户可以手动配置在特定环境下的数据发送量(吞吐量)。

  • 即插即用的连接(Plug-and-play Connectivity). 新的应用和服务可以自动的被发现,在任意时刻加入或者离开离开通信网络。发现,加入和退出,这些操作都不需要事先进行配置。

  • 拓展性和灵活性(Scalability and Flexibility). DDS建立了全局数据空间的概念。中间件负责在发布者和订阅者之间传送信息。这保证了分布式网络能够适应重新配置以及拓展更多的实体。

  • 应用可移植性(Application Portability). DDS规范包括到IDL的平台映射,允许使用DDS的应用可以在不修改代码的情况下,仅仅重新编译即可切换不同的DDS实现(例如RTPS)。

  • 可拓展性(Extensibility). eProsima Fast DDS 允许新的服务在不改变兼容和互操作性的前提下拓展和增强协议。

  • 配置和模块化(Configurability and Modularity). eProsima Fast DDS 提供了直观的方式让用户进行配置,可以通过代码或者xml配置文件来进行配置。而模块化运行简单的设备仅实现协议的子集的情况下仍然可以加入网络。

  • 高性能(High performance). eProsima Fast DDS 使用静态的底层序列化库, Fast CDR ,一个C++库,根据标准CDR序列机制对数据进行序列化操作。CDR序列化在RTPS Specification 中定义(参考Data Encapsulation章节).

  • 易用性(Easy to use). 项目中自带了开箱的范例程序, DDSHelloWorld (参阅 Getting Started) 中有一个发布者和一个订阅者之间的通信范例,展示了 eProsima Fast DDS 应该如何部署使用。此外,为了方便使用者深入了解DDS,DDS和RTPS层在 DDS LayerRTPS Layer 两个章节中被详细说明解释了。

  • 低开销(Low resources consumption). eProsima Fast DDS:

    • 允许预先分配资源,最少化动态资源分配(Allows to preallocate resources, to minimize dynamic resource allocation).

    • 避免使用未绑定的资源(Avoids the use of unbounded resources).

    • 最小化数据拷贝(Minimizes the need to copy data).

  • 多平台(Multi-platform). OS依赖部分被作为插件模块对待。用户可以轻易的使用基于目标系统平台的 eProsima Fast DDS 库来实现平台模块,默认情况,应用可以运行在 Linux, Windows 和MacOS.

Contacts and Commercial support

关于更多信息参阅 eProsima’s webpage.

支持方式如下:

Contributing to the documentation

Fast DDS-Docs 是一个开源项目,因此所有以反馈和内容生成形式的贡献都受到欢迎。要做出此类贡献,请参阅我们 GitHub 存储库中托管的 贡献指南.

Structure of the documentation

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
显示文件新增加的键字: 显示文件增加了下列键字: CSRINPONLY(光标移至仅输入位置) HLPSHELF(帮助书架) MOUBTN(鼠标按键) PSHBTNCHC(按钮开关字段选择) PSHBTNFLD(按钮开关字段) SFLCHCCTL(子文件选择控制) SFLMLTCHC(子文件多项选择表) SFLRTNSEL(子文件返回选择) SFLSCROLL(子文件上卷) SFLSNGCHC(子文件单项选择表) VALNUM(有效数字) WDWTITLE(窗口标题) WRDWRAP(字卷) 这些键字在第三章“显示文件”按字母顺序来讲述。 加到DBCS设备中一些新的显示文件键字(具有调用日语DDS的能力): 下面键字加到显示文件中: GRDATR(坐标属性) GRDBOX(坐标框) GRDCLR(坐标清除) GRDLIN(坐标行) GRDRCD(坐标记录) 这些键字在附录E中以字母顺序来讲述。 以下新的键字加到系统内部通讯功能文件中: PRPCMT(准备落实) RCVROLLB(接收返回响应指示器) RCVTKCMT(接收取落实响应指示器) TNSSYNLVL(转换同步级) 这些键字在第五章“系统内部通讯功能文件”中以字母顺序讲述。 下面键字加到DBCS文件中: CNTFLD(续行项字段) 这个键字在附录E中讲述。 以下是显示文件中修改过的键字: EDTWRD(编辑字) MLTCHCFLD(多项选择字段) MNUBAR(菜单项) PULLDOWN(下拉菜单) RTNCSRLOC(返回光标位置) SFLEND(子文件结束) SFLRCDNBR(子文件记录号) SFLSIZ(子文件大小) SNGCHCFLD(单项选择字段) WINDOW(窗口) 这些键字在第三章“显示文件”中以字母顺序讲述。 以下是打印文件修改过的键字: GDF(图形数据文件) OVERLAY(复盖) PAGSEG(页段) 这些键字在第四章“打印文件”中以字母顺序讲述。 系统内部通讯功能文件修改过的键字: SYNLVL(同步级) 这个键字在第五章“系统内部通讯功能文件”中讲述。 需在打印设备描述中有AFP(*YES)的键字: 对于V3R1,这种先进功能的打印系统(AFP)是做为OS/400中称作打印服务设备/400(PSF/400)的独立部分定购的。为了能够打印特殊值的某些键字所规定的值,需要PSF/400。这些键字在4.2中讲述。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值