这个首先并不是我一边做实验一遍记录的,而是我做完成以后才想起来做个分享的,所以中途遇到的很多问题,并没有来得及记录下来,现在写的这些都是后话了

首先呢!我们不需要在ROS下写halcon的程序也是可以主要就是要添加halcon 的库而已,但是我也是找了很长时间,发现其实是有国外的大牛做的类似与cv_bridge的开发包,

所以也是有halcon_bridge 的开发包 asr_halcon_bridge This package is used to convert between image-messages of the ROS environment and HALCON-images.

Source: git https://github.com/asr-ros/asr_halcon_bridge.git

这里这是像cv_bridge一样的功能,就是实现数据格式的转换,这样我们就就可以使用ROS的系统实现opencv  halcon PCL (点云库)

三者之间的库函数的使用,这是十分便利 且有很多功能可以直接交叉使用,是多么爽的一件事啊

那么我们下载这个包编译,可能会遇到一些依赖项的问题,这个我就记不得了,但是有一个重要的就是依赖项一般我们都是可以直接安装的

比如ROS-indigo,就直接使用sudo apt-get install ros-indigo-(你想安装的包名)

那如果是一般的库的话我们就像上一篇文章说的那样就是用sudo apt-get install lib(依赖项的名称)-dev,但是如果你找不到,你可以使用

sudo apt-get install lib(依赖项名称)*,(发现没有这边是有一个*的)系统会提示你所有与这个名称相关的依赖项,然后就可以直接补全你想要安装的依赖项即可

可能需要的依赖项  wxWidgets  Eigen  Boost 等等 反正有好多,就试着用上面的方法试试吧

一个简单的教程如下,如果你对这个Halcon这种方式不熟悉,你可以先用cv_bridge 练手网址:http://wiki.ros.org/cv_bridge

我记得我前面的文章里有写过好像,这里就不在赘述,而且对三维点云的格式转换也是同样适用的,都是有在前面的文章有写过

有兴趣的可以返回过去找一下看一下就可以了

Convert an image:

把ROS中的图片的数据 sensor_msgs::Image 转换为Halcon的图片的格式  HalconCpp::HImage :

HalconImagePtr toHalconCopy(const sensor_msgs::ImageConstPtr& source)
HalconImagePtr toHalconCopy(const sensor_msgs::Image& source);

The return-value is a HalconImagePtr object, which contains a HalconCpp::HImage-Pointer as a member called image.

那么把Halcon的图像的格式 HalconImage转为ROS的格式的:

sensor_msgs::ImagePtr toImageMsg() const;
void toImageMsg(sensor_msgs::Image& ros_image) const;

对于三维点云的格式的转换:

把ROS的三维点云的数据转化为halcon的数据格式,转换的步骤和二维图像是差不多的,主要的函数如下

HalconPointcloudPtr toHalconCopy(const sensor_msgs::PointCloud2ConstPtr& source);
HalconPointcloudPtr toHalconCopy(const sensor_msgs::PointCloud2& source);

to convert a sensor_msgs::PointCloud2 to a HalconCpp::HObjectModel3D (the member in the returned HalconPointcloud is called model).

相反把halcon的数据格式转化为ROS的数据格式,然后这样我们就可以使用点云库(PCL)来处理点云

sensor_msgs::PointCloud2Ptr toPointcloudMsg() const;
void toPointcloudMsg(sensor_msgs::PointCloud2& ros_pointcloud) const;

那么这些我们在后期会有机会的话再写一篇关于这样的文章

比如我们读取单目摄像头的数据,然后转化到halcon下进行处理,这是一个很少有人做的事情,当然我们可以使用kinect1.0

或者kinect 2.0获取点云的数据然后转化到halcon的格式下处理,这个都是可以利用这样方法使用的,

之前安装过kinect 2.0 的驱动以及ROS环境下使用kinect2.0的,网上有很多人教你如何安装kinect2.0 的教程所以就不在赘述

比如我们就显示一下,因为这主要的目的就是要使用Ubuntu环境在halcon下处理三维点云的数据

roslaunch kinect2_bridge kinect2_bridge.launch,开启kinect2.0的驱动

可视化命令如下

查看节点之间的关系

可视化的结果

emmmmmmmmmmmmmmmmmmmmmmmmmmmmmmm似乎好像有点跑题了,好了因为安装的过程中真的有很多问题,但是我没有及时的记录

这只是为了后期我们在使用传感器的时候,通过ROS作为一个桥梁的工具,其实使用halon我们不在ROS下也是可以直接使用的,只要CMakeLists.txt文件写好就可以、

但是使用ROS下使用halcon的分享还是比较少的,接下来我就使用一个简单的例子来说明一下使用halcon的方法、

假设我们已经对ROS熟悉的条件下啊,其中的创建工作空间啊,理解ROS的节点这些问题都不在赘述了

在src文件下建立一个halcon_read.cpp文件,如图

都是以前的笔记,都发布一下吧,具体代码在我的github上

关注微信公众号,加入群聊

ubuntu Ros环境halcon的一个程序的更多相关文章

  1. Java(1)开发环境配置及第一个程序Hello World

    作者:季沐测试笔记 原文地址:https://www.cnblogs.com/testero/p/15201468.html 博客主页:https://www.cnblogs.com/testero ...

  2. 最简单的???ubuntu 通过crontab定时执行一个程序

    crontab在liunx系统中下载,我默认是认为下载安装了的.. crontab貌似只能在liunx系统中存在,如果是windows系统我不知道 创建一个名为jiaoben的文件夹存储sh文件,进入 ...

  3. SpringBoot环境搭建及第一个程序运行(详细!)

    spring boot简介 spring boot框架抛弃了繁琐的xml配置过程,采用大量的默认配置简化我们的开发过程. 所以采用Spring boot可以非常容易和快速地创建基于Spring 框架的 ...

  4. 使用IDEA写Python之pytest环境搭建及第一个程序编写

    一.准备篇 Python环境:3.8.3 开发工具:IDEA,对你没有看错 二.IDEA下安装开发环境 1. python的下载 https://www.python.org/downloads/ P ...

  5. FFmpeg 开发环境搭建及第一个程序 Hello FFmpeg 编写

    1. FFmpeg 的安装 ./configure make make install 默认会将 FFmpeg 安装至 /usr/local 目录下(可通过 configure 使用 "-p ...

  6. Ubuntu 16.04 ROS环境配置

    最近新入职一家公司,是搞智能无人驾驶的,用的操作系统是Ubuntu和ros,之前没接触过ros系统,既然公司用那就必须的学习啊,话不多说先装它一个ros玩玩... 1. Ubuntu 安装 ROS K ...

  7. Ubuntu图形界面环境下启动应该程序:

    1.先说下Ubuntu14.04系统开机紫框的问题: Grub theme:黑色屏幕出现紫色边框 There's a minor typo on the grub theme which produc ...

  8. scala 入门Eclipse环境搭建及第一个入门经典程序HelloWorld

    scala 入门Eclipse环境搭建及第一个入门经典程序HelloWorld 学习了: http://blog.csdn.net/wangmuming/article/details/3407911 ...

  9. Python(一) 快速配置Python编译环境与第一个py文件程序

    1. Python基本语法在此不熬述. 2. 到管网下载Python 3.6.x 版本,与本机匹配的版本,如本机是 win7 64 python-3.6.5-amd64 3. 下载IDE:Python ...

随机推荐

  1. BZOJ.1492.[NOI2007]货币兑换(DP 斜率优化 CDQ分治/Splay)

    BZOJ 洛谷 如果某天能够赚钱,那么一定会在这天把手上的金券全卖掉.同样如果某天要买,一定会把所有钱花光. 那么令\(f_i\)表示到第\(i\)天所拥有的最多钱数(此时手上没有任何金券),可以选择 ...

  2. [PA2014]Iloczyn

    [PA2014]Iloczyn 题目大意: 询问\(n(n\le10^9)\)是否是两个斐波那契数之积. 思路: \({\rm fib}(45)<10^9,{\rm fib}(46)>10 ...

  3. Javascript控制台打印Object对象

    Javascript控制台打印Object对象 做项目的时候遇到一个问题,在调试代码时需要打印对象来查看具体数值,想了各种方法也没有实现,最后查资料知道了可以使用JSON.stringify()将ob ...

  4. jQueryUI中Datepicker(日历)插件使用

    atepicker插件的属性: 属性 数据类型 默认值 说明 altField string "" 使用备用的输出字段,即将选择的日期 以另一种格式,输出到另一个控件中, 值为选择 ...

  5. 小甲鱼Python第七讲课后习题

    0.if not(money < 100):上边这行代码相当于? if money>=100 1.assert 的作用是什么? assert “断言”,当这个关键字后边的条件为假的时候,程 ...

  6. pygame-KidsCanCode系列jumpy-part17-mask-collide碰撞检测

    这节我们研究下pygame的几种碰撞检测模式: 如上图,左侧是默认的检测模式:基于矩形的检测(这也是性能最好的模式), 右侧是基于圆形的检测(性能略差于矩形检测). 矩形检测法虽然性能好,但是缺点也很 ...

  7. .NET轻量级ORM框架Dapper入门精通

    一.课程介绍 本次分享课程包含两个部分<.NET轻量级ORM框架Dapper修炼手册>和<.NET轻量级ORM框架Dapper葵花宝典>,阿笨将带领大家一起领略轻量级ORM框架 ...

  8. 深度残差网络(DRN)ResNet网络原理

    一说起“深度学习”,自然就联想到它非常显著的特点“深.深.深”(重要的事说三遍),通过很深层次的网络实现准确率非常高的图像识别.语音识别等能力.因此,我们自然很容易就想到:深的网络一般会比浅的网络效果 ...

  9. Jetpack 架构组件 LiveData ViewModel MD

    Markdown版本笔记 我的GitHub首页 我的博客 我的微信 我的邮箱 MyAndroidBlogs baiqiantao baiqiantao bqt20094 baiqiantao@sina ...

  10. js实现图片旋转

    1.以下代码适用ie9版本 js代码如下: function rotate(o,p){ var img = document.getElementById(o); if(!img || !p) ret ...