Fast DDS入门一、Fast DDS介绍

这篇具有很好参考价值的文章主要介绍了Fast DDS入门一、Fast DDS介绍。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

Fast DDS入门二、Fast DDS在Windows平台的编译安装文章来源地址https://www.toymoban.com/news/detail-438464.html

1 前言

Fast DDS是DDS(数据分发服务)规范的C++实现,DDS是由对象管理组(OMG)定义的协议。Fast DDS库提供应用程序编程接口(API)和通信协议,用于部署以数据为中心的发布-订阅(DCPS)模型,目的是在实时系统之间建立高效可靠的信息分发。Fast DDS在资源处理方面具有可预测性、可扩展性、灵活性和高效性。为了满足这些要求,它使用了类型化接口,并依赖于一个多对多的分布式网络范例,该范例巧妙地允许将通信的发布方和订阅方分离。Fast DDS包括:

  • DDS API实现。

  • Fast DDS-Gen,一种用于桥接类型化接口和中间件实现的生成工具。

  • 底层RTPS有线协议实现。

除了以上内容,Fast DDS已被选为Robot Operating System 2(ROS 2)在每个长期(LTS)版本和大多数非LTS版本中支持的默认中间件。

2 什么是DDS

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

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

DDS使用QoS来定义DDS实体的行为特征。QoS由各个QoS策略(从QoSPolicy派生的类型的对象)组成。策略中对此进行了描述。

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

发布者是负责创建和配置其实现的DataWriter的DCPS实体。DataWriter是负责实际发布消息的实体。每个人都将有一个指定的主题,在该主题下发布消息。

订阅者是负责接收在其订阅的主题下发布的数据的DCPS实体。它服务于一个或多个DataReader对象,这些对象负责向应用程序传递新数据的可用性。

主题是绑定发布和订阅的实体。它在DDS域中是唯一的。通过TopicDescription,它可以统一发布和订阅的数据类型。

领域这是用于链接属于一个或多个应用程序的所有发布者和订阅者的概念,这些应用程序在不同主题下交换数据。这些参与域的单独应用程序称为DomainParticipant。DDS域由域ID标识。DomainParticipant定义域ID以指定其所属的DDS域。具有不同ID的两个DomainParticipant不知道网络中彼此的存在。因此,可以创建几个通信信道。这适用于涉及多个DDS应用程序的场景,它们各自的DomainParticipant彼此通信,但这些应用程序不得干扰。DomainParticipant充当其他DCPS实体的容器,充当发布者、订阅者和主题实体的工厂,并在域中提供管理服务。

这些元素如下图所示。

Fast DDS入门一、Fast DDS介绍

DDS域中的DCPS模型实体

3 什么是RTPS

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

RTPS设计为支持单播和多播通信。

RTPS继承自DDS,可以找到域的概念,它定义了一个单独的通信平面。多个域可以同时独立共存。域包含任意数量的RTPSP参与者,即能够发送和接收数据的元素。为此,RTPSP参与者使用其端点:

RTPSWriter:能够发送数据的端点。

RTPSReader:能够接收数据的端点。

RTPSParticipant可以有任意数量的编写器和读取器端点。

Fast DDS入门一、Fast DDS介绍

RTPS高级架构

通信围绕主题展开,主题定义和标记正在交换的数据。主题不属于特定参与者。参与者通过RTPSWriter对主题下要发布的数据生成数据更新(Change),通过RTPSReader接收与其订阅主题相关的数据更新。通信单元称为Change,它表示在Topic下写入的数据的更新。RTPSReader/RTPSWriter在其历史记录中注册这些数据更新,历史记录是一种数据结构,用作最近数据更新的缓存。

在eProsima Fast DDS的默认配置中,当您通过RTPSWriter端点发布更改时,会在幕后执行以下步骤:

  • Change将添加到RTPSWriter的历史缓存中。

  • RTPSWriter将Change发送给它匹配的任何RTPSReader。

  • 接收到数据后,RTPSReader将使用新的Change更新其历史缓存。

Fast DDS支持多种配置,允许您更改RTPSWriter/RTPSReader的行为。RTPS实体的默认配置中的修改意味着RTPSWriter和RTPSReader之间的数据交换流发生了变化。此外,通过选择服务质量(QoS)策略,可以以多种方式影响这些历史缓存的管理方式,但通信循环保持不变。

4 DDS API

DDS采用的通信模型是多对多的单向数据交换,其中产生数据的应用程序将数据发布到订阅方的本地缓存。信息流由负责数据交换的实体之间建立的服务质量(QoS)策略来调节。

作为一个以数据为中心的模型,DDS建立在所有感兴趣的应用程序都可以访问的“全局数据空间”的概念之上。希望贡献信息的应用程序声明其成为发布者的意图,而希望访问部分数据空间的应用程序则声明其成为订阅者的意图。每当发布者向这个空间发布新数据时,中间件就会将信息传播给所有感兴趣的订阅者。

通信发生在域之间,即连接所有能够相互通信的分布式应用程序的隔离抽象平面。只有属于同一个域的实体才能进行交互,订阅数据的实体和发布数据的实体之间的匹配由主题管理。主题是明确的标识符,主题名称在域中唯一,并与数据类型和一组特定QoS数据相关联。

DDS实体建模为类或类型化接口,后者意味着更有效的资源处理,因为处理已知的数据类型比动态分配内存更有效率。这是OMG的说法,咸鱼认为这方面提高的效率不明显也不重要,但是接口清晰对通信开发者之间更重要,使得协作开发更有效。

Fast DDS入门一、Fast DDS介绍

DDS域内信息流动的概念图。只有属于同一域的实体才能通过匹配主题发现彼此,从而在发布者和订阅者之间交换数据。

5 Fast DDS-Gen

依赖接口意味着需要一种生成工具,将类型描述转换为适当的实现,以填补接口和中间件之间的空白。该任务由专用生成工具Fast DDS Gen执行,Fast DDS Gen是一个Java应用程序,它使用接口定义语言(IDL)文件中定义的数据类型生成源代码。

6 RTPS Wire Protocol

Fast DDS用于通过标准网络交换消息的协议是实时发布-订阅协议(RTPS),这是OMG联盟定义和维护的DDS互操作性有线协议。该协议通过TCP/UDP/IP等传输提供发布者-订阅者通信,并保证不同DDS实现之间的兼容性。

考虑到发布-订阅设计用于满足DDS应用领域所解决的相同需求的规范,RTPS协议映射到许多DDS概念,因此是DDS实现的自然选择。所有RTPS核心实体都与RTPS域相关联,RTPS域表示端点匹配的隔离通信平面,RTPS协议中指定的实体与DDS实体一一对应,从而允许通信发生。

7 Fast DDS主要特征

  • 两个API层。Fast DDS包括关注可用性的高级DDS兼容层和提供对RTPS协议的更精细访问的低级RTPS兼容层。

  • 实时行为。Fast DDS可以配置为提供实时功能,保证在指定的时间限制内做出响应。

  • 内置发现服务器。Fast DDS基于对现有发布者和订阅者的动态发现,无需联系或设置任何服务器即可连续执行此任务。但是,也可以配置客户机服务器发现以及其他发现范例。

  • 同步和异步发布模式。Fast DDS支持同步和异步数据发布。

  • 尽最大努力和可靠的沟通。Fast DDS支持在尽力就好通信协议(如UDP)上的可选可靠通信模式。此外,设置可靠通信的另一种方法是使用我们的TCP传输。

  • 传输层。Fast DDS实现了可插拔传输的体系结构。实现了五种传输:UDPv4、UDPv6、TCPv4、TCPv6和SHM(共享内存)。

  • 安全Fast DDS可配置为提供安全通信。为此,它在三个级别实现了可插拔的安全性:远程参与者的身份验证、实体的访问控制和数据加密。

  • 统计模块。Fast DDS可以被配置为收集和提供关于用户应用程序正在交换的数据的信息。

  • 吞吐量控制器。支持用户可配置的吞吐量控制器,可用于限制在特定条件下发送的数据量。

  • 即插即用连接。新的应用程序和服务被自动发现,可以随时加入和离开网络,而无需重新配置。

  • 可扩展性和灵活性。DDS建立在全球数据空间的概念之上。中间件负责在发布者和订阅者之间传播信息。这保证了分布式网络能够适应重新配置并可扩展到大量实体。

  • 应用程序可移植性。DDS规范包括到IDL的平台特定映射,允许使用DDS的应用程序在DDS实现之间切换,只需重新编译。

  • 可扩展性。Fast DDS允许通过新服务扩展和增强协议,而不破坏向后兼容性和互操作性。

  • 可配置性和模块性。Fast DDS通过代码或XML配置文件提供了一种直观的配置方式。模块化允许简单设备实现协议的一个子集,并仍然参与网络。

  • 高性能。Fast DDS使用静态低级串行化库Fast CDR,这是一个C++库,根据RTPS规范中定义的标准CDR串行化机制进行串行化。

  • 易于使用。该项目附带了一个开箱即用的示例,即HelloWorld示例。DDS层和RTPS层部分将对DDS和RTPS进行详细说明。

  • 资源消耗低。

  • 允许预分配资源,以最小化动态资源分配。

  • 避免使用无限资源。

  • 将复制数据的需要降至最低。

  • 多平台。操作系统依赖项被视为可插拔模块。用户可以在其目标平台上使用Fast DDS库轻松实现平台模块。默认情况下,该项目可以在Linux、Windows和MacOS上运行。

  • 免费开源。Fast DDS库、下面的RTPS库、生成器工具、内部依赖项(例如eProsima Fast CDR)和外部依赖项(如foonathan库)是免费的开源的。

Fast DDS入门二、Fast DDS在Windows平台的编译安装

到了这里,关于Fast DDS入门一、Fast DDS介绍的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • [保姆教程] Windows平台下OpenCV编译安装和它的Go语言实现gocv的使用(亲测通过)

    一、下载安装 MinGW CMake 预备步骤 首先打开cmd: 下载安装MinGW64 访问: https://sourceforge.net/projects/mingw-w64/files/ 下载: MinGW-W64 GCC-8.1.0 下面的 x86_64-posix-seh 版本 下载后,将它解压缩到 c:mingw64 里 下载安装 CMake 访问:https://cmake.org/download/ 下载:Windows x64 ZIP 解压到: c:cmake Window

    2024年02月16日
    浏览(51)
  • Fast DDS(1)编写一个简单的C++发布者和订阅者应用程序

            本次我们详细介绍如何使用C++API逐步创建一个简单的Fast DDS应用程序,其中包含发布者和订阅者。也可以使用eProsima Fast DDS-Gen工具自行生成与本节中实现的示例相类似的示例。在构建发布/订阅应用程序中解释了这种附加方法。 ​​​​​​​1.3.1  背景介绍    

    2024年02月12日
    浏览(32)
  • windows平台使用CMake工具对darknet的编译以及安装过程+yolov3+图像检测+摄像头检测+视频检测+手机作为摄像头进行检测(详解)

    目录 1.编译和安装教程 (1)安装visual studio 2022 (2)CMake下载及安装 (3)下载darknet.zip文件 (4)安装OpenCV  (5)修改Makefile文件 (6)修改CMakeLists.txt文件 (7)使用CMake工具 2.yolov3进行测试 (1)单张图像进行检测  (2)开启摄像头进行检测 (3) 视频检测 (4)使用手机摄

    2024年02月05日
    浏览(50)
  • ZLMediaKit Windows平台下编译测试

    ZLMediaKit 是一个基于C++11的高性能运营级流媒体服务框架,由于其在Ubuntu平台开发,所以作者指出,项目的编译最好在Ubuntu或者mac上进行编译。因为读者可能需要在Windows的环境下编译ZLMediaKit,读者可以参考官方教程使用Microsoft Visual Studio 2015+进行编译,笔者为Jetbrains产品线使

    2024年02月09日
    浏览(53)
  • Mac/Windows平台下载编译Chromium

    For Mac: https://chromium.googlesource.com/chromium/src/+/main/docs/mac_build_instructions.md Working with Release Branches 一 、 下载编译工具链: deptool git clone https://chromium.googlesource.com/chromium/tools/depot_tools.git export PATH=\\\"$PATH:/Users/yumlu/code/depot_tools\\\" (不过为了后续操作方便,可以将其加入到你的 ~/.zsh

    2024年02月16日
    浏览(46)
  • go语言终端交叉编译的事项windows编译其它平台软件包

    windows编译窗口目前分为 cmd窗口 ,powershell窗口,这两个里面运行的命令不一样。 1.cmd窗口编译; 在windows10之前的系统版本上使用cmd命令行可以使用命令 CMD命令行中 在CMD命令行中编译(示例编译64位linux程序),【打开一个cmd窗口一行行执行下面的命令;】 // 设置Linux编译环

    2024年02月16日
    浏览(52)
  • 在Windows平台编译OpenCV及开发环境配置

    工欲善其事,“必先有其器”。 以下是需要用到的软件和工具清单 表一 软件 用途 下载地址 版本 VS(Visual Studio) 开发和编译(打工人) https://visualstudio.microsoft.com/zh-hans/downloads/ 社区版就够用,版本选择详见表二 CMake 高效编译和组织代码(中介) https://cmake.org/download/ 版本选

    2024年01月21日
    浏览(31)
  • Windows平台visual studio与树莓派跨平台交叉编译opencv

    由于架构差异,opencv在Windows平台下编译的程序无法直接移植到树莓派环境使用,所以需要进行Cmake和跨平台的交叉编译。网上包括官方文档很多足够参考,但配置过程中依然会出现个性问题,以下是本人基于windows下使用visual studio2017集成开发环境进行交叉编译环境配置过程中

    2024年04月11日
    浏览(34)
  • 1.前言和介绍

    从零学习算法部署-TensorRT篇 杜老师推出的 tensorRT从零起步高性能部署 课程,之前有看过一遍,但是没有做笔记,很多东西也忘了。这次重新撸一遍,顺便记记笔记 本次主要是对课程的内容和所需环境做一个简要的介绍 课程大纲可看下面的思维导图 本课程以 TensorRT 和 PyTor

    2024年02月13日
    浏览(37)
  • WebGL前言——WebGL相关介绍

    第一讲内容主要介绍WebGL技术和相应的硬件基础部分,在初级课程和中级课程的基础上,将技术和硬件基础进行串联,能够对WebGL从产生到消亡有深刻全面的理解。同时还介绍WebGL大家在初级课程和中级课程中的一些常见错误以及错误调试的办法。 先热身一下吧,看个问题:如

    2023年04月08日
    浏览(33)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包