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