ZBLOG

fastRtps

Fast-RTPS(Fast Real-Time Publish-Subscribe)eProsima 公司开发的一款开源 DDS(Data Distribution Service)中间件,遵循 OMG DDS 标准,专为实时系统设计,广泛应用于自动驾驶、机器人、工业控制等领域。


1. Fast-RTPS 核心特性

  • 实时性:低延迟、高吞吐,适合硬实时(Hard Real-Time)系统。
  • 零拷贝(Zero-Copy):通过共享内存减少数据复制开销。
  • 多平台支持:Linux、Windows、macOS 及嵌入式系统(如 QNX、VxWorks)。
  • 多种传输协议:支持 UDP/TCP/共享内存/自定义传输。
  • 动态发现机制:节点自动发现与匹配。

2. Fast-RTPS vs DDS 生态

工具 特点
Fast-RTPS C++实现,轻量级,ROS2默认中间件
OpenDDS Java/C++实现,由OCI维护
RTI Connext DDS 商业版,功能最全但闭源
Cyclone DDS Eclipse基金会项目,强调安全性和可扩展性

3. Fast-RTPS 核心概念

(1) DomainParticipant

管理通信域内的所有实体(Publisher/Subscriber)。

DomainParticipant* participant = DomainParticipantFactory::get_instance()->create_participant(0);

(2) Topic

定义数据传输的主题和数据类型(需IDL生成代码)。

// Example.idl
struct SensorData {
    long id;
    float value;
};

(3) Publisher & Subscriber

Publisher* publisher = participant->create_publisher(PUBLISHER_QOS_DEFAULT);
Subscriber* subscriber = participant->create_subscriber(SUBSCRIBER_QOS_DEFAULT);

(4) DataWriter & DataReader

DataWriter* writer = publisher->create_datawriter(topic, DATAWRITER_QOS_DEFAULT);
DataReader* reader = subscriber->create_datareader(topic, DATAREADER_QOS_DEFAULT);

4. QoS(Quality of Service)配置

Fast-RTPS 通过 QoS 策略控制通信行为:

  • RELIABILITYBEST_EFFORT(默认)或 RELIABLE(确保数据到达)。
  • DURABILITY:是否保留历史数据(如 VOLATILE / TRANSIENT_LOCAL)。
  • DEADLINE:设置数据发布的截止时间。

示例:

eprosima::fastrtps::ReliabilityQosPolicy reliability;
reliability.kind = RELIABLE_RELIABILITY_QOS;

5. ROS2 中的 Fast-RTPS

ROS2 默认使用 Fast-RTPS(可通过 RMW_IMPLEMENTATION=rmw_fastrtps_cpp 指定)。
关键配置:

export RMW_IMPLEMENTATION=rmw_fastrtps_cpp
ros2 run demo_nodes_cpp talker

6. 性能优化建议

  1. 调整缓冲区大小:避免因网络抖动导致丢包。
  2. 使用共享内存传输:同一主机内通信时启用。
    
    <transport_descriptors>
       <shared_memory transport_id="SharedMemoryTransport"/>
    </transport_descriptors>
    
  3. 选择合适序列化方式:如 CDR (Common Data Representation)。

7. 常见问题

  • Discovery失败 → 检查防火墙或 Multicast 配置。
  • 高延迟 → 调整 QoS 或切换传输协议(如改用 UDP)。

如果需要更深入的代码示例或应用场景分析,可以进一步探讨!


内容由零声教学AI助手提供,问题来源于学员提问

本站部分文章来源于网络,版权归原作者所有,如有侵权请联系站长删除。
转载请注明出处:http://sdn.0voice.com/?id=8318

分享:
扫描分享到社交APP
上一篇
下一篇
发表列表
游客 游客
此处应有掌声~
评论列表

还没有评论,快来说点什么吧~

联系我们

在线咨询: 点击这里给我发消息

微信号:3007537140

上班时间: 10:30-22:30

关注我们
x

注册

已经有帐号?