ROS与Halcon联合(halcon_bridge),有源码
ROS与Halcon联合(halcon_bridge),有源码
一、我的项目代码
我的项目实现的功能如下:1、USB相机采集图像并传递数据给ROS;2、编写订阅者从ROS端接收到图像数据,并使用halcon做图像处理。 项目名:ros_halcon_ws 功能包:asr_halcon_bridge、ros_and_halcon、usb_cam
ROS与Halcon联合主要代码
#include "ros/ros.h" #include "HalconCpp.h" #include <ros/package.h> #include <ros/console.h> //#include <asr_halcon_bridge/halcon_image.h> // 路径修改为asr_halcon_bridge功能包所在路径 #include "/home/xirui/lyj/ROS/ros_halcon_ws/src/asr_halcon_bridge/src/asr_halcon_bridge/halcon_image.cpp" using namespace std; using namespace ros; using namespace HalconCpp; void chatterCallback(const sensor_msgs::Image& source) { ROS_INFO("I heard !"); halcon_bridge::HalconImagePtr ptr = halcon_bridge::toHalconCopy(source); /* 把image对象从ptr中取出来 */ HObject image; image = *ptr->image; HTuple hv_WindowHandle; if (HDevWindowStack::IsOpen()) CloseWindow(HDevWindowStack::Pop()); SetWindowAttr("background_color","black"); OpenWindow(20,0,512,512,0,"visible","",&hv_WindowHandle); HDevWindowStack::Push(hv_WindowHandle); if (HDevWindowStack::IsOpen()) DispObj(image, HDevWindowStack::GetActive()); } int main(int argc, char **argv) { ros::init(argc, argv, "halcon_read"); ros::NodeHandle nh; ros::Subscriber sub = nh.subscribe("/usb_cam/image_raw", 1000, chatterCallback); ros::spin(); return 0; }
运行方法
1、cd 进入 ros_halcon_ws目录中,使用命令catkin_make,进行工作空间的编译;
2、在ros_halcon_ws目录中,source ./devel/setup.bash,进行工作空间的加载;
3、启动ros_master节点,roscore;
4、将sensor_msgs::Image转换成HalconCpp::HImage,rosrun ros_and_halcon halcon_read;
5、启动USB相机采集图像并传递数据给ROS,rosrun usb_cam usb_cam_node;
运行结果
二、项目代码下载地址
我把项目代码上传至百度网盘和github上了,有需要的小伙伴自行下载哦! 百度网盘:链接:https://pan.baidu.com/s/15meBONPQVT_DBKqi0wcXXg 提取码:r1tp github:
三、功能包网址
asr_halcon_bridge:与cv_bridge功能类似,支持halcon与ROS进行图像数据交互。 网址:1、;2、 说明:主要文件位于include/halcon_image.h与src/halcon_image.cpp中 usb_cam:启动USB摄像头采集图像并传递数据给ROS。 网址:1、;2、 说明:主要文件位于nodes/usb_cam_node.cpp中
四、总结
参考文献 【1】http://wiki.ros.org/asr_halcon_bridge(wiki教程) 【2】https://github.com/asr-ros/asr_halcon_bridge(github代码库) 【3】http://wiki.ros.org/usb_cam(wiki教程) 【4】https://github.com/ros-drivers/usb_cam(github代码库) 【5】https://github.com/yaoli1992/ros_and_halcon(github代码库) 【6】https://blog..net/spy14414/article/details/104945153(博客) 【7】https://www.cnblogs.com/li-yao7758258/p/7372495.html(博客园博客)