最近在研究如何实现一套轻量级机器人软件框架,类似于 ROS2 的分布式架构,因此收集了一些通信库并进行了分析,为基于 C++ 的框架选型提供参考。这些通信库将作为框架的底层通信传输层,需要满足高性能、低延迟、轻量级的要求。
备注:GitHub 数据采集日期为 2026 年 1 月 24 日
1. Eclipse CycloneDDS
Eclipse CycloneDDS 是一个高性能、健壮的开源 DDS(Data Distribution Service)实现,完全符合 OMG DDS 规范。它是 ROS 2 的 Tier-1 中间件,在机器人领域有广泛应用。
基本信息
- GitHub: https://github.com/eclipse-cyclonedds/cyclonedds
- GitHub Stars: 1,159 ⭐
- Forks: 430
- 主要开发语言: C(核心实现),C++(通过 cyclonedds-cxx 绑定)
- 许可证: Eclipse Public License 2.0
- 维护组织: Eclipse Foundation
- 活跃度: ⭐⭐⭐⭐ (活跃维护,ROS 2 Tier-1 中间件)
核心特性
- 完整的 DDS 规范支持:DCPS、DDS Security、DDS C++ API、DDS XTypes、DDSI-RTPS
- 零配置发现:支持自动服务发现(如果支持多播)
- 高性能:小消息吞吐量超过 100 万条/秒,100 字节消息可达 GbE 的 90% 带宽
- 低延迟:在 Xeon E3-1270 V2 上延迟约 30μs
- 可选共享内存支持:可集成 Eclipse Iceoryx 实现零拷贝
优点 ✅
- 标准化:完全符合 OMG DDS 规范,与其他 DDS 实现可互操作
- 成熟稳定:在 ROS 2 中广泛使用,经过大量生产环境验证
- 功能完整:支持 QoS、安全、类型发现等高级特性
- 性能优秀:在以太网环境下性能表现优异
- 社区支持:Eclipse 基金会维护,有商业支持选项
缺点 ❌
- 复杂度较高:DDS 规范本身复杂,学习曲线陡峭
- 依赖较多:需要 IDL 编译器、类型系统等组件
- 内存占用:相比轻量级方案,内存占用较大
- C++ 绑定分离:C++ API 在独立仓库,需要额外集成
- 配置复杂:需要 XML 配置文件进行调优
C++ 集成评估
- 集成难度: ⭐⭐⭐ (中等)
- API 质量: ⭐⭐⭐⭐ (良好,但需要额外绑定)
- 性能: ⭐⭐⭐⭐ (优秀)
- 适用场景: 需要标准化 DDS 协议、与 ROS 2 互操作、企业级应用
2. Fast-DDS
Fast-DDS(eProsima Fast DDS)是最完整的开源 DDS 实现之一,用 C++ 编写,实现了 RTPS(Real-Time Publish-Subscribe)协议。它是 ROS 2 的默认中间件,在机器人、自动驾驶等领域有广泛应用。


