首頁(yè)  技術(shù)文章  基于Opencv開(kāi)發(fā)的手眼標(biāo)定工具

基于Opencv開(kāi)發(fā)的手眼標(biāo)定工具

發(fā)布時(shí)間:2021-05-25 17:35:49 瀏覽量:5567 作者:Cricket

摘要

3D視覺(jué)引導(dǎo)機(jī)器人的重要前提條件是建立起相機(jī)與機(jī)器人之間的坐標(biāo)關(guān)系胆建,即手眼標(biāo)定。為便于將市面上任意3d結(jié)構(gòu)光相機(jī)與國(guó)內(nèi)外

工業(yè)機(jī)器人結(jié)合做手眼標(biāo)定肘交,基于Opencv開(kāi)發(fā)了此腳本工具笆载,用于離線手眼標(biāo)定,代碼開(kāi)源涯呻,操作簡(jiǎn)單凉驻,適用性廣泛。

正文


器材準(zhǔn)備 

1. 3D結(jié)構(gòu)光相機(jī)一個(gè) 

2. Opencv專用的棋盤格標(biāo)定板复罐,規(guī)格為 9*6 涝登,10mm使用教程 

3. 工業(yè)機(jī)器人一臺(tái) 

4. PC一臺(tái)(帶usb3.0接口) 

5. 手眼標(biāo)定工具軟件包解壓至本地  


數(shù)據(jù)準(zhǔn)備 

1. 離線標(biāo)定 

2. 手眼標(biāo)定,分眼在手上eih和眼在手外eth效诅≌凸觯基礎(chǔ)知識(shí)請(qǐng)自行了解 

https://zivid.atlassian.net/wiki/spaces/ZividKB/pages/72450049/Hand-eye+calibration 

3. 旋轉(zhuǎn)類型一般分2種,常見(jiàn)進(jìn)口機(jī)器人都為abg填帽,例如abb蛛淋,ur,fanuc篡腌,kuka等褐荷;國(guó)產(chǎn)機(jī)器人大部分為gba

4. 其他文件路徑默認(rèn)在當(dāng)前目錄下 

5. 在當(dāng)前目錄下新建robotpose.txt 和caldata文件夾 

(一)標(biāo)定板采樣至少10組RGB數(shù)據(jù),格式為png即可

(二)機(jī)器人pose也相應(yīng)采樣同等組數(shù)嘹悼,打開(kāi)robotpose.txt -> 每行記錄一組笛卡爾(x,y,z,rx,ry,rz)-> 每個(gè)浮點(diǎn)數(shù)之間用半角逗號(hào)

間隔


執(zhí)行標(biāo)定 

1. 下載到本地后叛甫,打開(kāi)手眼標(biāo)定工具 

2. 標(biāo)定工具選擇Opencv,標(biāo)定類型視情況選杨伙,旋轉(zhuǎn)類型視情況選(大多情況是abg) 

3. 點(diǎn)擊標(biāo)定按鈕其监,標(biāo)定結(jié)果和殘差的.yaml文件都生成在當(dāng)前目錄下


Opencv手眼標(biāo)定求解原理概述:

1. 坐標(biāo)系之間的關(guān)系可以用齊次矩陣表示H = [R t],其中H為4*4方陣限匣,R為3*3旋轉(zhuǎn)方陣抖苦,t代表3*1平移向量,任意坐標(biāo)系之間位置的轉(zhuǎn)換米死,都可以用齊次矩陣(旋轉(zhuǎn)和平移)來(lái)描述锌历,下面將簡(jiǎn)述手眼標(biāo)定中各坐標(biāo)系之間的關(guān)系,以及如何通過(guò)Opencv算子解出目標(biāo)手眼矩陣峦筒。先交代一個(gè)前提(齊次矩陣的文字表達(dá))究西。例 A_H_B = [R t] , 把A坐標(biāo)系先經(jīng)過(guò)R旋轉(zhuǎn),再經(jīng)過(guò)t平移物喷,可到達(dá)B坐標(biāo)系卤材,也可以理解成B坐標(biāo)系下的某個(gè)點(diǎn)在A坐標(biāo)系下的位姿.


2. 手眼標(biāo)定涉及以下幾個(gè)坐標(biāo)系

    Pixel_H_Image 圖像平面坐標(biāo)系在像素平面坐標(biāo)系下的位姿

    Image_H_Camera 相機(jī)光心坐標(biāo)系在圖像坐標(biāo)系下的投影位姿

    Camera_H_World 世界坐標(biāo)系(人為定) 在相機(jī)坐標(biāo)系下的位姿

    Base_H_Tool 機(jī)器人末端工具坐標(biāo)系在機(jī)器人基坐標(biāo)系下的位姿遮斥,機(jī)器人正運(yùn)動(dòng)學(xué)計(jì)算得到,即可在示教器上直接查看

    Tool_H_Camera | | Base_H_Camera  手眼矩陣二選一扇丛,根據(jù)相機(jī)固定方式來(lái)定术吗,即相機(jī)坐標(biāo)系在工具坐標(biāo)系下的位姿 或 相機(jī)坐標(biāo)

系在機(jī)器人基坐標(biāo)系下的位姿

    Base_H_Obj 物體在基坐標(biāo)系下的位姿

    World_H_Obj 物體在世界坐標(biāo)系下的位姿

    Pixel_H_Obj 物體在像素平面坐標(biāo)系下的位姿


3. 通過(guò)cv::calibrateCamera()求內(nèi)參

輸入?yún)?shù):Pixel_H_Obj (從多副含有標(biāo)定板的圖像中通過(guò)cv::findChessboardCornersSB()得到),World_H_Obj (通過(guò)vector容

器和棋盤格規(guī)格得到)

輸出參數(shù):Pixel_H_Camera = Pixel_H_Image*Image_H_Camera


4. 通過(guò)cv::solvePnP()計(jì)算得到相機(jī)外參帆精,并得到最終要的標(biāo)定板在相機(jī)下的位姿

輸入?yún)?shù):Pixel_H_Camera藐翎,Pixel_H_Obj ,World_H_Obj(均通過(guò)上述過(guò)程得到)

輸出參數(shù):Camera_H_Obj (每張圖片一個(gè)位姿实幕,放入vector容器)


5. 通過(guò)cv::calibrateHandeye()求出手眼矩陣

眼在手上時(shí):

輸入?yún)?shù):Base_H_Tool(多組位姿,放入vector容器)堤器,Camera_H_World

輸出參數(shù):Tool_H_Camera


眼在手外時(shí):

輸入?yún)?shù):Tool_H_Base(多組位姿昆庇,放入vector容器),Camera_H_World

輸出參數(shù):Base_H_Camera


6. 驗(yàn)算手眼標(biāo)定精度

眼在手上時(shí)闸溃,理論上每組的Base_H_Obj相同整吆,因此:

Base_H_Obj(待求) = Base_H_Tool(已知) * Tool_H_Camera(手眼矩陣) * Camera_H_Obj(已知),求多組Base_H_Obj辉川,估算誤差


眼在手外時(shí)表蝙,理論上每組的Tool_H_Obj相同,因此:

Tool_H_Obj (待求)= Tool_H_Base(已知) * Base_H_Camera(手眼矩陣)乓旗,求多組Tool_H_Obj府蛇,估算誤差


您可以通過(guò)我們的官方網(wǎng)站了解更多的產(chǎn)品信息,或直接來(lái)電咨詢4006-888-532屿愚。

国产福利姬视频在线观看,国产原创激情在线观看网站,亚洲欧美日韩激色国产精品,日韩精品亚洲国产