ROS2(Fast-DDS)的共享内存

ros2默认使用的DD vendor是eProsima家的Fast-DDS。

ros2 dashing版本默认使用的是Fast-DDS v1.8.2版本,并不支持sharedmemory。

eProsima官网给出的信息,shm的支持从1.10X开始。 https://www.eprosima.com/index.php/products-all/tools/eprosima-shared-memory

ros2的foxy版本中集成的Fast-DDS 2.0.X版本,下载源码 https://index.ros.org/doc/ros2/Installation/Foxy/Linux-Development-Setup/

目前没有看到ros2给出的demo中有shm相关的示例,可能ros中的rwm还没有支持,需要阅读源码确认

Fast-dds的shared memory设计介绍: https://github.com/eProsima/Fast-DDS/blob/v2.0.0/doc/design/shared-memory-transport/interprocess_shared_mem.md

文档: https://fast-dds.docs.eprosima.com/en/v2.0.0/fastdds/transport/shared_memory/shared_memory.html

主要需求点:

  1. 减少os内核调用次数
  2. 大体积数据消息的支持
  3. 避免序列化/反序列化过程
  4. 减少内存拷贝次数

场景示例图

image.png
image.png

你可能感兴趣的:(ROS2(Fast-DDS)的共享内存)