halcon算法庫中各坐標系,位姿的解釋及原理


在學習halcon和光學原理的過程中,經常會聽到像素坐標系,窗口坐標系,世界坐標系等等,很多時候會一頭霧水,這時候一定要仔細甄別,了解其原理,才能知道在視覺測量,手眼標定過程中各坐標系基本轉換,因此基本功一定要扎實,話不多說,上干貨!!!!

各坐標系定義

世界坐標系(剛性變換到)-----------相機坐標系    (外參R與t)   

任何一個坐標系的建立,主要是原點位置坐標軸方向。在相機標定的過程中,需要定義世界坐標系。世界坐標系便是我們看到的實際物理世界,那么怎么定義世界坐標系呢?答案就在halcon提供的圓點標定板上。

世界坐標系是三維的(原點自定義,定義在陣列標定板中心上,每幅圖都不一樣)示例圖為:

根據標定板的左上角三角符號可以判定世界坐標系*XY*軸方向,*Z*軸方向根據右手螺旋定則判定。

相機坐標系(透視投影,3D到2D)-----------到圖像物理坐標 (焦距f)

圖像物理坐標系(平移)-------------到圖像像素坐標系 (u0,v0)也是內參

像素坐標系便是我們從halcon窗口里看到的圖像像素坐標,查看一個圖像的像素坐標,只需要按住Ctrl鍵,鼠標在圖像上移動,便可以看到當前鼠標位置的圖像像素坐標值。謹記,在仿射變化等圖像處理中都是以像素坐標系下開展的

窗口坐標系指的是建立圖像顯示窗口的大小,比如說

dev_open_window (0, 0, 512, 512, 'black', WindowHandle)

這里面的512便是指的是窗口的大小,跟圖像像素無關。

總結下各坐標系的定義:
世界坐標系:真實世界中物體實際位置(三維)
相機坐標系:以鏡頭光心為原點,光軸為Z軸(三維)
圖像物理坐標系:以成像圖像中心維原點(二維)
像素坐標系:原點在圖像左上角(二維)
因此,圖像測量項目中,從世界坐標系到像素坐標系是一個三維到二維的過程,要找到矩陣轉換中相關系數(內參與外參)


相關的halcon算子是:

//像素坐標系到世界坐標系
image_points_to_world_plane()
//三維坐標點的轉換
affine_trans_point_3d()
//相機坐標系下的點轉換為像素坐標系
project_3d_point()

Halcon中的位姿說明

位姿指的是位置和姿態。位姿是一個坐標系相對於另一個坐標系!牽扯到兩個坐標系有6個參數,x,y,z,rx,ry,rz。代表的是坐標系原點的相對x,y,z平移和坐標系坐標軸方向的相對旋轉。

必須注意的是:halcon中pose的值都是以**米**為單位的,而**機器人**常用**毫米**為單位,所以在一些手眼標定的項目中注意單位的換算(這都是曾經做項目過程中血的教訓啊)

代表的是世界坐標系相對於camera坐標系(注意是誰相對於誰)

位姿可以轉換成齊次坐標矩陣,其實質是數學表達方式的改變
在Halcon中,HomMat3D,是3維齊次坐標矩陣,4*4類型
HomMat2D,是2維齊次坐標矩陣,3*3類型(關於為什么矩陣表示齊次坐標系時會增加一行,大家可以自行百度學習一下哦)

在Halcon中關於pose的算子有:

//將pose轉化為齊次坐標矩陣
hom_mat3d_to_pose()
find_marks_and_pose()
//設置新的pose
set_origin_pose()
//將齊次坐標矩陣轉化為pose
pose_to_hom_mat3d()

在Halcon中有關於手眼標定,眼在手外的示例例子中:
obj:標定板坐標系(世界坐標系) 【動】
cam:相機坐標系 【 靜】
tool:工具坐標系(絲桿末端)【動】
base:機器人基坐標系 【靜】

2個移動坐標系,2個靜止坐標系(4個坐標系形成閉環!!!)

學習Halcon做手眼標定一定要掌握位姿的基礎理論。

結尾

本篇博客對halcon中坐標系和位姿做了說明,其實理解這些原理不單單有助於理解halcon,在機器人控制技術,自動化技術上都會有很好的幫助,大家在學習的過程中不僅僅要知道邏輯,更是要對基本理論有所了解,這才是提高技術水平的不二法門!!!如果您覺得有用的話,幫忙點贊支持哦,創作不易,感謝大家


免責聲明!

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



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