機器視覺(二)手眼標定(2D和3D)

手眼標定是指標定機器人座標系統和相機座標系之間的外參數關係。一般分爲相機固定和相機安裝在機器人末端兩種固定方式,分爲Eye-to-hand和Eye-in-hand方式。不論哪種方式其理論基礎都是一樣的。下面以對2D相機和3D相機的外參數進行闡述。

1 2D相機手眼標定

其實不止是2D相機,如果3D相機有圖像輸出,也可以用下面方法進行標定。

不論哪種安裝方式,最終都可以轉化爲下面兩種矩陣方程,分別對應兩種求解方法。

(1)AX = XB

方程的含義如下:

具體推導:

方程一:wMe(i) * eMc = wMo * oMc(i);

方程二:wMe(i +1) * eMc = wMo * oMc(i +1);

由兩個方程可得:

[inv(wMe(i+1)) * wMe(i)] * eMc = eMc * [inv(oMc(i +1)) *oMc(i)]

其中:

wMe: 機器人末端位姿

eMc: 相機座標系相對於末端位姿,即要求的手眼關係。

oMc: 相機座標系在標定板座標系的位姿;

wMo;標定板座標系在機器人基座標系下的位姿。

(2)AX = ZB

方程的含義如下:

 

 

 

具體推導:

wMe * eMc = wMo * oMc;

其中:

wMe: 機器人末端位姿

eMc: 相機座標系相對於末端位姿,即要求的手眼關係。

oMc: 相機座標系在標定板座標系的位姿;

wMo;標定板座標系在機器人基座標系下的位姿。

上述兩種方程,目前網上都有開源庫進行求解,這裏推薦一下CamOdoCal開源庫, Ros裏面好像也是用的它。

我對比了TSAI方法和CamOdoCal的四元數求解方法,最後精度效果都差不多。當然由AX = ZB方程還能直接求解出機器人和標定板系的關係,也就是Z。

上面舉例都是以Eye-in-hand進行舉例,Eye-to-hand理論都是一樣的。

在Eye-in-hand標定過程中, 標定板固定, 機器人末端帶動相機改變不同的位姿去拍標定板,獲得不同的末端位姿參數和標定板位姿參數;在Eye-to-hand過程中,相機固定,標定板固定在機器人末端,變換不同的位姿在相機下面進行成像。獲得不同的末端位姿參數和標定板位姿參數。位姿的變換儘可能的大,次數儘量多。

另外, 在實際機器人工業應用現場,爲了快速簡單調試,點到點的標定方法還是比較常見的,尤其是相機固定的時候,利用mark點的圖像座標和世界座標,直接求home矩陣或者外參數。opencv都有相應的函數,這裏不再贅述。

 

2 3D相機手眼標定

由於3D相機中,可能沒有圖像只有點雲,這樣就不太方便檢測標定板的位姿。可以通過標定球等進行標定。原理如下:

實施過程中就是對同一個標誌物進行多次3D成像,獲取標誌物中心的相機3D座標和此時對應的機器人位姿,然後用最小二乘法進行求解。

在點雲檢測過程中,球的檢測一般比較容易。所以在標定過程中,一般用標定球進行標定。

經過一些項目上的應用測試,此種3D手眼標定方法精度一般在0.5mm之內。

 

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章