如何在ROS2中开发一种计算机视觉模块呢?

2023-09-21

一、视觉模块架构设计
考虑的几个方面>
传感器主要使用话题(topic)通信机制持续向外部发布图像信息;,图像接受与处理、以及发送处理结果节点有两种形式,一种是使用服务(service)通信机制,一种是使用话题机制,两者均可。本人在网上搜集了一些信息,并且参考了chatgpt的意见,得到了一个不错的结果:话题速度更快,并且实现更简单,开发中一般默认使用话题,如果随着开发的进行,话题不再满足我们的需求,可以转至service机制。由于工业机械臂中的传感器(camera)和AI模型(一般一个机械臂只会用到一个)并不复杂,所以我选择topic通信机制开发图像数据的接受处理、结果发送模块。
使用订阅者来接受CV model的处理结果。
[sensor publisher (camera_pub.py)] –> [subscriber and publisher node (cam_sub_and_detection_pub.py)] –> [subscriber (detection_results_sub.py)],二、代码编写
一、新建工作空间,1. 创建src文件夹以存放源码;,2. 在src目录下新建cv_devel_pkg与interfaces_pkg,分别存放视觉开发模块的源码与topic数据接口(interface)文件;,如何在ROS2中开发一种计算机视觉模块呢? (https://ic.work/) 传感器 第1张
2.1 interfaces_pkg编写
需要注意的是,在新建interface pkg时,build type暂时只能选择c++(信息来源:ros官方文档),并且我们需要修改cmakelists.txt与package.xml>
cmakelists.txt:,新增>
package.xml>
新增>
其中,DetectionResults.msg中存放的信息是结果中心坐标的msg>
int32 position_x,int32 position_y,至此,interface pkg代码编写结束。
2.2 cv_devel_pkg编写
如何在ROS2中开发一种计算机视觉模块呢? (https://ic.work/) 传感器 第2张
(1) camera_pub.py
编写完成后,在pkg目录下的setup.py中注册节点,并分别执行colcon build、source install/local_setup.sh、ros2 run cv_devel_pkg camera_pub。
如图,正常运行>
如何在ROS2中开发一种计算机视觉模块呢? (https://ic.work/) 传感器 第3张
(2) cam_sub_and_detection_pub.py
(3)detection_results_sub.py
三、完工
cv_devel_pkg中的节点代码全部编写完成后,在setup.py中注册,然后build & run。
检测结果展示>
如何在ROS2中开发一种计算机视觉模块呢? (https://ic.work/) 传感器 第4张
三个节点可正常运行>
如何在ROS2中开发一种计算机视觉模块呢? (https://ic.work/) 传感器 第5张

文章推荐

相关推荐