田春林,陳李博,馬國(guó)慶,侯茂盛,劉 濤
(1.長(zhǎng)春理工大學(xué) 機(jī)電工程學(xué)院,2.長(zhǎng)春理工大學(xué) 光電工程學(xué)院,長(zhǎng)春 130022)
隨著現(xiàn)代生產(chǎn)的精密化、智能化,無(wú)人智能工廠對(duì)機(jī)器人視覺(jué)的依賴程度越來(lái)越高,尤其是在航空航天和汽車制造領(lǐng)域中的焊接與裝配,物流領(lǐng)域中的碼垛、分揀,工業(yè)2D、3D自動(dòng)化檢測(cè)等應(yīng)用中,機(jī)器人視覺(jué)比比皆是。機(jī)器人視覺(jué)系統(tǒng)通常按照攝像機(jī)與機(jī)械臂的相對(duì)位置不同分Eye-in-Hand系統(tǒng)和Eye-to-Hand系統(tǒng)。其中Eye-in-Hand系統(tǒng)是將相機(jī)安裝在機(jī)械臂末端法蘭盤上,隨著機(jī)械臂的運(yùn)動(dòng)而運(yùn)動(dòng);而Eye-to-Hand系統(tǒng)是將相機(jī)安裝在機(jī)械臂本體之外,工作中不隨其運(yùn)動(dòng)而運(yùn)動(dòng)[1,2]。
在機(jī)器人視覺(jué)系統(tǒng)中常用的手眼標(biāo)定系統(tǒng)一般為Eye-in-Hand系統(tǒng),該系統(tǒng)的加工制造精度主要由手眼標(biāo)定的準(zhǔn)確度決定。因此,研究快速的、準(zhǔn)確的手眼標(biāo)定方法就顯得至關(guān)重要。目前,常用的手眼標(biāo)定方法是使用棋盤格標(biāo)定板與OpenCV或Matlab等軟件相結(jié)合,再控制機(jī)械手進(jìn)行多次位姿變換,利用張正友平面標(biāo)定法來(lái)進(jìn)行標(biāo)定的傳統(tǒng)標(biāo)定法[3]。但該方法操作較為復(fù)雜,受各方面的因素影響較大。因此,為了提高標(biāo)定精度,簡(jiǎn)化操作,本文提出基于Halcon軟件進(jìn)行Eye-in-Hand手眼系統(tǒng)標(biāo)定,為后續(xù)的動(dòng)態(tài)識(shí)別定位抓取提供基礎(chǔ)。
工業(yè)機(jī)器人視覺(jué)系統(tǒng)的手眼標(biāo)定本質(zhì)上是為了獲取相機(jī)圖像坐標(biāo)系Ccam與工業(yè)機(jī)器人基坐標(biāo)系Cbase之間的轉(zhuǎn)換關(guān)系,在進(jìn)行Eye-in-Hand手眼系統(tǒng)標(biāo)定之前,首先要對(duì)相機(jī)進(jìn)行標(biāo)定,獲取攝像機(jī)的內(nèi)外參數(shù)及位姿,為手眼標(biāo)定做前期準(zhǔn)備。在工程實(shí)際應(yīng)用中常用的相機(jī)類型有兩種,分別為線陣CCD相機(jī)與面陣CCD相機(jī)。由于線陣CCD相機(jī)標(biāo)定的模型相對(duì)于面陣CCD相機(jī)標(biāo)定復(fù)雜許多,所以面陣CCD相機(jī)的使用范圍與頻率十分廣泛,因此本文通過(guò)使用面陣CCD相機(jī)來(lái)進(jìn)行相關(guān)驗(yàn)證[4,5]。面陣CCD相機(jī)的模型如圖1所示。
圖1 面陣CCD相機(jī)成像模型
其中,圖像坐標(biāo)系為(r,c),成像平面坐標(biāo)系為(u,v),相機(jī)坐標(biāo)系為Ccam(xc,yc,zc),世界坐標(biāo)系為Cword(xw,yw,zw),空間一點(diǎn)P在相機(jī)坐標(biāo)系下為Pc(xc,yc,zc),在世界坐標(biāo)系下為Pw(xw,yw,zw)。若不考慮相機(jī)徑向畸變,則點(diǎn)Pw在成像平面上的投影點(diǎn)為Pc,若考慮鏡頭畸變則投影點(diǎn)將發(fā)生偏移,投影點(diǎn)將偏移為Pc'點(diǎn)。
將世界坐標(biāo)系下的點(diǎn)轉(zhuǎn)換到相機(jī)成像平面坐標(biāo)系下需要經(jīng)過(guò)以下三個(gè)步驟:
1)世界坐標(biāo)系下的點(diǎn)Pw(xw,yw,zw)變換到相機(jī)坐標(biāo)系下的點(diǎn)Pc(xc,yc,zc),其變換關(guān)系為Pc=RPw+T,改寫成矩陣形式(1):
其中R為變換時(shí)的旋轉(zhuǎn)矩陣,T為平移向量,M為4×4的變換矩陣。
2)由相機(jī)坐標(biāo)系下的點(diǎn)Pc(xc,yc,zc)變換到成像平面坐標(biāo)系下P'c(xi,yi),它們之間為投影的關(guān)系,其變換形式為關(guān)系式(2):
式中f表示的并不是相機(jī)鏡頭的焦距,而是相機(jī)的主焦距。由于在相機(jī)成像過(guò)程中世界坐標(biāo)系上的點(diǎn)與成像平面上的點(diǎn)的連線不經(jīng)過(guò)相機(jī)的光學(xué)中心,所以本文應(yīng)考慮相機(jī)畸變情況。設(shè)為畸變后成像平面上的坐標(biāo),則經(jīng)畸變變換后的變換關(guān)系式(3)為:
其中參數(shù)k值的大小決定了畸變的程度。
其中Sx和Sy是比例縮放因子,它們表示圖像傳感器上水平和垂直方向上相鄰像素之間的距離,Cx和Cy為光心在相機(jī)成像平面上的投影點(diǎn)。由這一系列的推導(dǎo)公式可知,在進(jìn)行相機(jī)標(biāo)定的時(shí)候,本質(zhì)上就是求得該相機(jī)的內(nèi)參數(shù)(f,k,Cx,Cy,Sx,Sy)與外參數(shù)(其平移變換矩陣T與旋轉(zhuǎn)變化矩陣R)的過(guò)程,該標(biāo)定所求得的一系列參數(shù)為后續(xù)機(jī)器人手眼標(biāo)定奠定了基礎(chǔ),也是手眼標(biāo)定過(guò)程中的必要條件。
在機(jī)器人視覺(jué)中,手眼系統(tǒng)模型按照相機(jī)擺放位置的不同通常分為固定相機(jī)和移動(dòng)相機(jī)兩種模型,在應(yīng)用機(jī)器人視覺(jué)技術(shù)時(shí),我們經(jīng)常將相機(jī)固定在機(jī)械手的末端法蘭上,也就是移動(dòng)相機(jī)模型,當(dāng)我們進(jìn)行標(biāo)定時(shí),其目的是為了求解機(jī)器人基坐標(biāo)系、機(jī)器人末端工具坐標(biāo)系、攝像機(jī)坐標(biāo)系、標(biāo)定板坐標(biāo)系與世界坐標(biāo)系的相互轉(zhuǎn)換關(guān)系[6],如圖2所示。
圖2 移動(dòng)相機(jī)模型下各坐標(biāo)系轉(zhuǎn)換關(guān)系示意圖
其中Cbase為機(jī)械手基坐標(biāo)系,Ctool為末端工具坐標(biāo)系,Cobj為標(biāo)定板坐標(biāo)系或物體坐標(biāo)系,Ccam為攝像機(jī)坐標(biāo)系。
手眼標(biāo)定一般情況下為控制機(jī)械手運(yùn)動(dòng),然后在不同位置對(duì)相同物體進(jìn)行拍攝,從而通過(guò)軟件推導(dǎo)計(jì)算出手眼系統(tǒng)的變換矩陣,其運(yùn)動(dòng)前后坐標(biāo)系示意圖如圖3所示。
圖3 移動(dòng)相機(jī)模型下運(yùn)動(dòng)前后各坐標(biāo)系示意圖
其中Cc1、Ce1分別表示機(jī)械臂移動(dòng)前的相機(jī)坐標(biāo)系和機(jī)械臂末端法蘭的坐標(biāo)系,如I1位置;Cc2、Ce2分別表示機(jī)械臂移動(dòng)后的相機(jī)坐標(biāo)系和機(jī)械臂末端法蘭的坐標(biāo)系,I2如位置。通過(guò)機(jī)械臂的兩次移動(dòng)可以得到Cc1、Cc2兩個(gè)坐標(biāo)系之間的關(guān)系定義為C,由于機(jī)械臂是手動(dòng)控制的,可以直接從機(jī)械臂控制器中讀取Ce1、Ce2的關(guān)系,這里定義為D。由于本文使用運(yùn)動(dòng)相機(jī)模型,所以攝像機(jī)坐標(biāo)系和機(jī)械臂末端法蘭坐標(biāo)系的相對(duì)位置是一個(gè)固定值假定為X。假定空間中有一點(diǎn)P,在攝像機(jī)坐標(biāo)系和機(jī)械臂末端法蘭坐標(biāo)系的坐標(biāo)分別為:Pc1,Pc2,Pe1,Pe2,通過(guò)上述關(guān)系可得:
由式(5)與式(6)可得:
由式(7)與式(8)可得:
由式(9)與式(10)聯(lián)立可得:
由此得到了手眼標(biāo)定的基本方程,也可將此方程利用旋轉(zhuǎn)矩陣和平移向量進(jìn)行表示,則可表示為:
展開(kāi)后可得:
通過(guò)上述公式推導(dǎo)得出的手眼標(biāo)定基本方程CX=XD,其依據(jù)就是機(jī)器人末端執(zhí)行器移動(dòng)前后,相機(jī)與機(jī)械臂的相對(duì)位置X不變,最后我們標(biāo)定所要求解出手眼關(guān)系矩陣X,為后續(xù)動(dòng)態(tài)抓取、位置補(bǔ)償做準(zhǔn)備[7]。
本文所采用的標(biāo)定方法為:基于Halcon軟件進(jìn)行相機(jī)與機(jī)械臂的手眼標(biāo)定,通過(guò)多次、多角度、大范圍的移動(dòng)機(jī)械臂然后進(jìn)行拍照并記錄下與之相對(duì)應(yīng)的機(jī)械手控制器上的位姿信息,通過(guò)軟件編程求解其手眼關(guān)系,求解關(guān)系矩陣。具體搭建的手眼標(biāo)定實(shí)驗(yàn)系統(tǒng)包括:UR10六自由度工業(yè)機(jī)器人、維視MV-EM500C工業(yè)相機(jī)與Halcon控制軟件,其中相機(jī)固定在機(jī)械臂末端法蘭上,隨機(jī)械臂運(yùn)動(dòng)而運(yùn)動(dòng),所使用的標(biāo)定板為50mm×50mm的自制打印標(biāo)定板。
在進(jìn)行手眼標(biāo)定之前,首先要進(jìn)行相機(jī)標(biāo)定,以用來(lái)建立機(jī)器人工具坐標(biāo)系與相機(jī)坐標(biāo)系之間的相互轉(zhuǎn)化關(guān)系。與傳統(tǒng)的標(biāo)定方法相比,本文通過(guò)使用Halcon自帶的標(biāo)定板進(jìn)行相機(jī)標(biāo)定不僅操作十分簡(jiǎn)單,而且標(biāo)定精度較高,大大縮減了開(kāi)發(fā)周期,十分便利。如果項(xiàng)目精度要求較高,就必須得使用特制的陶瓷標(biāo)定板,如果項(xiàng)目精度要求不高則可以使用Halcon軟件自帶的標(biāo)定板,根據(jù)需求進(jìn)行打印。
在相機(jī)標(biāo)定完成后,得到了相機(jī)的內(nèi)外參數(shù),就可以進(jìn)行機(jī)械臂的手眼系統(tǒng)標(biāo)定。在此標(biāo)定的過(guò)程中需要在攝像機(jī)的視野內(nèi)進(jìn)行多次的移動(dòng)機(jī)械臂對(duì)標(biāo)定板進(jìn)行拍攝,并且在機(jī)械手控制器中讀取相對(duì)應(yīng)的位姿信息,制作成機(jī)械臂的位姿信息文件,為后續(xù)的手眼標(biāo)定做準(zhǔn)備,通過(guò)上述的過(guò)程就可以利用Halcon軟件進(jìn)行移動(dòng)相機(jī)模型的手眼標(biāo)定。
在標(biāo)定過(guò)程中通過(guò)拍攝標(biāo)定板來(lái)尋找其上標(biāo)志點(diǎn)的中心坐標(biāo),以確定攝像機(jī)內(nèi)外參數(shù),如圖4所示。
圖4 標(biāo)定板和標(biāo)志點(diǎn)坐標(biāo)系的建立
其相機(jī)標(biāo)定的算法流程如圖5所示。
圖5 相機(jī)標(biāo)定算法流程
根據(jù)上述算法流程進(jìn)行相機(jī)標(biāo)定實(shí)驗(yàn),通過(guò)3組每
【】【】
組10張圖像的采集進(jìn)行相機(jī)標(biāo)定,標(biāo)定所得的3組相機(jī)內(nèi)參數(shù)如表1所示。
表1 相機(jī)內(nèi)參值
通過(guò)上述3組標(biāo)定實(shí)驗(yàn)所得數(shù)據(jù)顯示平均誤差均在0.18個(gè)像素左右,均在一個(gè)像素范圍之內(nèi),標(biāo)定精度較高。但為了獲取誤差較小、標(biāo)定精度更高的手眼標(biāo)定結(jié)果,我們選取第3組相機(jī)標(biāo)定的內(nèi)參數(shù),進(jìn)行移動(dòng)相機(jī)系統(tǒng)的手眼標(biāo)定。具體實(shí)驗(yàn)中通過(guò)相機(jī)采集了15張標(biāo)定圖片,并記錄下每一張圖片所對(duì)應(yīng)的機(jī)械手位姿信息,再利用Halcon軟件進(jìn)行標(biāo)定,最后得出的機(jī)械手末端工具坐標(biāo)系相對(duì)于攝像機(jī)坐標(biāo)系的位姿。其標(biāo)定結(jié)果如表2所示。
表2 移動(dòng)相機(jī)系統(tǒng)手眼標(biāo)定值
為了驗(yàn)證手眼標(biāo)定的準(zhǔn)確度和精度,在進(jìn)行手眼標(biāo)定的同時(shí),通過(guò)Halcon中的算子即可對(duì)這15張圖片上的位姿信息進(jìn)行計(jì)算求解手眼標(biāo)定的最大誤差值與均方根值。其結(jié)果如表3所示。
由表3可知,位置移動(dòng)的最大誤差值為0.857mm,旋轉(zhuǎn)角度的最大誤差值為0.903,平移誤差在1mm之內(nèi),旋轉(zhuǎn)角度誤差在1。范圍之內(nèi),精度較好。通過(guò)上述方法,利用Halcon進(jìn)行手眼標(biāo)定,經(jīng)過(guò)進(jìn)行計(jì)算,大約需耗時(shí)30ms即可得到其相應(yīng)的轉(zhuǎn)換矩陣,十分的方便、快捷,且精度較高,相對(duì)于傳統(tǒng)方法有較大的改進(jìn)。通過(guò)該方法還可以簡(jiǎn)單快捷地求得相機(jī)與機(jī)械臂基坐標(biāo)系、標(biāo)定板與相機(jī)坐標(biāo)系、標(biāo)定板與基坐標(biāo)系之間的轉(zhuǎn)換關(guān)系,能夠?yàn)閯?dòng)態(tài)識(shí)別抓取提供良好的基礎(chǔ)。
表3 手眼標(biāo)定系統(tǒng)誤差值
研究的針對(duì)Eye-in-Hand類型機(jī)器人的手眼標(biāo)定方法,不僅能夠簡(jiǎn)單高效的完成標(biāo)定、減少繁雜的操作步驟,還減小了標(biāo)定誤差,使其位置誤差在1mm,角度誤差在1。以內(nèi),提高了系統(tǒng)的標(biāo)定精度,更充分發(fā)揮了Halcon軟件強(qiáng)大的處理功能。通過(guò)編寫圖像處理算法與VC++或C#進(jìn)行聯(lián)合二次開(kāi)發(fā),編寫成適用于多種情況下操作的控制軟件,就可適用于工業(yè)生產(chǎn),進(jìn)行定位抓取碼垛等工作,大大提高了工業(yè)生產(chǎn)效率。
[1]徐德.機(jī)器人視覺(jué)測(cè)量與控制[M].2版.北京:國(guó)防工業(yè)出版社,2011.
[2]盧泉奇,苗同升,汪地,等.基于HALCON的機(jī)械手視覺(jué)抓取應(yīng)用研究[J].光學(xué)儀器,2014,36(6):492-498.
[3]ZHANG ZH Y.A flexible new technique for camera calibration[J].IEEE Transactions on Pattern Analysis & Machine Intelligence,2000,22(11):1330-1334.
[4]羅珍茜,薛雷,等.基于HALCON的攝像機(jī)標(biāo)定[J].電視技術(shù),2010,34(4):100-102.
[5]陳陽(yáng)光,王磊.基于HALCON的機(jī)器人視覺(jué)標(biāo)定[J].光學(xué)儀器,2016,38(4):320-324.
[6]林明盛.焊接路徑的視覺(jué)識(shí)別與機(jī)器人軌跡規(guī)劃[D].廣東工業(yè)大學(xué),2016.
[7]張?jiān)浦?工業(yè)機(jī)器人手眼標(biāo)定技術(shù)研究[D].哈爾濱工程大學(xué),2010.