Fast-DDS 快速入门 📅 2026/7/13 12:48:29 Fast-DDS 快速入门精简版快速入门只保留核心概念与上手步骤。发现协议、传输层、Security、XTypes、DataSharing 等见 Fast-DDS完整文档.md。目录一句话了解 Fast-DDS核心概念DDS 实体与数据流环境要求与构建5 分钟上手Hello World双层 API 怎么选常用 QoS 速览常见问题下一步1. 一句话了解 Fast-DDSFast-DDSeProsima是 OMGDDS标准及线协议RTPS的高性能C实现无中心 broker 的发布-订阅自动发现、可配置 QoS、可插拔传输UDP/TCP/共享内存。ROS 2 LTS 默认中间件广泛用于机器人与实时分布式系统。为什么用 Fast-DDS标准兼容DDS RTPS可与其它 DDS 实现互操作性能与可扩展共享内存、DataSharing 零拷贝、Discovery Server两层 APIDDS 易用RTPS 细粒度控制2. 核心概念DDS 实体与数据流实体作用DomainParticipant加入 DDS 域逻辑隔离边界Topic命名数据通道 类型Publisher / DataWriter发布数据Subscriber / DataReader订阅数据PublisherDataWriterTopicDataReaderSubscriberDomainParticipant同一Domain ID内的 Participant 自动发现彼此PDP/EDP无需手动配 IP 列表Discovery Server 模式除外。3. 环境要求与构建项要求CMake≥ 3.22CC11依赖fastcdr、foonathan_memoryCMake 自动拉取可选OpenSSLDDS Securitygitclone https://github.com/eProsima/Fast-DDS.gitcdFast-DDSmkdirbuildcdbuild cmake..-DCMAKE_BUILD_TYPERelease-DCOMPILE_EXAMPLESON cmake--build.-j$(nproc)sudocmake--install.# 可选-DCOMPILE_EXAMPLESON可直接编译hello_world示例。4. 5 分钟上手Hello World4.1 定义 IDL 并生成代码extensibility(APPENDABLE) struct HelloWorld { unsigned long index; string message; };fastddsgen HelloWorld.idl生成HelloWorld.hpp、HelloWorldPubSubTypes.hpp等并在 Participant 上register_type()。4.2 运行示例两个终端需已构建examples/cpp/hello_world# 终端 1./hello_world publisher# 终端 2./hello_world subscriber看到Publisher matched./Subscriber matched.后数据开始流动。有限测试./hello_world publisher-s5./hello_world subscriber-s54.3 最小代码顺序PublisherDomainParticipantFactory::get_instance()create_participant_with_default_profile()type.register_type(participant)create_publisher()→create_datawriter()writer-write(data)Subscriber 侧对应create_subscriber()→create_datareader()Listener 或 WaitSet 收数。5. 双层 API 怎么选DDS APIRTPS API命名空间fastdds::ddsfastdds::rtps抽象Participant / Writer / ReaderRTPSParticipant / RTPSWriter / RTPSReader适用应用开发、ROS 2 集成定制历史、负载池、协议细节多数项目从DDS API起步需要底层控制时再下沉 RTPS。6. 常用 QoS 速览QoS含义典型场景ReliabilityRELIABLE / BEST_EFFORT控制指令 vs 传感器流DurabilityVOLATILE / TRANSIENT_LOCAL晚加入订阅者能否补历史HistoryKEEP_LAST / KEEP_ALL depth缓存条数Deadline最大发布间隔超时检测Liveliness存活断言节点宕机检测Writer 与 Reader QoS必须兼容才能匹配不匹配时on_subscription_matched可能一直为 0。7. 常见问题现象处理Publisher/Subscriber 不匹配检查 Domain ID、Topic 名、类型、QoS本机不通确认防火墙同机可试 SHM 传输找不到 fastddsgen安装 Fast-DDS 工具包或从源码COMPILE_TOOLSONROS 2 用哪个版本跟随 ROS 发行版绑定的 Fast-DDS 版本8. 下一步官方eProsima/Fast-DDS — 文档、examples/、fastddsgen。建议顺序DDS/RTPS 标准入门 → 架构概述 → QoS → 参与者/端点发现 → 传输与安全按需求选读。