ROS和Halcon机器视觉软件随手记

2022-04-29 19:16:59 浏览数 (1)

学院有Halcon机器视觉实验室,先进自动化生产线也是使用Halcon进行视觉处理。

主要参考链接:

1. asr halcon bridge: http://wiki.ros.org/asr_halcon_bridge

2. asr ros: https://github.com/asr-ros

----机器翻译----

描述

软件包包含一个库,用于在ROS和HALCON特定数据结构之间转换点云和图像。

功能

库的结构主要基于cv_bridge -package,更多信息,请查看相关文档。

用法

需要的功能包

包本身对外部ROS包没有任何依赖性(除了ROS的核心安装附带的默认包)。

需要的软件包

为了能够构建此包并在项目中使用它,需要安装一个版本的HALCON图像处理库。到目前为止,它仅使用版本11进行了测试,但理论上它应该适用于更高版本以及数据类型的基本结构没有改变。

需要正确设置环境变量HALCONROOTHALCONARCH,否则cmake将无法找到HALCON安装。如果遵循HALCON的安装指南,通常应该是这种情况。

需要的硬件

需要拥有HALCON安装的有效许可证; 如果因为这个原因获得了usb-dongle,则需要在运行时插入它,否则将收到异常。

启动系统

由于此软件包仅包含库,因此应该看教程中有关如何使用它的更多信息。

ROS节点

没有订阅/发布的主题或服务,也没有配置参数。

教程

要使用此库提供的函数,需要首先将此包设置为项目的依赖项,然后在代码中包含halcon_image.h或halcon_pointcloud.h,具体取决于要转换的内容。

转换图片:

要将sensor_msgs :: Image转换为HalconCpp :: HImage请调用以下函数之一:

代码语言:javascript复制
HalconImagePtr toHalconCopy(const sensor_msgs :: ImageConstPtr&source)
HalconImagePtr toHalconCopy(const sensor_msgs :: Image&source);

返回值是HalconImagePtr对象,它包含HalconCpp :: HImage -Pointer作为名为image的成员。

要将HalconImage再次转换为ROS,请调用以下成员函数之一:

代码语言:javascript复制
sensor_msgs :: ImagePtr toImageMsg()const;
void toImageMsg(sensor_msgs :: Image&ros_image)const;

转换点云:

此步骤类似于图像转换。重要的功能是

代码语言:javascript复制
HalconPointcloudPtr toHalconCopy(const sensor_msgs :: PointCloud2ConstPtr&source);
HalconPointcloudPtr toHalconCopy(const sensor_msgs :: PointCloud2&source);

sensor_msgs :: PointCloud2转换为HalconCpp :: HObjectModel3D(返回的HalconPointcloud中的成员称为模型)。

要将其转换回ROS调用:

代码语言:javascript复制
sensor_msgs :: PointCloud2Ptr toPointcloudMsg()const;
void toPointcloudMsg(sensor_msgs :: PointCloud2&ros_pointcloud)const;

0 人点赞