【NanoPi 2】创享日记(12)基于ROS的远程监控实现

  • caolidong
  • LV3工程师
  • |      2016-01-22 15:26:25
  • 浏览量 3354
  • 回复:1

本次内容

上篇日记中建立了NanoPi(Debian)PC(ubuntu)之间的ROS网络通路,并进行了PC键盘控制NanoPi中的小龟移动测试,这篇日记继续扩展,实现在PC上的node订阅NanoPi上发布的实时图像话题。

 

过程笔记:

NanoPi2端:

首先,需要在NanoPi上编辑图像话题的发布文件pub.cpp,需要包含下面的头文件:

【NanoPi 2】创享日记(12)基于ROS的远程监控实现


ros.h包含了ros系统的函数库,image_transport.h中定义了图像传输的类,在ROSOpenCV图像与ROS图像的转换是通过cv_bridge完成的,因此需要包含cv_bridge.h文件,image_encofings.h是传感器相关的消息类型,highgui.h文件提供了OpenCV窗口控件的调用。接下来是主函数的编写,来完成图像话题的发布功能:

【NanoPi 2】创享日记(12)基于ROS的远程监控实现


主函数中,首先用OpenCV的获取图像接口类VideoCapture实例化,将从摄像头得到的图像转换为ROS图像格式,并用pub话题发布出去。在此定义一个image_transport::Subscriber类对象pub来发布camera/image类型的话题,如果相机读取错误或ROS状态错误也会提示“Faild to capture frame”的信息。

PC端:

需要编写图像话题订阅程序sub.cpp,首先同样需要包含以下头文件:

        【NanoPi 2】创享日记(12)基于ROS的远程监控实现


main函数中使用image_transport::Subscriber类创建一个sub对象,用来订阅camera/image类型的话题,一旦接收到camera/image类型的话题后,就会启用回调函数imageCallback,将得到的ROS格式图像通过cv_bridge再次转化为opencv的可识别格式,并通过cv::imshow函数将实时视频显示在“Cam”窗口中。

        【NanoPi 2】创享日记(12)基于ROS的远程监控实现


至此需要准备的程序完毕,在CMakeList.txt中添加生成可执行文件的命令如下:

        【NanoPi 2】创享日记(12)基于ROS的远程监控实现


Catkin空间中执行catkin_make,即可生成pubsub的可执行文件,要在PC端生成sub执行文件,在NanoPi端生成pub可执行文件。

PC端:接下来用上个日记中建立网络通路的方法在pcpingNanoPi,并分别设置主机端口,再在PC端运行master

        【NanoPi 2】创享日记(12)基于ROS的远程监控实现


NanoPi2端:NanoPi上启动具有发布图像功能的节点:

        【NanoPi 2】创享日记(12)基于ROS的远程监控实现


PC端:PC端启动订阅图像功能的节点:

        【NanoPi 2】创享日记(12)基于ROS的远程监控实现


然后便可从pc端看到从NanoPi端传回的图像了:

        【NanoPi 2】创享日记(12)基于ROS的远程监控实现








  • 0
  • 收藏
  • 举报
  • 分享
我来回复

登录后可评论,请 登录注册

所有回答 数量:1
taotao 2017-11-29
您好,请问你上nanopi和pc是通过什么渠道通讯的,tcp/ip吗 ?查不到你的文章
0   回复
举报
发布
x
收藏成功!点击 我的收藏 查看收藏的全部帖子