【ROS/DDS】FastDDS: 概述与技术分享(一)

一.DDS 技术背景

1.1 DDS简介

DDS 提供了一个发布-订阅传输,它与 ROS1 的发布-订阅传输非常相似。DDS 使用定义的“接口描述语言 (IDL)”进行消息定义和序列化。DDS 有一个请求-响应式传输,类似于 ROS 的服务系统,在 2016年6月的 beta 2 中(称为 DDS-RPC) .

DDS提供的默认发现系统,需要使用DDS的发布-订阅传输,是一个分布式发现系统。这允许任何两个 DDS 程序进行通信,而无需像 ROS Master这样的工具。这使得系统更具容错性和灵活性。但是,不需要使用动态发现机制,因为多个 DDS 供应商提供静态发现选项。

1.2 DDS从何而来

DDS 最初是一群拥有相似中间件框架的公司,并在普通客户希望在供应商之间获得更友好的切换时成为标准。DDS 标准是由 Object Management Group 创建的,他们是为我们带来 UML、CORBA、SysML 和其他通用软件相关标准的人。

1.3 ROS 建立在 DDS 之上

让ROS 建立在 DDS 之上这意味着需要隐藏所有 DDS 特定的 API 和消息定义。DDS 提供发现、消息定义、消息序列化和发布-订阅传输。因此,DDS 将为 ROS 提供发现、发布-订阅传输以及至少底层消息序列化。

ROS 2 将在 DDS 之上提供类似 ROS 1 的接口,它为大多数 ROS 用户隐藏了 DDS 的大部分复杂性,但随后为有极端用例或需要集成的用户单独提供对底层 DDS 实现的访问其他现有的 DDS 系统。

DDS 将完全取代基于 ROS Master的发现系统。ROS 需要利用 DDS API 来获取所有节点列表、所有话题列表以及它们如何连接等信息。访问这些信息将隐藏在 ROS 定义的 API 后面,从而防止用户不得不直接调用 DDS。

DDS 发现系统的优势在于,默认情况下,它是完全分布式的,因此系统的各个部分之间不需要中心节点来相互通信。DDS 还允许在他们的发现系统中使用用户定义的元数据,这将使 ROS 能够将更高级别的概念搭载到发布-订阅中。

1.4 那ROS2服务、动作和参数这三种通信机制怎么实现的?

其实这三种通信方式都是通过对话题的封装实现的,比方说服务,其实可以通过两个话题实现,一个话题发送请求,另外一个话题接收结果,至于动作通信机制的实现,它其实由多个话题和服务共同组成,而参数则是由服务构建而来的。

1.5 DCPS 概念模型

  • Domain。 DDS 域由域 ID 标识。 DomainParticipant 定义域 ID 以指定它所属的 DDS 域。 具有不同 ID 的两个 DomainParticipants 不知道彼此在网络中的存在。 因此,可以创建多个通信渠道。

  • Topic。 它是绑定发布和订阅的实体。 它在 DDS 域中是唯一的。 通过 TopicDescription,它允许发布和订阅的数据类型的统一性。

  • Publisher。 它是负责创建和配置它实现的 DataWriter 的 DCPS 实体。 DataWriter 是负责实际发布消息的实体。 每个 Topic 都将分配一个 Topic,消息将在其下发布。

  • Subscriber。 它是负责接收在其订阅的主题下发布的数据的 DCPS 实体。 它为一个或多个 DataReader 对象提供服务,这些对象负责传达新数据的可用性 添加到应用程序。

1.6 RTPS模型

RTPS(Real-Time Publish-Subscribe,实时发布-订阅)是一种基于发布-订阅模式的通信协议,通常用于实时系统和分布式系统中,特别是在涉及实时数据交换的应用场景中,如自动驾驶、工业自动化、物联网(IoT)和机器人控制等领域。RTPS 是一种用于在不同的网络节点之间传输实时数据的协议,它具有高效、低延迟、可靠的数据传输特性。

实时发布订阅 (RTPS) 协议,旨在 支持 DDS 应用程序,是一个发布-订阅通信中间件 通过 UDP/IP 等尽力而为的传输。此外,Fast DDS 还提供对 TCP 和 共享内存 (SHM) 传输。

RTPS 是 DDS(Data Distribution Service) 的一种实现,它提供了实时数据分发和事件驱动的通信机制。DDS 是一个用于支持实时、可扩展和高效数据共享的中间件标准,而 RTPS 主要关注于数据在网络中的传输和交互。

主要特点

  1. 发布-订阅模式:与传统的客户端-服务器通信模型不同,RTPS 采用了发布-订阅模式,发布者向网络广播消息,订阅者订阅自己关心的消息。这种松耦合的模式使得系统更具灵活性和可扩展性。

  2. 实时性:RTPS 设计用于处理实时数据交换,特别适用于低延迟和高吞吐量要求的应用。

  3. 可靠性:RTPS 提供了多种传输保障机制,包括可靠数据传输和不可靠数据传输,可以根据不同的应用需求进行选择。

  4. 自动发现:RTPS 支持节点的自动发现,即当新的节点加入或离开网络时,系统能够自动更新并重新建立连接。

  5. 支持多种通信传输协议:RTPS 支持多种底层传输协议,如 UDP、TCP等,能够灵活适应不同的网络环境。

二、FastDDS

Fast DDS(以前称为 Fast RTPS)是 DDS 规范的高效、高性能实现,DDS 规范是一种以数据为中心的通信 用于分布式应用软件的中间件 (DCPS)。

架构

Fast DDS 的架构如下图所示,其中具有以下不同 环境。

  • 应用程序层。 使用 Fast DDS API 实现通信的用户应用程序 分布式系统。

  • Fast DDS 层。 DDS 通信中间件的稳健实施。 它允许部署一个或多个 DDS 域,其中 DomainParticipants 位于同一域中 通过在域主题下发布/订阅来交换消息。

  • RTPS 层。 实施实时发布-订阅 (RTPS) 协议,以实现与 DDS 应用程序的互操作性。 此层充当传输层的抽象层。

  • 传输层Fast DDS 可用于各种传输协议,例如不可靠传输协议 (UDP)、可靠 传输协议 (TCP) 或共享内存传输协议 (SHM)。

2.1FastDDS特性

  实时性:提供低延迟的数据传输。

  高吞吐量:支持大规模数据流的传输。

  可扩展性:支持大型分布式系统。

  可靠性:具有自动重试机制,确保数据的可靠传输。

  跨平台:支持多个操作系统和硬件平台。

  安全性:通过集成 DDS 安全性特性来保护数据传输。

2.2FastDDS 与其他 DDS 实现的对比:与 CycloneDDS 的对比

DDS(Data Distribution Service)是一种用于分布式数据传输的标准,它提供了灵活的发布-订阅模型,支持高效、可靠的消息传递。由于不同应用对实时性、吞吐量、可扩展性等的要求不同,因此有多种不同的 DDS 实现。FastDDSCycloneDDS 是两种常见的 DDS 实现,它们各自有不同的特性和优势。

ROS 2 在早期版本中曾使用 CycloneDDS 作为默认的中间件,但后来逐渐转向了 FastDDS,尤其在新的 ROS 2 发行版中,FastDDS 被广泛作为默认的 DDS 实现。以下是 FastDDS 与 CycloneDDS 的对比,以及 ROS 2 为什么从 CycloneDDS 转向 FastDDS 的原因。

2.2.1性能(延迟和吞吐量)
  • FastDDS

    • 低延迟:FastDDS 在设计时特别关注实时性,具有较低的通信延迟,适合用于高实时性要求的应用场景,如自动驾驶、机器人控制等。

    • 高吞吐量:FastDDS 在处理大量数据时表现优异,能够满足高吞吐量的需求,适用于需要传输大量数据的应用,如传感器数据流、视频流等。

  • CycloneDDS

    • 低延迟:CycloneDDS 也具备较低的延迟,特别适用于轻量级应用,但在一些高负载的场景下可能不如 FastDDS 高效。

    • 吞吐量:CycloneDDS 在吞吐量方面也能够提供较好的性能,但在处理非常大规模或大数据量的传输时,可能会受到一定限制。

总结:FastDDS 在高吞吐量和低延迟要求下的表现相对更强,尤其适合对通信性能有较高要求的分布式系统。

2.2.2实时性和 QoS 配置
  • FastDDS

    • FastDDS 提供非常灵活的 QoS(Quality of Service) 策略,开发者可以根据需求调整数据传输的可靠性、实时性、持久性等。FastDDS 的实时性优化让它在工业级应用(如自动驾驶、工业机器人)中表现更好。

    • FastDDS 在不同平台上对实时性做了精心优化,能够在多平台(包括 ARM、x86 等)上高效运行。

  • CycloneDDS

    • CycloneDDS 也支持 QoS 策略,但它的实现相较 FastDDS 来说,可能在某些高实时性或高负载的环境下不够灵活。

    • 在多核处理和实时调度方面,CycloneDDS 的性能也较为可靠,但没有 FastDDS 那么多的实时性优化,尤其是在较为复杂的硬件环境中。

总结:FastDDS 提供了更丰富的 QoS 配置和优化,尤其在实时性方面,表现更加出色。

2.2.3可扩展性和模块化
  • FastDDS

    • FastDDS 强调高可扩展性,特别适合大型分布式系统。它支持从小型单机应用到大规模分布式应用的灵活扩展,可以通过简单的配置和优化来适应复杂的网络环境。

    • 它支持的分布式系统规模大,能处理成百上千个节点之间的通信需求,特别适用于多机器人协作、自动驾驶车队等大型系统。

  • CycloneDDS

    • CycloneDDS 也提供了不错的可扩展性,但它的分布式特性和多节点支持相对没有 FastDDS 那么强大。CycloneDDS 的目标是轻量级、高效能,适合低功耗设备和中小型应用,但在超大规模分布式系统中可能不如 FastDDS 灵活。

总结:FastDDS 在可扩展性上具有更强的优势,适用于大型分布式应用和复杂场景。

2.2.4跨平台支持
  • FastDDS

    • FastDDS 支持多平台通信,包括 Linux、Windows、macOS、RTOS 等,在不同硬件架构(如 x86、ARM)上都可以运行良好,并且提供了针对不同平台的优化。

    • 它的多平台支持非常成熟,并且能够跨操作系统和硬件平台进行高效通信。

  • CycloneDDS

    • CycloneDDS 同样支持多平台,但其跨平台优化没有 FastDDS 那么成熟和广泛,尤其在资源受限的嵌入式平台上,可能需要额外的配置。

总结

FastDDSCycloneDDS 都是 DDS 的实现,但 FastDDS 在性能、可扩展性、实时性、跨平台支持等方面具有明显优势,特别适合高吞吐量、低延迟和分布式系统的应用。因此,ROS 2 转向 FastDDS 作为默认中间件,主要是基于以下原因:更好的性能、更强的实时性、灵活的 QoS 配置、更高的可扩展性以及更成熟的跨平台支持。这些优势使得 FastDDS 能够更好地满足 ROS 2 的需求,尤其是在复杂、大规模、实时性强的应用场景中。

2.3为什么还要研究FastDDS与ROS2通讯?

2.3.1为什么有时候 FastDDS 优于 ROS 2 直接通信

1. 低延迟与高吞吐量

ROS 2 直接的通信方式(如通过 rclcpprclpy 直接调用 ROS 2 的 API)是基于 DDS 的中间件来实现的,但使用 FastDDS 作为中间件时,能够优化数据传输的路径,减少不必要的开销,尤其是对高吞吐量和低延迟要求较高的应用场景,FastDDS 的性能优化能带来显著优势。

2. 高度可配置的 QoS 策略

虽然 ROS 2 自带 DDS 作为中间件,但在某些情况下,开发者可能需要更细粒度的控制。FastDDS 提供了丰富的 QoS 配置选项,能够帮助开发者根据应用需求调整消息传输的可靠性、优先级、延迟等。通过适当的 QoS 配置,FastDDS 可以确保即使在不稳定的网络环境下也能保证数据传输的可靠性和时效性。

3. 分布式应用与跨平台兼容性

FastDDS 是专为分布式系统设计的,能够跨多个平台和硬件架构高效地进行通信。虽然 ROS 2 本身也支持跨平台通信,但 FastDDS 提供了更多关于分布式系统的支持,能够更好地适应不同硬件环境(如嵌入式系统、边缘计算设备等)的需求。

4. 更高的可扩展性

当 ROS 2 系统扩展为更大规模时,FastDDS 的可扩展性优势变得非常明显。它能够处理大量节点之间的通信,在大规模的分布式系统中,FastDDS 能够更好地管理和优化数据流,使得节点间的通信更为高效和稳定。

2.3.2使用 FastDDS 与 ROS 2 直接通信的应用场景

1.自动驾驶

自动驾驶系统需要高速、低延迟的通信。FastDDS 提供了适用于自动驾驶应用的高效数据交换能力,例如传感器数据(雷达、激光雷达、相机等)的实时传输和实时决策过程。

  • 多传感器数据融合:自动驾驶系统需要融合来自多种传感器的数据,这些数据量大且要求极低的延迟。FastDDS 能确保各个传感器的数据能够迅速同步到控制系统,实现实时决策。

2.工业自动化

工业自动化系统往往需要多个传感器和执行器节点进行实时通信,FastDDS 的低延迟特性非常适合这一场景。

  • 设备间的实时协作:例如在生产线上,机器人需要实时响应传感器数据来调整工作流程,确保高效生产。FastDDS 可以确保数据传输的时效性和可靠性。

  • 远程操作与监控:工业自动化还可能涉及到远程监控和操作,FastDDS 使得工业系统能够通过高效的通信实现远程控制和数据共享。

3. 远程手术和医疗机器人

在远程手术和医疗机器人系统中,数据传输的延迟、可靠性和实时性都至关重要。

  • 实时反馈和远程控制:医生和机器人之间的通信需要实时响应,以确保手术的精准性。FastDDS 提供的高效数据交换和低延迟特性,能够确保医生的控制指令能够迅速传递给机器人。

  • 视频流和传感器数据传输:手术过程中,视频流、传感器数据(如压力、温度等)需要实时传输给远程医生或监控系统,FastDDS 能够高效支持这些实时数据流。

2.4 FastDDS可以为机器人项目提供什么样的服务?

使用 FastDDS 可以带来很多帮助,尤其是在高效通信、实时性、扩展性和跨平台兼容性方面。下面是 FastDDS 能为你的机器人项目带来的具体帮助:

1.监控机器人的各项参数

机器人在运行过程中会有大量的实时数据需要监控,如传感器数据(激光雷达、IMU、相机等)、机器人的状态(如电量、温度、速度等)。使用 FastDDS 可以帮助你高效地传输和监控这些数据。

  • 实时传输:你可以使用 FastDDS 配置低延迟、高吞吐量的数据传输,确保传感器数据能够及时传递给监控系统。

  • 实时更新:可以通过发布/订阅模式实时获取传感器数据和机器人的状态更新,例如电池电量变化、传感器状态或机器人位置等。

例如,激光雷达或相机的扫描数据可以实时传输给系统中的其他组件进行处理,而你可以通过订阅消息来更新显示在用户界面的机器人的当前状态或位置。

2.运控指令的收发

在机器人系统中,运控指令的发送和接收是核心功能之一,尤其是控制机器人的动作、导航、定位等。FastDDS 提供了高效、低延迟的通信,确保指令能够迅速而可靠地传递给机器人。

  • 低延迟指令传输:对于需要快速响应的运控指令(如运动控制、定位调整等),FastDDS 可以确保指令从发送端到接收端的传输延迟尽可能低。这对于高精度控制至关重要。

  • 高可靠性:你可以通过配置 FastDDS 的 QoS 策略,确保关键指令的可靠传输。如果有丢包或网络问题,FastDDS 可以根据配置进行重传或调整传输方式,以确保指令不会丢失。

例如,当你发送导航指令给机器人时,FastDDS 能确保这条指令迅速而准确地被传递给机器人控制系统,指令的延迟较低且可靠。

3.算法视觉(SLAM)数据传输

机器人中的视觉算法(如 SLAM)通常需要处理大量的传感器数据,如相机图像、深度图、点云等。FastDDS 可以高效地传输这些数据,并保证算法和系统的协调性。

  • 大数据量传输:SLAM 算法处理的通常是大量的传感器数据(例如点云数据),FastDDS 可以通过高吞吐量的消息传输能力确保这些数据的快速传输,而不会造成系统瓶颈。

  • 实时性和同步:FastDDS 支持精确的 QoS 配置,能够确保来自不同传感器(如摄像头、激光雷达等)的数据按时传递,这对于视觉算法中的数据同步至关重要。通过发布/订阅模式,FastDDS 可以在多个模块之间高效传递 SLAM 需要的数据,保证算法的稳定性和实时性。

例如,你的视觉传感器收集到的图像或点云数据可以通过 FastDDS 实时传输给 SLAM 系统,确保地图构建和定位精度。同时,SLAM 算法的输出(如机器人位置、地图信息等)也能高效地传输给导航和规划模块进行进一步处理。

4.ROS 2 机器人导航和规划

ROS 2 中包含了很多机器人导航和规划的工具(如 Nav2),这些工具需要高效的通信以协调不同组件之间的数据交换。FastDDS 能在这些应用中提供以下帮助:

  • 多节点协作:ROS 2 中的导航系统往往涉及多个节点的协作,如传感器数据采集节点、SLAM 节点、路径规划节点等。使用 FastDDS,可以确保这些节点之间的通信高效且稳定。例如,SLAM 系统发布的位置和地图数据,路径规划系统订阅这些数据并进行路径计算,再将控制指令发布给机器人控制系统。

  • 高效的主题发布和订阅:在 ROS 2 中,主题(topic)是通信的基本单元,FastDDS 可以通过发布/订阅模式高效地传递信息。你可以将机器人的状态、目标位置、传感器数据等通过 FastDDS 发布,其他节点订阅后立即获取。

  • 实时反馈:机器人在执行导航任务时,系统需要实时反馈机器人的位置、速度等状态信息。FastDDS 能够快速传输这些数据,确保导航和路径规划能够根据实时数据调整策略,避免碰撞和确保任务的准确执行。

  1. 跨平台与分布式系统的支持

FastDDS 提供的跨平台和分布式系统支持也非常适合你在机器人项目中需要的通信环境。

  • 多平台兼容性:机器人系统可能由多个不同的计算设备组成,例如嵌入式控制器、传感器接口、上位机等。FastDDS 可以确保这些不同设备之间高效通信,无论它们使用的是 ARM 还是 x86 架构,或者是不同操作系统(如 Ubuntu、RTOS、Windows 等)。

  • 分布式系统扩展:在你的机器人项目中,可能需要在多个机器人或计算节点之间进行数据交换。FastDDS 可以无缝支持这些分布式系统,确保数据能够高效地从一个节点传输到另一个节点,保证大规模系统的稳定运行。

三、延展:FastDDS与其他中间件有何区别?

  1. Protocol Buffers 与FastDDS 中间件区别

1. 功能与用途的区别

Protocol Buffers (Protobuf)
  • 功能:Protobuf 是一种高效的序列化协议,主要用于数据结构的序列化和反序列化。它定义了一种平台和语言中立的方式,用于将结构化数据转化为紧凑的二进制格式,以便于在网络中传输或者存储。

  • 用途

    • 数据交换:Protobuf 通常用于跨平台、跨语言的数据交换。

    • RPC:Protobuf 可以用于远程过程调用(RPC),但它本身并不提供网络通信机制。通常,Protobuf 与其他库(如 gRPC)结合使用来提供完整的通信框架。

    • 存储:Protobuf 适用于高效存储结构化数据。

  • 特点

    • 高效的序列化和反序列化。

    • 支持多种编程语言,包括 C++, Java, Python, Go 等。

    • 简洁且高效的二进制格式,比 JSON 或 XML 更加紧凑。

FastDDS
  • 功能:FastDDS 是一个基于 Data Distribution Service (DDS) 标准的中间件,专门为实时分布式系统提供高效、可靠的数据传输。DDS 是一种发布-订阅模式的通信协议,适用于需要高吞吐量和低延迟的应用场景。FastDDS 是 eProsima 公司提供的一个开源 DDS 实现。

  • 用途

    • 实时通信:FastDDS 用于实时数据传输,特别是在分布式系统中,广泛应用于自动驾驶、机器人、工业控制等领域。

    • 发布-订阅模式:支持发布-订阅模型,通过主题(topic)和消息类型进行数据的交换。

    • 实时性:强调低延迟和高吞吐量,特别适用于对时延和可靠性有严格要求的系统。

  • 特点

    • 基于 DDS 标准,支持分布式、异步通信。

    • 提供可靠性和 QoS(质量服务)设置,适合对实时性和数据一致性要求高的系统。

    • 支持跨语言、跨平台的数据交换,并且可以处理大规模的分布式系统。

    • 支持流控、数据保证和可靠传输等特性。


2. 设计理念与架构的差异

Protocol Buffers (Protobuf)
  • 设计理念:Protobuf 专注于数据的序列化与反序列化,它本身并不涉及具体的通信协议。Protobuf 只是提供了一个高效的二进制数据格式,用于将对象数据转化为字节流,并且提供了跨平台、跨语言的支持。

  • 架构:在 Protobuf 中,数据结构通常是通过 .proto 文件定义的,而通信通常由开发者选择其他工具或库(如 gRPC)来实现。Protobuf 本身并不提供网络协议或消息传递的机制。

FastDDS
  • 设计理念:FastDDS 是一个完整的通信中间件实现,遵循 DDS 标准。它不仅提供了数据序列化功能,还内建了复杂的通信机制,支持多种通信模式(如发布-订阅、请求-响应)。它的设计目标是满足实时系统和分布式系统的数据传输需求。

  • 架构:FastDDS 使用 发布-订阅模型,在其中发布者发送消息,而订阅者接收特定主题的消息。它提供了 Quality of Service (QoS) 设置,用于确保消息的传输质量(例如可靠性、时延、优先级等)。因此,FastDDS 不仅是数据传输的中介,还包括了分布式协调、消息路由、流控等复杂功能。


3. 与数据传输相关的区别

Protocol Buffers (Protobuf)
  • 数据传输:Protobuf 本身不提供任何传输机制,它只负责定义如何将数据编码为二进制格式。开发者需要使用其他库或协议(如 TCP、HTTP、gRPC 等)来实现数据传输。

  • 适用场景:Protobuf 适用于对通信协议有严格控制和灵活选择需求的场景。它适合用于客户端和服务器之间的数据交换,尤其是需要高效数据存储和传输的场景(例如微服务架构、云端数据交换等)。

FastDDS
  • 数据传输:FastDDS 提供了完整的发布-订阅通信机制,并且基于 DDS 标准,内建了网络传输和消息交换功能。它支持 高吞吐量低时延 的数据传输,尤其适用于分布式、实时性要求高的系统。

  • 适用场景:FastDDS 适合用于需要在多个节点之间进行低延迟、高吞吐量数据交换的分布式应用(如自动驾驶、工业控制、机器人等领域)。


4. 质量服务 (QoS) 的差异

Protocol Buffers (Protobuf)
  • Protobuf 本身不涉及质量服务(QoS)设置。它的主要目标是提供一个高效的数据编码格式。质量服务设置需要由开发者在使用 Protobuf 的通信协议(如 gRPC 或 HTTP)中手动配置。

FastDDS
  • FastDDS 是一个基于 DDS 的中间件,提供丰富的 QoS 设置,包括但不限于:

    • 可靠性:确保消息是否被成功传递。

    • 时延:控制消息的最大传输延迟。

    • 优先级:不同数据流之间的优先级设定。

    • 持久性:确保消息在丢失时是否可以恢复。

  • QoS 是 DDS 标准的一部分,因此 FastDDS 在设计上即考虑到了实时性和可靠性的保障,适合于对数据传输质量有严格要求的场景。


5. 适用场景的不同

Protocol Buffers (Protobuf)
  • 适用场景

    • 分布式系统中跨服务的数据交换。

    • 微服务架构、远程过程调用(RPC)。

    • 高效的数据存储和序列化,特别适合云计算和大数据应用。

    • 移动设备、嵌入式设备等网络带宽受限的环境。

  • 常见用例

    • gRPC:利用 Protobuf 作为消息格式,通过 HTTP/2 实现高效的远程过程调用。

    • 云平台和微服务之间的高效数据交换。

FastDDS
  • 适用场景

    • 实时分布式系统中的数据传输。

    • 机器人、自动驾驶、工业控制等领域,要求低延迟和高吞吐量的场景。

    • 大规模数据流处理,适合多节点、高频率的数据交换。

    • 网络条件不稳定的环境下,FastDDS 可以通过 QoS 保证可靠性和实时性。

  • 常见用例

    • 机器人和自动驾驶:用于机器人与传感器、执行器、其他机器人之间的实时数据通信。

    • 智能制造:工业设备间的实时数据交换与协作。

    • 航空航天:要求低延迟和高可靠性的分布式系统。

总结

  • Protobuf 主要关注 数据序列化与反序列化,它的核心优势在于高效的二进制数据表示,适用于跨平台、跨语言的数据交换。它通常与其他协议(如 gRPC)结合使用,用于实现通信。

  • FastDDS 是一个功能更全面的中间件,适用于需要实时、可靠、高吞吐量数据传输的分布式系统,提供完整的发布-订阅机制、QoS 设置,适用于机器人、自动驾驶、工业控制等领域。

如果你的项目需要处理实时的、分布式的高效通信(如机器人或工业自动化系统),FastDDS 是更适合的选择。如果你的需求是跨平台的数据交换或微服务通信,并且主要关注数据序列化效率,那么 Protobuf 会是一个更合适的选择。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

Monster_H777

我直说吧:你的奖励我的动力~

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

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

打赏作者

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

抵扣说明:

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

余额充值