首先,我們要了解一下常規的手眼標定流程是怎么樣的。
(一)如果吸嘴中心就是法蘭盤的中心則
是下面這樣的:
按九宮格走九個點,取得九組吸嘴的像素坐標與法蘭盤的機械坐標
(圖1)
進行標定
(二)如果吸嘴位置不在法蘭盤中心
則標定流程要復雜些:
人工創建工具坐標Tool 1,把工具坐標中心創建到標定片的Mark點上去
按九宮格走九個點,取得九組特征點的像素坐標與對應的機械坐標
進行標定
這里的難點是創建工具坐標的方法。
人工創建工具坐標,一般按工具向導來創建,需要第二個點同第一個點U軸差180度。對于結構緊湊的機器來說,你是不可能做到的。
即使能做到,這個過程是相當磨人的。
如果想不轉180度創建工具坐標,則需要自己寫算法,而不是使用工具向導來創建。
這里勇哥介紹一下同事用到的一種利用旋轉中心進行標定的方法,它可以用以實現自動標定的需求。
注意:如果你得人工去創建工具坐標的話,就做不到自動標定了。
另外,自動標定是需要機器人里面寫程序,IPC上寫一段自動標定的程序與之配合才可以做到的。
第一步:
機器人吸嘴上放上標定片,走矩形四個位置。取得4組特征點B的像素坐標。
同時取得4組機械坐標,這個機械坐標是機器人U軸中心A的機械坐標。(這個過程簡化了九點標定,只取4個點)
我們同時有了四組像素與機械坐標,用halcon算子vector_to_hom_mat2d進行標定。
此時標定的結果不是我們想要的,它只是把機器人法蘭盤中心(U軸中心)的A點和特征點B標定在了一起。
因為機器人默認使用tool 0工具坐標系工作的,我們這樣標定也就是把特征點和Tool 0工具坐標的中心(這個中心就是法蘭盤的中心)標定在了一起。
這是我們的第一次標定,它標定出來的結果是存在一個固定偏差的,這個偏差就是法蘭盤中心(u軸中心)到特征的固定的距離偏差。
標定成功后,我們獲得一個標定關系的矩陣homMat2D
(圖2)
第二步:
接下來進行三點定圓心的操作。如下圖所示,我們通過旋轉機器人法蘭盤(u軸中心)的中心旋轉出三個位置。
通過三個特征點B,我們可以求出通過它們的一個圓,其圓心是法蘭盤中心(u軸中心)在相機坐標系中的像素坐標。
現在我們求出的圓心只是像素坐標,通過第一步的標定關系矩陣homMat2D,利用halcon算子affine_trans_point_2d可以計算出這個圓心的機械坐標。
重要的地方來了!這個圓心的機械坐標并不是法蘭盤的中心坐標,而是擁有固定偏差值的一個坐標!
注:如果只看圖3,你可能很疑惑,這3個角度明明是繞著U軸中心轉動的呀,為什么說這個中心不是法蘭盤U軸的中心呢?
注意,這個三點的中心只是在像素坐標系里面是U軸的中心!
但是,當你把這個像素轉為機械坐標時,因為你原來第一次標定時的矩陣homMat2D,里面的信息就是法蘭盤中心到特征點的關系,所以此時你把圓心像素坐標轉為機器坐標時,你還是用的這個矩陣homMat2D在轉換。因此你轉化后的機械坐標不是U軸中心,而是法蘭盤到特征點機械坐標的距離。
(圖3)
第三步
接下來進行第二次標定的過程。
有了第3步的Tool 0工具坐標中心的機械坐標,我們可以計算工具1和工具0的毫米偏差,并把最初標定時的Tool0下的四個特征點的機械坐標加上這個毫米偏差,使其變為Tool1下的坐標,Tool1的工具中心就是我們選取的特征點那個地方。
說人話:法蘭盤中心(u軸中心)機械坐標減去 用3點定圓那個圓心的機械坐標,求出固定偏差值。
這個固定偏差就是法蘭盤到特征點機械坐標的距離!
然后我們用這個偏差值更新一下第一次標定時的四組像素與機械坐標數據,重新標定即可。
這次更新的過程其實就是把Tool0下的四組機械坐標轉化為Tool1下的四組機械坐標。
可能你會說,我們目前為止根本沒有Tool1呀,這個沒關系,本步驟不需要Tool1,第四步才會創建Tool1坐標。那個時候用得上三點圓心的機械坐標了。
第四步
最后利用三點定圓的圓心機械坐標,我們來創建Tool 1坐標系。要實現求出工具坐標x,y的過程可以在機器人端寫程序,也可以用C#代碼來實現,但是創建Tool 1坐標系這一步仍然還是需要在機器人端來執行。
最后我們就達到最終的目的:
創建工具坐標Tool 1,把工具坐標中心創建到標定片的Mark點上去,然后生成四組特征點的像素坐標與機械坐標。
大功告成!
(圖1: 4個標定點,3個旋轉點,1個測試點)
(圖2:第一次標定)
(圖3:第二次標定)
下面是標定的輸出信息,請參考:
C#
CT1機械坐標: mechanicalPosX=-22.585 mechanicalPosY=170.856 p1 {X = 1102.115 Y = 1110.051} IsEmpty: false X: 1102.115 Y: 1110.051 p2 {X = 289.26 Y = 1175.885} IsEmpty: false X: 289.26 Y: 1175.885 p3 {X = 1814.609 Y = 1332.285} IsEmpty: false X: 1814.609 Y: 1332.285 圓心位置: {X = 857.9301 Y = 3146.18433} 圓心轉機械坐標: row1AfterTrans={-14.4875695091889} col1AfterTrans={88.6095108466213} 第一次標定后的矩陣: homMat2D: {[-0.040066467819754, -0.000775766400971161, 22.3672349752005, 0.000818720706487857, -0.0402510697036496, 214.656297497753]} 偏差:CT1機械坐標-圓心機械坐標 //double spanX = Convert.ToDouble(mechanicalPosX) - row1AfterTrans.D; //double spanY = Convert.ToDouble(mechanicalPosY) - col1AfterTrans.D; spanX=-8.0974304908110746 spanY=82.246489153378647 第二次標定后的矩陣: homMat2D: {[-0.040066467819754, -0.000775766400971159, 14.2299334255784, 0.000818720706487857, -0.0402510697036496, 296.790879463611]} 1713 等待機器人前往標定點1...... 1728 模板位置:0, X:438.338, Y:560.191, U:0 1729 機器人到達標定點1,當前像素坐標為:457.791;445.217機械坐標為:3.703;197.128 1729 等待機器人前往標定點2..... 1654 模板位置:0, X:414.878, Y:1742.642, U:-0.001 1655 機器人到達2號點,當前像素坐標為:434.001;1627.619機械坐標為:3.704;149.502 1655 等待機器人前往標定點3...... 1601 模板位置:0, X:1679.666, Y:1718.163, U:0.001 1602 機器人到達標定點3,當前像素坐標為:1699.957;1602.742機械坐標為:-46.975;151.532 1602 等待機器人前往標定點4...... 1605 模板位置:0, X:1700.915, Y:601.786, U:0 1606 機器人到達標定點4,當前像素坐標為:1720.958;486.131機械坐標為:-46.975;196.502 1606 開始Tool0下的標定...... 1606 Tool0下標定完成,開始創建工具坐標 1606 等待機器人前往創建工具2號點...... 1609 模板位置:0, X:315.584, Y:1289.472, U:-0.397 1610 機器人到達創建工具2號點,當前像素坐標為:289.26;1175.885 1610 等待機器人前往創建工具3號點...... 1613 模板位置:0, X:1754.706, Y:1432.779, U:0.366 1614 機器人到達創建工具3號點,當前像素坐標為:1814.609;1332.285 1614 等待機器人前往創建工具1號點...... 1615 模板位置:0, X:1081.994, Y:1225.572, U:0.001 1616 機器人到達標創建工具1號點,當前像素坐標為:1102.115;1110.051機械坐標為:-22.585;170.856 1612 Tool0工具中心經標定關系轉化后的坐標為:-14.4477;88.7214 1710 機器人工具1創建完成 1714 模板位置:0, X:1112.962, Y:916.192, U:-0.398 1715 標定精度測試結果:X偏差:0.104mm,Y偏差:0.041mm 1715 標定精度較差 1715 自動標定完成
本次標定成功后,tool1結果為:
x,y,z,u
82.008, 9.569, 0, 0
這里勇哥想知道的是,怎么把tool1結果轉換為tool0呢?
?
tool0
3.703,197.128
tool1:
-4.377,279.296
顯然并不是簡單的把Tool0加上工具坐標這么簡單。
審核編輯:劉清
-
轉換器
+關注
關注
27文章
8694瀏覽量
147085 -
機器人
+關注
關注
211文章
28380瀏覽量
206916 -
IPC
+關注
關注
3文章
346瀏覽量
51902
原文標題:一種利用旋轉中心進行手眼標定的原理性介紹
文章出處:【微信號:vision263com,微信公眾號:新機器視覺】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
評論