前篇文章介绍了如何实现最简单的节点间内存共享。但因为篇幅所限,并没有深入介绍怎么将其实用化。本篇我们将用之前专门介绍的循环队列内存共享技术,将一个节点的图像数据直接共享给另外的节点。

为了比较内存共享机制和ROS自带的话题传输机制,本文用:ROS系统学习5---OpenCV的使用这篇文章提供的图像发送和接收节点做对比。结果发现用自带的话题传输机制传一张1080p的图像延时大概在600ms,而用内存共享机制传输延时只有10ms左右,性能相差了几十倍。

另外,ROS自身也提供了nodelet做内存共享,只是本人研究了几天发现特别乱就放弃了,感觉这东西迟早要被抛弃(事实上ROS2.0就不用这种机制了),如果有老哥有兴趣也可以去研究下。

下面贴出实现代码,其中最重要的“shmobject.h”在循环队列内存共享已经提供过,需要的可以直接去那边下。

发送节点:

#include <ros/ros.h>
#include <image_transport/image_transport.h>
#include <opencv2/highgui/highgui.hpp>
#include <

ROS系统学习9---节点间的内存共享(中级篇)---图像收发相关推荐

  1. ROS学习之节点间话题通信的

    一.学习要点: 1.发布节点 a.启动该节点并设置其名称,名称必须唯一 b.设置节点进程的句柄 c.将节点设置成发布者,并将所发布主题的类型和名称告知节点管理器. d.设置发送数据的频率: 2.订阅节 ...

  2. ROS系统学习5---OpenCV的使用

    在机器人系统中,视觉是非常重要的一部分(人的眼睛获取信息占全部信息的78%,机器人可以类比下).因此,用前面四篇文章打下些许基础后,本人便迫不及待的想学习怎么在ROS上用上OpenCV视觉库. 好消息 ...

  3. ROS系统学习2---ROS最小系统的制作

    上一篇文章我们讲了ros的安装,并且运行了ros自带的一个简单程序. 下面,我们将从一个空的文件夹开始,一步步创建工作空间,包,和节点,并让该节点输出"Hello ros".

  4. ROS学习笔记(一)ROS系统架构

    ROS系统架构 ROS系统的架构主要被设计和划分为三部分,每一部分代表一个层级的概念: 文件系统级(The filesystem level) 计算图级(The computation graph l ...

  5. SLAM+语音机器人DIY系列:(二)ROS入门——2.ROS系统整体架构

    摘要 ROS机器人操作系统在机器人应用领域很流行,依托代码开源和模块间协作等特性,给机器人开发者带来了很大的方便.我们的机器人"miiboo"中的大部分程序也采用ROS进行开发,所 ...

  6. [ROS基础-4] ROS系统框架

    系列文章目录 [ROS基础-1] Linux系统介绍与ubuntu安装(virtualbox) [ROS基础-2] Ubuntu系统基本操作与基本命令讲解 [ROS基础-3] ROS系统安装与基本配置 ...

  7. SLAM导航机器人零基础实战系列:(二)ROS入门——2.ROS系统整体架构

    SLAM导航机器人零基础实战系列:(二)ROS入门--2.ROS系统整体架构 摘要 ROS机器人操作系统在机器人应用领域很流行,依托代码开源和模块间协作等特性,给机器人开发者带来了很大的方便.我们的机 ...

  8. 【OpenCV学习】 《OpenCV3编程入门》--毛星云 01 邂逅OpenCV(OpenCV基本概念与基本架构) ROS系统上的运用(python实现)

    对 <OpenCV3编程入门>第一章的学习笔记:理解什么是计算机视觉,什么是OpenCV,以及其中的联系等等. PS:此书为2014年出版,opencv的版本和接口也与现在有些不一致了,作 ...

  9. ROS系统SLAM基础学习:gazebo仿真机器人自主导航

    ROS系统SLAM基础学习:gazebo仿真机器人自主导航 move_base节点配置 amcl节点配置 导航仿真 导航SLAM仿真 自主探索SLAM仿真 自主导航:避障 遇到的问题及解决方法和总结 ...

  10. ROS wiki系列|通过ROS wiki-tutorials学习节点

    前面几期我们讲的都是一些入门相关的内容-- ROS wiki系列|ROS wiki初探(自用) ROS wiki系列|Documentation-ROS部分讲解 ROS wiki系列|ROS入门基础概 ...

最新文章

  1. SAP Spartacus 因为 refresh token 刷新令牌过期后显示用户重新登录页面的逻辑
  2. WPF多线程UI更新——两种方法
  3. linux二进制数据16进制数据转换,[轉]16进制字符文本/二进制文件迷你互转器
  4. 一个500强公司的数据化运营管理实践
  5. GDUFE ACM-1030
  6. JAVA构造方法与构造方法的执行原理简单理解(栈与堆)
  7. sql2000 数据库置疑解决办法
  8. 目标检测之FPN网络详解
  9. Python 多维数据可视化
  10. 给C盘释放五个G的空间
  11. R-南丁格尔玫瑰图: 仿制效果最好的疫情玫瑰图
  12. python处理wrf气象数据_气象编程 | Python3之WRF的投影转换
  13. 使用 prismjs 在网页中高亮显示代码
  14. word中插入的图片会覆盖文字
  15. Java 正则表达式 中的 任意字符
  16. 数据库decimal对应java什么类型_数据库字段类型和Java的对应关系
  17. 开源协议有哪些?如何选择开源协议?
  18. 杜比dss200服务器重装,杜比dss200服务器恢复系统操作
  19. 企业人力资源管理师(四级)题集(理论+实操(计算题)+职业道德)
  20. dedecms织梦数值自动增加标签

热门文章

  1. 联想硬盘保护系统计算机名,联想硬盘保护系统EDU7.0安装方法
  2. springboot 打印日志
  3. 非参数统计:方法与应用(全书例题R语言实现)
  4. 斗鱼tv 服务器响应失败,斗鱼tv打不开怎么办 斗鱼直播打不开得解决办法
  5. 贪心算法及常见例子(附python实现代码)
  6. python贪心算法几个经典例子_python 贪心算法的实现
  7. eclipse的下载及安装教程
  8. win10调整计算机字体大小,主编教您win10下怎么调整字体大小
  9. java maven web项目_java maven项目跟web项目区别
  10. Python解释器(Interpreter)介绍