ROS与QT语言入门教程-两个节点同时具有发布和订阅图像消息
ROS与QT语言入门教程-两个节点同时具有发布和订阅图像消息
说明
利用OpenCV将图片转化为ROS可以接受的消息
两个节点同时具有发布和订阅图像消息
整个流程
建立两个节点image_node_a 和 image_node_b
节点image_node_a在一个topic——node_a下发布图像message
节点image_node_b订阅topic——node_a
然后节点image_node_b又把收到的信息转换为opencv格式的图像进行处理
接着节点image_node_b把处理后的信息又在topic——node_b下发布出去
最后,node_a订阅topic——node_b
节点node_a
在工作空间~/cv_ws/src下新建一个文件夹——image_node_a,该文件夹下包含一个src文件夹/image_node_a.cpp
、CMakeLists.txt
、package.xml
。
将image_node_a.cpp
中载入图片的路径修改为自己的图片路径:
cv::Mat image = cv::imread("/home/dwy/Lenna.png", CV_LOAD_IMAGE_COLOR);
修改路径:/home/XXXX/XXXX.png
节点node_b
在工作空间~/cv_ws/src下新建一个文件夹——image_node_b,该文件夹下包含一个src的文件夹/image_node_b.cpp
、CMakeLists.txt
、package.xml
。
查看其结构
├── image_node_a
│ ├── CMakeLists.txt
│ ├── package.xml
│ └── src
│ └── image_node_a.cpp
└── image_node_b
├── CMakeLists.txt
├── package.xml
└── src
└── image_node_b.cpp
编译工程空间
$ export ROS_PACKAGE_PATH=~/cv_ws/src:$ROS_PACKAGE_PATH
$ roscd image_node_a
$ cd ~/cv_ws
$ catkin_make
运行
打开一个终端
$ roscore
打开另一个终端,运行节点node_a
$ cd ~/cv_ws
$ source ./devel/setup.bash
$ rosrun image_node_a image_node_a
打开另一个终端,运行节点node_b
$ cd ~/cv_ws
$ source ./devel/setup.bash
$ rosrun image_node_b image_node_b
查看该实例的节点关系图
$ rqt_graph
参考资料
获取最新文章: 扫一扫右上角的二维码加入“创客智造”公众号