ubuntu Ros環境halcon的一個程序


這個首先並不是我一邊做實驗一遍記錄的,而是我做完成以后才想起來做個分享的,所以中途遇到的很多問題,並沒有來得及記錄下來,現在寫的這些都是后話了

首先呢!我們不需要在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上

 

 

 關注微信公眾號,加入群聊


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM