ABB機器人安裝雙目相機後實現相機手眼標定der步驟詳記

1、手眼標定需要從ABB機器人獲得的所有數據信息

1、如下圖,abb機器人能夠實時的讀取到TCP點相對於工件座標或者基座標或者大地座標(世界座標)的空間座標點(描述TCP點的平移向量)與四元數(描述TCP在該座標系下姿態);手眼標定calibrateHandeye()函數需要使用這些數據;
在這裏插入圖片描述
在這裏插入圖片描述
2、上位機C#程序實時獲取到TCP點座標:
在這裏插入圖片描述


3、將四元數轉換成我們需要的方向餘弦矩陣~,abb機器人具體的姿態旋轉順序不清楚,沒有看到相關描述,假定是先繞z軸旋轉,再繞y軸旋轉,再繞x軸旋轉吧,即zyx的順序,但是這個不是很重要,我覺得手眼標定暫時用不上這個,這個順序影響如何把歐拉角轉換成3 * 3方向餘弦矩陣,以及四元數如何反算出物體的歐拉角,現在只是需要獲取3 * 3旋轉矩陣(也就是方向餘弦矩陣),而從四元數到3 * 3旋轉矩陣的公式是固定死的,只有2個等效形式,任意一個公式都可以完成轉換,如下圖:(PS:截圖自秦永元老師的《慣性導航》295頁,推導過程略)
在這裏插入圖片描述
4、如果機器人無法直接讀取描述TCP點姿態(orient)用的四元數的話,大概就是隻能直接讀取機械臂末端TCP點的歐拉角了(roll、yaw、pitch),這種情況下,必須清楚該機器人姿態繞XYZ軸的旋轉順序,zyx,xyz,yzx還是啥啥啥的,,下圖截圖自Learning OpenCV3,這時計算旋轉矩陣(無人機中稱爲歐拉角描述的方向餘弦矩陣)必須考慮繞軸轉動順序的影響,如果是x,y,z 依次旋轉,則旋轉矩陣R = Rx * Ry * Rz,,其他順序依次類推。
在這裏插入圖片描述

PS : 旋轉矩陣逆矩陣等於其轉置~~~~
在這裏插入圖片描述
這位博主應該是隻能獲取TCP的歐拉角:https://blog.csdn.net/weixin_42203839/article/details/103882739

5、至此,手眼標定需要的ABB機器人數據收集處理完畢~

2、手眼標定在OpenCV中所有需要使用的函數

1、相機內參標定函數:calibrateCamera() ,在進行abb機器人手眼標定前必須已經完成了單個相機的內參標定(確定內參矩陣與畸變向量)
在這裏插入圖片描述

2、相機外參計算函數:solvePNP() , 能夠根據已有的相機內參計算出相機與標定板之間的外參數;
在這裏插入圖片描述
3、手眼標定函數:calibrateHandEye(),需要的數據根據前面的描述已經全部獲得~~

在這裏插入圖片描述

3、ABB機器人安裝雙目相機後手眼標定的步驟描述

準備:
1、安裝雙目相機,固定到ABB機器人末端執行器上;
2、將打印好的標定板固定在一個較好的位置(方便雙目相機採集圖像);
採集:
3、ABB機器人示教器控制TCP運動到合適位置(雙目都有完整標定板圖像),此時,程序拍攝一幅圖像(2張):
    3.1. 注意,這裏同時記錄保存示教器上顯示的TCP點座標(trans)與位姿(orient)3.2. 注意,程序這時必須調用solvePNP()計算此時相機與標定板的外參數,保存下來(注意,這裏針對
    左相機進行計算,雙目相機的基準我取的以左相機爲基準);
    3.3. 至此,第一組數據收集完畢;
4、重複步驟3,依次採集記錄10張以上圖片數據(用於計算的圖片越多越精確),至此,所有需要數據採集完畢;
5、將採集數據整理成calibrateHandEye()需要的類型,傳入進去,進行計算,得到最終需要的手眼矩陣~~

1、按照如上步驟即可完成雙目相機的手眼標定的程序代碼編寫;

4、計算得到手眼矩陣後的後續

有了手眼矩陣、相機內參矩陣,相機畸變向量:
1、先使用OpenCV函數(如BM,SGBM算法)計算得到視差圖(disparity,單位爲像素),
反向投影得到圖像中像素點在左攝像機座標系下的位置座標trans(此時反向投影后的單位依然是像素);
2、左攝像機座標系下點---(手眼矩陣轉換到)--->TCP座標系下(點的話只關注座標,沒有位姿)
3、TCP座標系下點---(實時讀取ABB機器人的示教器數據轉換到)--->工件座標系下(wobj)
4、轉換到工件座標系下即完成ABB機器人對空間點的視覺感知~~~

1、從攝像機座標系下點到TCP,再到wobj的轉換關係,還在思考具體的矩陣變換~,大概一個點從攝像機座標系到工件座標系的轉換流程如下:參考OpenCV中關於calibrateHandEye()函數的描述,有具體的轉換關係~
在這裏插入圖片描述
https://blog.csdn.net/u011906844/article/details/54604228

5、寫啥呢

1、本文是在上一篇博客後的繼續思考:
https://blog.csdn.net/hellohake/article/details/104808149
2、第一次做這個,思路有問題的地方請幫忙指正,嗚嗚,點個贊呀~~~

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