机器人手眼标定
文章目錄
- 前言
- 手眼標定標的是什么
- 手眼標定原理
- 眼在手上(Eye_in_hand)
- 眼在手外(Eye_to_hand)
- 怎么求解AX=XB
- 誤差分析以及如何減少誤差
- 如何實操
前言
??前陣子由于參與一個自動加油機器人的項目,研究了一下機器人的手眼標定。借著寫博客的機會把整個過程理通順、消化消化(其實主要就是健忘~_ ~)
手眼標定標的是什么
??我們開門見山,手眼標定標的是相機到機器人坐標系的變換矩陣。那么為什么要標這個呢?我們以加油機器人為例,要實現對加油蓋的準確抓取,我們需要知道加油蓋的位姿相對于機器人基坐標系下的位姿。這個位姿的求解流程如下圖:
??上圖中包括了眼在手上與眼在手外兩種方案,其實都是類似的,只不過眼在手上標定的是相機到末端,因為相機坐標系和末端坐標系固連,它與末端坐標系的相對位置關系沒變,眼在手外標定的是相機坐標系與機器人極基坐標系的關系,因為相機與機器人都是不動的(標定好就千萬別動機器人與相機,否則要重新標定),故其相對位置關系不變。
??無論是眼在手上還是眼在手外,歸根結底,最終還是要打通從從目標抓取物的抓取坐標系(比如本項目抓取坐標系就在加油蓋上)到機器人基坐標系這一條轉化通路。至于手眼標定可以用在哪些領域我就不贅述了。
手眼標定原理
??我將主要通過兩張圖來分別說明手眼標定原理,用圖總是更為簡明扼要。
??圖均引自:https://blog.csdn.net/yaked/article/details/77161160
眼在手上(Eye_in_hand)
??眼在手上,也就是相機與機械臂的末端坐標系固連,標定板與機器人的基坐標系相對位置關系不變,我們標定的是相機坐標系在末端坐標系下位姿。
眼在手外(Eye_to_hand)
??眼在手外,也就是相機固定不動,標定板與機器人的末端坐標系固連,我們需要標定的是相機坐標系在基坐標系下的位姿。
??綜上,我們可以看出來,不論是眼在手上還是眼在手外,最終都可以化解成求AX=XB的問題。
怎么求解AX=XB
??求解AX=XB的方法主要可以分類兩類:
- 兩步法,先求旋轉再求平移
- 一步法,同時求解平移加旋轉
??具體可參考:手眼標定AX=XB求解方法(文獻總結)
??我這次標定使用的是Tasi-Len方法,這是一種兩步法,也就是先求解出旋轉矩陣,在根據旋轉矩陣求解出平移向量。我們以眼在手上為例進行介紹。
??圖2中,我們對式子進行簡化,baseTend1-1 baseTend2化簡之后就等于end1Tend2,就是兩次不同拍照點之間的末端坐標系之間的齊次變換矩陣(因此Tasi-Len論文中有一句話,就是就算機械臂精度不太好,示教器顯示的末端坐標系在基座標的位姿不準確也不太打緊,只要不同拍照點之間末端坐標系的相對位姿準確就行)。相機坐標系,也就是式子右端進行同樣的處理。
Actually, even if Hgi may be bad, so long as Hgij is good, there is no problem. This is due to the fact that the computational procedure entails only Hgij but not Hgi
——論文原文
?? Tips:接下來的所有齊次變換矩陣都用H來代替,T表示平移矢量,上面用T代表齊次變換矩陣只是為了和圖2、3吻合,實在不想重畫~~??第 i 次與第 j 次拍照點之間,末端坐標系的齊次變換矩陣如下: ??相機坐標系之間的齊次變換矩陣如下 :
??那么上文中的AX=XB可以轉化成如下式子:
??其中,Hcg便是我們需要求解的相機相對于末端的位置關系。
??在開始解釋推導過程之前,有幾個東西需要提前說明一下:
1、論文中的旋轉表示采用的是羅德里格斯旋轉公式。其與旋轉矩陣的區別是旋轉矩陣把三維空間的旋轉看作繞三個正交的向量旋轉的組合,而羅德里格斯旋轉公式把旋轉看作繞某個旋轉軸Pr旋轉特定角度 θ\thetaθ,其實兩者是等效的。
??羅德里格斯大家可以參考這個鏈接:https://blog.csdn.net/qq_36162042/article/details/115488168
2、向量的反對稱陣,設V=[vx,vy,vz],那么有:
Tasi-Len的求解步驟如下:
1.計算 P’cg
?? P’cg定義如下:
??其中Pcg為從末端坐標系轉到相機坐標系的旋轉軸(在末端坐標系下),θ\thetaθRcg為旋轉角度。
??計算公式如下:
??其中Pgij,Pcij分別為第i、j次拍照點末端坐標系、相機坐標系變換之間的旋轉軸,求解方法采用最小二乘法。
2. 計算Pcg
3.計算旋轉矩陣Rcg
4.計算平移向量Tcg
誤差分析以及如何減少誤差
??論文中,旋轉誤差為:
??平移誤差為:
?? 公式中下標12和23表示用于標定的兩組運動數據,例如Pg12 表示第一次運動的旋轉矩陣Rg12對應的旋轉軸,Pg23表示第二次運動的旋轉矩陣Rg23對應的旋轉軸。
1.兩次運動的旋轉軸的夾角:越大越好
?? 從旋轉誤差公式看到,旋轉誤差公式的第一項分母為 sin[<(Pg12, Pg23)],因此旋轉軸Pg12與Pg23的夾角越大,則誤差越小。也可以從求解P’cg公式理解旋轉軸夾角的影響,使用兩組運動數據進行求解則求解方程的系數矩陣為:
?? 從系數矩陣可以看到,兩次運動的旋轉軸的夾角越大,系數矩陣越接近線性獨立。
2. 每次運動的旋轉矩陣對應的旋轉角度:越大越好
?? 兩個誤差公式的分母都有θ\thetaθRg12:因此每次運動的旋轉角度越大,標定精度越高。
3. 相機中心到標定板的距離:距離越小越好
?? 從平移誤差公式可以看到,公式中有|Tc1| ,該項為相機坐標系到標定板坐標系的距離,因此該距離越小越好。
4. 每次運動機械臂末端運動的距離:距離越小越好
?? 在平移誤差公式中包含一項|Tg1 - Tg2|,該項為每次機械臂運動中末端運動的距離,因此該距離越小越好。
5. 機械臂精度影響
??在旋轉誤差公式中,旋轉誤差與機械臂末端位姿誤差呈線性關系,且在平移誤差公式中,平移誤差與機械臂末端位姿誤差接近線性關系,當機械臂末端位置誤差很大時平移誤差受位置誤差影響很大。在以上影響因素中,前4個因素為主要影響因素,機械臂精度為第二影響因素,但是有時候,機械臂末端位置定位精度誤差很大時,機械臂精度影響成為主要因素。
?? 減少誤差的辦法主要有以下幾個:
誤差分析內容轉自:https://blog.csdn.net/Sandy_WYM_/article/details/83996479
如何實操
??推薦一個視頻:https://www.bilibili.com/video/BV1ey4y1b76c/?spm_id_from=333.788.recommend_more_video.2
??Opencv在Opencv4以后有一個專門用于手眼標定的函數calibrateHandeye()
,直接調用即可,里頭集成了多中求解AX=XB的方法,Tasi只是其中的一種,對于眼在手上與眼在手外均可使用。
總結
- 上一篇: ASEMI快恢复二极管型号大全之TO22
- 下一篇: 研后小感