前篇文章介绍了如何实现最简单的节点间内存共享。但因为篇幅所限,并没有深入介绍怎么将其实用化。本篇我们将用之前专门介绍的循环队列内存共享技术,将一个节点的图像数据直接共享给另外的节点。
为了比较内存共享机制和ROS自带的话题传输机制,本文用:ROS系统学习5---OpenCV的使用这篇文章提供的图像发送和接收节点做对比。结果发现用自带的话题传输机制传一张1080p的图像延时大概在600ms,而用内存共享机制传输延时只有10ms左右,性能相差了几十倍。
另外,ROS自身也提供了nodelet做内存共享,只是本人研究了几天发现特别乱就放弃了,感觉这东西迟早要被抛弃(事实上ROS2.0就不用这种机制了),如果有老哥有兴趣也可以去研究下。
下面贴出实现代码,其中最重要的“shmobject.h”在循环队列内存共享已经提供过,需要的可以直接去那边下。
发送节点:
#include <ros/ros.h>
#include <i

本文通过对比ROS的话题传输和内存共享机制,展示了内存共享在图像数据传输中的优势。实验结果显示,内存共享机制传输1080p图像的延时仅10ms,远低于话题传输的600ms。文章探讨了ROS的nodelet内存共享并预测其可能被弃用,同时提供了实现代码供参考。
订阅专栏 解锁全文
527

被折叠的 条评论
为什么被折叠?



