Eclipse iceoryx 源码分析文档
源码:ros2_humble/src/eclipse-iceoryx/iceoryx · v2.0.6
进程间零拷贝共享内存中间件 · ROS 2 Humble 中作为 CycloneDDS 的 SHM 传输后端
推荐阅读顺序
第一步:整体框架(必读)
第二步:集成与实践
总览
模块 → 源码路径
| 模块 |
路径 |
职责 |
| iceoryx_hoofs |
iceoryx_hoofs/ |
OS 抽象、容器、无锁原语、RelativePointer |
| iceoryx_posh |
iceoryx_posh/ |
核心:mepoo / popo / roudi / runtime / capro |
| iceoryx_binding_c |
iceoryx_binding_c/ |
C API(CycloneDDS 用它接入) |
| iceoryx_dds |
iceoryx_dds/ |
DDS 网关(Humble 构建时 COLCON_IGNORE) |
| iceoryx_examples |
iceoryx_examples/ |
示例与 iceperf 基准 |
| tools |
tools/ |
iox-introspection-client 等 |
核心概念速记
| 概念 |
一句话 |
| RouDi |
守护进程:建共享内存、管端口与发现,不在数据路径上 |
| Chunk |
共享内存中的固定大小数据块(ChunkHeader + payload) |
| MemPool |
固定大小块的无锁内存池(LoFFLi free-list) |
| loan/publish/take |
借块写入 → 推相对指针入队 → 订阅端直接读,全程零拷贝 |
| RelativePointer |
(segment id, offset) 编码,使指针在不同进程映射地址下有效 |
| CaPro |
service/instance/event 三元组的发现协议 |
快速上手(ROS 2 零拷贝)
1 2 3 4 5 6 7 8 9
| iox-roudi
export RMW_IMPLEMENTATION=rmw_cyclonedds_cpp export CYCLONEDDS_URI='<CycloneDDS><Domain><SharedMemory><Enable>true</Enable></SharedMemory></Domain></CycloneDDS>'
iox-introspection-client --mempool
|
细节与限制(QoS 约束、POD 类型要求、mempool 配置)见 07-与CycloneDDS及ROS2集成.md;
排障从 08-示例与性能工具.md 的 checklist 开始。
对照阅读:../cyclonedds/README.md(网络路径) vs 本系列(同机共享内存路径)。
正在加载留言…