ROS和Halcon機器視覺軟體隨手記
學院有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進行了測試,但理論上它應該適用於更高版本以及資料型別的基本結構沒有改變。
需要正確設定環境變數HALCONROOT和HALCONARCH,否則cmake將無法找到HALCON安裝。如果遵循HALCON的安裝指南,通常應該是這種情況。
需要的硬體
需要擁有HALCON安裝的有效許可證; 如果因為這個原因獲得了usb-dongle,則需要在執行時插入它,否則將收到異常。
啟動系統
由於此軟體包僅包含庫,因此應該看教程中有關如何使用它的更多資訊。
ROS節點
沒有訂閱/釋出的主題或服務,也沒有配置引數。
教程
要使用此庫提供的函式,需要首先將此包設定為專案的依賴項,然後在程式碼中包含halcon_image.h或halcon_pointcloud.h,具體取決於要轉換的內容。
轉換圖片:
要將sensor_msgs :: Image轉換為HalconCpp :: HImage,請呼叫以下函式之一:
HalconImagePtr toHalconCopy(const sensor_msgs :: ImageConstPtr&source) HalconImagePtr toHalconCopy(const sensor_msgs :: Image&source);
返回值是HalconImagePtr物件,它包含HalconCpp :: HImage -Pointer作為名為image的成員。
要將HalconImage再次轉換為ROS,請呼叫以下成員函式之一:
sensor_msgs :: ImagePtr toImageMsg()const;
void toImageMsg(sensor_msgs :: Image&ros_image)const;
轉換點雲:
此步驟類似於影象轉換。重要的功能是
HalconPointcloudPtr toHalconCopy(const sensor_msgs :: PointCloud2ConstPtr&source);
HalconPointcloudPtr toHalconCopy(const sensor_msgs :: PointCloud2&source);
將sensor_msgs :: PointCloud2轉換為HalconCpp :: HObjectModel3D(返回的HalconPointcloud中的成員稱為模型)。
要將其轉換回ROS呼叫:
sensor_msgs :: PointCloud2Ptr toPointcloudMsg()const;
void toPointcloudMsg(sensor_msgs :: PointCloud2&ros_pointcloud)const;
----