eProsima Fast DDS Documentation翻译

2023-10-31

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

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

eProsima Fast DDS Documentation翻译 的相关文章

随机推荐

  • 鸽子学统计

    文章目录 第一部分 基础统计 0 统计学的目的和本质 0 1 随机变量 0 2 统计分析的目的 0 3 统计学的本质 1 描述统计 1 1 变量的测量尺度分类 1 2 均值 1 3 众数和中位数 1 4 极差和标准差 1 5 偏度和峰度 1
  • linux:argument list too long的解决方案

    问题 展示 删除的文件数目过多时 linux命令会报错 如下 rm 命令 rm txt zsh argument list too long rm ls命令 ls txt zsh argument list too long ls 原因 猜
  • Outlook无需API开发连接钉钉群机器人,实现新增会议日程自动发送群消息通知

    Outlook用户使用场景 在企业中 会议和活动的顺利举行对于业务运转和团队协作至关重要 然而 计划的变动总是无法避免 这可能会导致其他人的计划受到影响 打乱原有的安排 为了解决这个问题 许多企业开始使用各种工具和技术来确保信息的及时传递和
  • 【计算机网络】MAC帧和PPP帧(定义+使用范围+区别+共同点)

    目录 0 前言 1 PPP的定义 1 1 点对点协议PPP Point to Point Protocol PPP 1 2 PPP帧 1 3 PPP帧的格式 1 3 1 首部 1 3 2 尾部 2 MAC的定义 2 1 媒体接入控制层MAC
  • 数据库多版本读场景

    session 1 session 2 select a from test return a 10 start transaction update test set a 20 start transaction select a fro
  • Qt 菜单栏QMenu、下拉菜单QAction、工具栏QToolBar的使用

    如下内容是实现一个菜单栏以及下拉菜单的制作 在mainwindow h中添加如下内容 1 class QAction 2 class QMenu 在pro中添加QT widgets QMenu类作为菜单栏 QAction类作为点击菜单栏的下
  • CTF 隐写工具Steghide

    Steghide 是一个可以将文件隐写到图片或者音频得工具 Steghide支持以下图像格式 JPEG BMP WAV AU文件 apt get install steghide 使用查看帮助文件 steghide help steghid
  • 谷粒商城2-环境安装

    谷粒商城2 环境安装 一 安装VirtualBox 1 官网下载 https www virtualbox org wiki Downloads 2 开启CPU虚拟化 3 下载vagrant安装虚拟机镜像 https www vagrant
  • Y9000X 2022 i7-12700H+3060 安装ubuntu18.04.6+问题记录

    Y9000X 2022 i7 12700H 3060 安装ubuntu18 04 6 问题记录 前言 1 Ubuntu18 04 安装 1 1 官网下载Ubuntu18 04 6 镜像 1 2 U盘启动盘制作 1 3 系统安装 2 问题总结
  • VC ini配置文件常用操作

    A 读写ini文件 ini文件 即Initialization file 这种类型的文件中通常存放的是一个程序的初始化信息 ini文件由若干个节 Section 组成 每个Section由若干键 Key 组成 每个Key可以赋相应的值 读写
  • Dynamics CRM2013/2015 检索实体属性的两种方式

    昨天有朋友问起如何查询一个字段属性是否存在于某个实体中 一般这个问题我们会采取最直观的查询方式即MetadataBrowser 该工具是一个zip解决方案包在SDK中的如下目录内 SDK Tools MetadataBrowser 解决方案
  • 【kubernetes】kubeadm安装多master节点的k8s集群

    1 概述 K8s主要分为master节点 控制节点 和node节点 运行容器pod master节点中有apiserver controller manager scheduler和etcd几个主要组件 node节点一般有kubelet k
  • 基础算法二分查找c语言

    gt 大家有没有玩过猜数字游戏 你猜一个数就说你猜大了还是猜小了 猜正确就结束 你是怎么猜呢 不会从头到末尾一个一个猜吧 我们先找中间的数猜一次缩减一半的范围 在 1 2 3 4 5 6 7 8 9 10 查找7 和 17 1 把数据存放在
  • git基础命令行操作

    最近在用git 因为之前没什么基础所以很多时候遇到问题就求教别人 然后稍微总结一下自己踩过的小坑顺便总结一下下 一 git clone xxxx 从远程仓库把项目想在下来 git init 初始化本地仓库 二 git status 查看状态
  • 20、计算机图形学——微平面理论和Cook-Torrance BRDF

    一 微平面理论 如下图中的海面 从远处看 就像镜子一样平整 反光很强烈 但是从近处看 却能法线 海平面是有微小的凹凸不平 可以认为 海平面是由无数个微小的镜面组成 而每个微小的镜面都有法线 如果法线的分布地较为密集 如下图中上面的情况 那么
  • 高防CDN和高防IP的各自优势

    服务器配置中高防IP与高防CDN各自的优势分别是什么 为了更好地防止由于进攻造成 的网络服务器偏瘫 营运商们一般 会挑选具有 高防御服务器 来开展经营 如果是在经营全过程中遭受了进攻 不愿去拆换网络服务器得话 这个时候 就可以选用加上高仿I
  • Gravatar镜像源自建教程,使用CDN加速无需配置反代

    什么是 Gravatar Gravatar 是 Globally Recognized Avatar 的缩写 是 Gravatar 推出的一项服务 意为 全球通用头像 如果在 Gravatar 的服务器上放置了你自己的头像 那么在任何支持
  • D3DCompiler_47.dll丢失怎么解决-D3DCompiler_47.dll丢失怎么办

    d3dcompiler47dll丢失怎么解决 很多用户玩单机游戏或者安装软件的时候就出现过这种问题 如果是新手第一时间会认为是软件或游戏出错了 其实并不是这样 其主要原因就是你电脑的该dll文件没有或者损坏了 这时你只需下载这个d3dcom
  • 大数据从入门到精通(超详细版)之HDFS详解,学不会算我输!!!

    前言 嗨 各位小伙伴 恭喜大家学习到这里 不知道关于大数据前面的知识遗忘程度怎么样了 又或者是对大数据后面的知识是否感兴趣 本文是 大数据从入门到精通 超详细版 的一部分 小伙伴们如果对此感谢兴趣的话 推荐大家按照大数据学习路径开始学习哦
  • eProsima Fast DDS Documentation翻译

    eProsima Fast DDS Documentation eProsima Fast DDS 是 DDS Data Distribution Service 协议的一个C 语言实现版本 该协议由 Object Management G