巴中市建设局新网站,家装设计费用怎么收费,wix怎么做网站,福田公司企业文化FastDDS简介
eProsima Fast DDS 是 DDS (Data Distribution Service) 协议的一个C语言实现版本#xff0c;该协议由 Object Management Group (OMG) 组织定义。 eProsima Fast DDS 库既提供了一个应用编程接口#xff08;API#xff09;#xff0c;又提供了一种通信协议语言实现版本该协议由 Object Management Group (OMG) 组织定义。 eProsima Fast DDS 库既提供了一个应用编程接口API又提供了一种通信协议使用这种通信协议可以部署以数据为中心的发布者-订阅者模型。这些模型的目的是为实时系统建立高效可靠的数据分发功能。 eProsima Fast DDS 在资源处理方面是可预测可扩展灵活以及高效的。 为了实现这些功能它使用了类型接口并且依赖多对多的分布式网络范式这些使得进行通信的发布者与订阅者可以分离解耦。
eProsima Fast DDS 包含 1The DDS API 实现。 2Fast DDS-Gen, 一个代码生成工具用来将类型化接口和中间件实现连接起来。 3下层的 RTPS 协议实现。
由于有上述特性 eProsima Fast DDS 目前已经被选为ROS2系统的默认中间件。 DDSAPI
DDS采用的通信模型是多对多单项数据交换生产数据的应用程序发布数据到消费者应用程序的本地缓存中。 数据流由负责数据交换的实体根据QOS来进行调节。
作为一个以数据为中心的模型DDS建立在“全局数据空间“”global data space”的概念上该数据空间是所有对数据有兴趣的应用都可以访问的。想要发布数据的应用需要声明它们的意图以便成为数据的发布者。同时想要获取全局空间数据的应用也需要声明意图用于成为数据的订阅者。每当发布者发布一个新的数据到这个数据空间中间件会将这个数据传递给所有对该数据感兴趣的订阅者。
数据交换是在域内进行的域是一个隔离的抽象平面它把所有能够相互通信的分布式应用程序连接在一起。只有属于同一个域的实体才能够互相通信发布数据的实体和订阅数据的实体是通过主题来进行匹配的。
topic有明确的标识符并将一个名称和一种数据类型和一组附加的数据特定的QoS。
DDS实体是一个类或者一个类型接口。类型化接口意味着更高效的资源处理因为其能够获取数据的类型的特点可以在处理数据前就提前分配存储空间而不是处理时动态分配存储空间。 上面的示意图解释了在DDS域之间信息如何流转。只有属于同一个域的实体可以通过匹配主题的方式发现对方从而可以在发布者和订阅者之间交换数据。 Fast DDS-Gen
对接口的依赖意味着需要有一种生成工具这种生成工具可以将类型描述翻译成合适的代码实现这个工具可以填补接口定义和中间件之间的空缺。这个任务由一个专用的生成工具来执行——Fast DDS-Gen, 一个java应用程序它根据IDL (Interface Definition Language) 文件中的数据类型定义生成源代码。 RTPS Wire Protocol
eProsima Fast DDS 通过标准网络进行数据交换所使用的协议是RTPS一个由OMG定义并且维护的DDS互操作有线协议。这个协议提供了基于TCP/UDP/IP传输的发布订阅通信功能并且使得FastDDS和其他的DDS实现之间保持兼容。
鉴于发布-订阅根节点、以及为了满足DDS应用程序域所要解决的相同的需求而设计的规范 RTPS协议映射到了许多DDS概念因此其是DDS实现的自然选择。所有的RTPS核心实体通过RTPS域被连接在一起RTPS域代表了隔离的通信平面在这个通信平面可以让各个通信端点进行匹配。RTPS协议中的实体和DDS实体一对一的对应从而完成相互的数据通信。 Main Features 两层APITwo API Layers. FastDDS 由一个高层的DDS兼容层和一个底层的RTPS兼容层组成高层dds层关注的可用性低层的dds层可以更好的访问rtps协议。 实时性能表现Real-Time behaviour. FastDDS 可以通过配置来提供特定时间约束下的实时性保证。 内建的发现服务器Built-in Discovery Server. FastDDS 是建立在对于已存在的发布者和订阅者的动态发现机制上这套机制并不需要设定任何服务器。尽管如此FastDDS也是可以被设置为客户端-服务器模式的。 同步和异步的发布模式Sync and Async publication modes. FastDDS 支持同步和异步两种数据发布模式。 更好并且更可靠的通信Best effort and reliable communication. FastDDS 中可以选择基于类似UDP传输协议的可靠通信模式。此外可以设置基于TCP传输协议的可靠通信模式。 传输层Transport layers. FastDDS 实现了一个插件化的传输层架构当前的版本实现了五种传输层协议UDPv4, UDPv6, TCPv4, TCPv6 and SHM (shared memory). 安全Security. FastDDS 通过配置可以提供安全的通信。为了实现安全通信 它在三个方面实现了可配置的安全性远程参与者的验证实体的访问控制数据的加密。 统计模块. FastDDS 可以配置拥有能够统计通信数据量。 流量控制Flow controllers. FastDDS支持用户配置流量控制用户可以手动配置在特定环境下的数据发送量吞吐量。 即插即用的连接Plug-and-play Connectivity. 新的应用和服务可以自动的被发现可以在任意时刻加入或者离开离开通信网络。发现加入和退出这些操作都不需要事先进行配置。 可扩展性和灵活性Scalability and Flexibility. DDS建立了全局数据空间的概念。中间件负责在发布者和订阅者之间传送信息。这保证了分布式网络能够适应重新配置以及拓展更多的实体。 应用可移植性Application Portability. DDS规范可以将IDL映射到特定平台允许使用DDS的应用可以在不修改代码的情况下仅仅重新编译即可切换不同的DDS实现例如RTPS)。 可拓展性Extensibility. eProsima Fast DDS 允许新的服务在不改变兼容和互操作性的前提下拓展和增强协议。 配置和模块化Configurability and Modularity. FastDDS 提供了直观的方式让用户进行配置可以通过代码或者xml配置文件来进行配置。而模块化使得运行协议简单子集的设备也可以加入分布式网络中。 高性能High performance. eProsima Fast DDS 使用静态的底层序列化库FastCDR 一个C库根据标准CDR序列机制对数据进行序列化操作。CDR序列化在RTPS Specification中定义. 易用性Easy to use. 项目中自带了开箱的范例程序 DDSHelloWorld (参阅 Getting Started) 中有一个发布者和一个订阅者之间的通信范例展示了FastDDS应该如何部署使用。此外一个交互的示例ShapesDemo也可以帮助开发者进入dds世界。DDS层和RTPS层在 DDS Layer 和RTPS Layer两章节中也做了详细解释。 低开销Low resources consumption. FastDDS: 预先分配资源最小化动态资源分配避免使用没有边界的资源将数据拷贝降到最低基本不需要数据拷贝 多平台Multi-platform. OS依赖部分设置为可插拔的模块。用户可以轻易的使用基于目标系统平台的FastDDS库来实现平台模块默认情况应用可以运行在 Linux, Windows 和MacOS. 开源。