当前位置: 首页 > news >正文

Fast-DDS 快速入门

Fast-DDS 快速入门

精简版快速入门,只保留核心概念与上手步骤。发现协议、传输层、Security、XTypes、DataSharing 等见 Fast-DDS完整文档.md。

目录

  1. 一句话了解 Fast-DDS
  2. 核心概念(DDS 实体与数据流)
  3. 环境要求与构建
  4. 5 分钟上手:Hello World
  5. 双层 API 怎么选
  6. 常用 QoS 速览
  7. 常见问题
  8. 下一步

1. 一句话了解 Fast-DDS

Fast-DDS(eProsima)是 OMGDDS标准及线协议RTPS的高性能C++实现:无中心 broker 的发布-订阅,自动发现、可配置 QoS、可插拔传输(UDP/TCP/共享内存)。ROS 2 LTS 默认中间件,广泛用于机器人与实时分布式系统。

为什么用 Fast-DDS?

  • 标准兼容:DDS + RTPS,可与其它 DDS 实现互操作
  • 性能与可扩展:共享内存、DataSharing 零拷贝、Discovery Server
  • 两层 API:DDS 易用;RTPS 细粒度控制

2. 核心概念(DDS 实体与数据流)

实体作用
DomainParticipant加入 DDS 域(逻辑隔离边界)
Topic命名数据通道 + 类型
Publisher / DataWriter发布数据
Subscriber / DataReader订阅数据

Publisher

DataWriter

Topic

DataReader

Subscriber

DomainParticipant

同一Domain ID内的 Participant 自动发现彼此(PDP/EDP),无需手动配 IP 列表(Discovery Server 模式除外)。


3. 环境要求与构建

要求
CMake≥ 3.22
C++C++11+
依赖fastcdr、foonathan_memory(CMake 自动拉取)
可选OpenSSL(DDS Security)
gitclone https://github.com/eProsima/Fast-DDS.gitcdFast-DDSmkdirbuild&&cdbuild cmake..-DCMAKE_BUILD_TYPE=Release-DCOMPILE_EXAMPLES=ON cmake--build.-j$(nproc)sudocmake--install.# 可选

-DCOMPILE_EXAMPLES=ON可直接编译hello_world示例。


4. 5 分钟上手:Hello World

4.1 定义 IDL 并生成代码

@extensibility(APPENDABLE) struct HelloWorld { unsigned long index; string message; };
fastddsgen HelloWorld.idl

生成HelloWorld.hppHelloWorldPubSubTypes.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-s5

4.3 最小代码顺序(Publisher)

  1. DomainParticipantFactory::get_instance()
  2. create_participant_with_default_profile()
  3. type.register_type(participant)
  4. create_publisher()create_datawriter()
  5. 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_TOOLS=ON
ROS 2 用哪个版本跟随 ROS 发行版绑定的 Fast-DDS 版本

8. 下一步

  • 官方:eProsima/Fast-DDS — 文档、examples/fastddsgen
  • 建议顺序:DDS/RTPS 标准入门 → 架构概述 → QoS → 参与者/端点发现 → 传输与安全(按需求选读)。
http://www.jsqmd.com/news/1180645/

相关文章:

  • 基于RV1126B的全新AI边缘计算盒子EAI-BOX1000B正式上线
  • 3大突破性方案:MPC-HC音频渲染优化实战指南,彻底告别数字音频失真
  • AI自动生成数据可视化:Table2Chart技术解析与应用
  • 2026 郑州黄金回收哪家靠谱?推荐收的顶实体门店无套路 - 奢侈品回收评测
  • 西安同城黄金回收哪家好?全域门店上门服务实测对比 - 奢侈品回收测评
  • 高压安全隔离系统设计与ISOM8710+PIC24应用
  • Windows 10/11 文件扩展名显示与修改全攻略:从新手到精通
  • Unity游戏开发中SQLite数据库的完整实战指南:从安装到性能优化
  • AI 数据探索 Agent:多轮对话式的数据分析和一次性 SQL 的区别
  • AI技能体系化培训:从Prompt工程到RAG实战
  • nestos-assembler核心组件解析:OSTree与OCI镜像构建原理
  • 基于TMC7300与STM32的有刷直流电机驱动系统设计
  • Meta-Llama模型家族:MoE架构与多模态技术解析
  • HTTPS 证书链验证实战:从浏览器到 OpenSSL 命令的 5 步排查法
  • 2026西安黄金变现全新攻略|透明回收门店实测解析 - 奢侈品回收测评
  • 【Autosar从入门到精通到进阶实战篇】36 安全门禁:UDS 0x27(SecurityAccess)的深度解析与实战
  • 2026 年新发布:华县有实力的专利资产评估制造商推荐几家,别让你的隐形资产被当成废铜烂铁贱卖! - 企业推荐官【认证】
  • 如何彻底掌控你的微信聊天记录?WeChatMsg提供完整解决方案
  • 图像去噪技术:空间域与小波变换方法详解
  • 大模型智能体的核心能力与架构设计实践
  • vLLM引擎最大序列数优化与性能调优指南
  • AI驱动企业财务数字化转型:架构设计与实践
  • B站评论区成分检测器:3分钟掌握用户画像识别的完整指南
  • 数据结构实战:从选择题到代码实现,5种链表操作完整代码示例
  • 3分钟掌握AI图像分层:一键将复杂插画转为可编辑PSD图层
  • Qt 6.4 MSVC 2022 与 MinGW 双环境配置:VS2022 中 2 套编译器的切换指南
  • 华硕/网件 R7000 梅林固件 3 种后台访问方式对比:Web、Telnet、SSH 及适用场景
  • 2026年7月最新昆明卡地亚官方售后客户服务热线与维修网点地址汇总 - 卡地亚服务中心
  • 元学习(Meta-Learning)在AI快速适配中的应用与实践
  • Mac Mouse Fix 终极指南:将普通鼠标打造成 macOS 生产力利器