楊宏韜,蘇 航,李秀蘭,于微波,熊鳳鑾,李 鑫
(長春工業(yè)大學(xué)電氣與電子工程學(xué)院,長春 130012)
在現(xiàn)代化生產(chǎn)車間,將機(jī)器視覺系統(tǒng)加裝到機(jī)器人本體上,賦予機(jī)器臂視覺功能,通過“手—眼”之間協(xié)同工作,可以自動(dòng)完成各類工件的焊接、搬運(yùn)、分揀、加工等任務(wù),大大提高企業(yè)生產(chǎn)效率[1]。結(jié)構(gòu)光視覺系統(tǒng)因其非接觸式、抗干擾能力強(qiáng)和精度適中的優(yōu)點(diǎn)而廣泛應(yīng)用于自動(dòng)化焊接系統(tǒng)和復(fù)雜零件測量等領(lǐng)域。
結(jié)構(gòu)光視覺裝置主要由固定于機(jī)器人末端的相機(jī)和線結(jié)構(gòu)光發(fā)射器構(gòu)成。對結(jié)構(gòu)光視覺裝置參數(shù)的標(biāo)定關(guān)系著系統(tǒng)定位精度,決定著能否完成工業(yè)現(xiàn)場中的任務(wù)。目前的標(biāo)定方法往往需要將相機(jī)參數(shù)標(biāo)定和光平面標(biāo)定分開進(jìn)行,如ZHANG[2]標(biāo)定法,其精確度高、操作簡便等優(yōu)點(diǎn)使其被廣泛應(yīng)用于相機(jī)離線標(biāo)定,但該方法依賴于造價(jià)高昂的高精度靶標(biāo),而且一旦在使用過程中對靶標(biāo)面造成磨損或污損,此靶標(biāo)便無法再應(yīng)用于其它工業(yè)環(huán)境中,重復(fù)利用價(jià)值較低。田少兵等[3]對ZHANG[2]的方法進(jìn)行了改進(jìn),利用粒子群優(yōu)化算法將標(biāo)定結(jié)果進(jìn)行優(yōu)化,獲得了較好的精度。張黎爍等[4]提出了一種只需場景中3個(gè)特征點(diǎn)的方法,但其主要通過求解擴(kuò)展焦點(diǎn)(FOE)來進(jìn)行相機(jī)內(nèi)參和手眼標(biāo)定,在復(fù)雜的工業(yè)環(huán)境中,拍攝到的圖片質(zhì)量有限,會(huì)造成求解FOE位置不穩(wěn)定,從而影響相機(jī)標(biāo)定結(jié)果,造成結(jié)構(gòu)光視覺裝置精度無法滿足焊縫跟蹤要求。
對光平面的標(biāo)定,陳曉輝等[5]提出了基于線結(jié)構(gòu)光單平面標(biāo)定的3D成像方法,簡化了標(biāo)定步驟,提升了系統(tǒng)的穩(wěn)定性。魏振忠等[6]將兩個(gè)相互垂直的剛性平面作為靶標(biāo),利用交比不變原理對光平面進(jìn)行標(biāo)定,雖提高了標(biāo)定精度,但其靶標(biāo)成本較高,且相互垂直的靶標(biāo)平面易產(chǎn)生遮擋,影響標(biāo)定效果。張瑞峰等[7]提出了一種不需激光條紋與棋盤格相交的新標(biāo)定方法,采用了更多擬合光平面的特征點(diǎn),提升了標(biāo)定精度。吉峰等[8]設(shè)計(jì)了一種無需特制靶標(biāo)的標(biāo)定方法,該方法只需要場景中的3個(gè)特征點(diǎn)即可完成光平面的標(biāo)定,操作簡便,但精度有限,無法滿足工業(yè)環(huán)境中部分精度要求較高的任務(wù)。
為了解決上述方法中需要特制靶標(biāo)和標(biāo)定過程復(fù)雜繁瑣,精度較低等問題,本文提出了一種基于非特制靶標(biāo)的結(jié)構(gòu)光視覺自動(dòng)標(biāo)定方法,并設(shè)計(jì)了相應(yīng)的自動(dòng)標(biāo)定系統(tǒng)。該系統(tǒng)通過機(jī)器人帶動(dòng)結(jié)構(gòu)光視覺裝置做兩組運(yùn)動(dòng),即可求解出相機(jī)參數(shù)、手眼參數(shù)和光平面方程。該系統(tǒng)具有標(biāo)定流程自動(dòng)化,靶標(biāo)易獲得、可重復(fù)利用率高等特點(diǎn),精度也可滿足物體測量和焊縫跟蹤等任務(wù)。
系統(tǒng)在硬件方面由FANUC LR Mate 200iD機(jī)器人、大恒水星MER2-502-79U3C相機(jī)、線結(jié)構(gòu)光發(fā)射器和上位機(jī)組成,如圖1所示。
圖1 結(jié)構(gòu)光視覺裝置硬件組成
系統(tǒng)在軟件方面由人機(jī)交互模塊、位姿存儲(chǔ)模塊、圖像采集模塊、運(yùn)動(dòng)記錄模塊、圖像處理模塊、相機(jī)和手眼參數(shù)標(biāo)定模塊、光平面標(biāo)定模塊和通信模塊組成。采用Visual Studio實(shí)現(xiàn)人機(jī)交互模塊、圖像采集模塊、位姿存儲(chǔ)模塊、運(yùn)動(dòng)記錄模塊和通信模塊的開發(fā)。相機(jī)和手眼標(biāo)定模塊與光平面標(biāo)定模塊由OpenCV和C++完成開發(fā),利用上述模塊生成的動(dòng)態(tài)庫(DLL)實(shí)現(xiàn)功能。
系統(tǒng)流程如圖2所示,上位機(jī)先調(diào)用位姿存儲(chǔ)模塊,將位姿信息通過以太網(wǎng)與機(jī)器人通訊,機(jī)器人控制器判斷機(jī)器人是否到達(dá)指定位置。然后上位機(jī)給機(jī)器人發(fā)送啟動(dòng)信號(hào)DI,使機(jī)器人運(yùn)行至設(shè)定點(diǎn)位,機(jī)器人到達(dá)設(shè)定點(diǎn)位后控制器生成信號(hào)DO并發(fā)送給上位機(jī),上位機(jī)接收到DO信號(hào)后調(diào)用圖像采集模塊,發(fā)送信號(hào)給相機(jī)拍攝圖片,并調(diào)用運(yùn)動(dòng)記錄模塊記錄運(yùn)動(dòng)次數(shù),當(dāng)次數(shù)到達(dá)增加至第二組運(yùn)動(dòng)時(shí),上位機(jī)發(fā)送啟動(dòng)信號(hào)給線激光發(fā)射器,然后觸發(fā)相機(jī)拍攝圖片。拍攝所有圖片后,上位機(jī)調(diào)用圖像處理模塊將圖片進(jìn)行處理,圖像處理模塊主要包括3部分,分別為圖像預(yù)處理、特征點(diǎn)提取和激光條紋中心線提取功能,處理完成后依次調(diào)用相機(jī)和手眼標(biāo)定模塊與光平面標(biāo)定模塊,完成結(jié)構(gòu)光視覺裝置的標(biāo)定。
圖2 系統(tǒng)工作流程
對結(jié)構(gòu)光視覺裝置進(jìn)行標(biāo)定的前提是對相機(jī)參數(shù)進(jìn)行標(biāo)定,因此本文設(shè)計(jì)的系統(tǒng)分兩階段進(jìn)行,分別為相機(jī)和手眼參數(shù)標(biāo)定階段與光平面標(biāo)定階段,利用非特制靶標(biāo)表面的圖像信息進(jìn)行標(biāo)定。
相機(jī)將非特制靶標(biāo)上的點(diǎn)轉(zhuǎn)換為二維平面上的坐標(biāo)點(diǎn),轉(zhuǎn)換過程可以用數(shù)學(xué)模型來表達(dá),這個(gè)數(shù)學(xué)模型就是相機(jī)的內(nèi)外參數(shù)。相機(jī)參數(shù)標(biāo)定作為機(jī)器視覺領(lǐng)域中不可缺少的環(huán)節(jié),其結(jié)果的準(zhǔn)確性和穩(wěn)定性會(huì)嚴(yán)重影響到相機(jī)能否完成工作任務(wù)。相機(jī)可視為針孔成像模型[9],如圖3所示。
圖3 針孔成像模型
圖3中,OW-XWYWZW為世界坐標(biāo)系,OC-XCYCZC為相機(jī)坐標(biāo)系,O-UV為圖像坐標(biāo)系。非特制靶標(biāo)中任意一點(diǎn)P,經(jīng)過相機(jī)投射至虛擬成像平面上為P′,點(diǎn)P在世界坐標(biāo)系下的坐標(biāo)設(shè)為(xW,yW,zW),在相機(jī)坐標(biāo)系下的坐標(biāo)設(shè)為(xC,yC,zC)。點(diǎn)P′坐標(biāo)設(shè)為(u,v),則點(diǎn)P′和點(diǎn)P的關(guān)系可用式(1)和式(2)表示[10]為:
(1)
(2)
式中,Min為相機(jī)內(nèi)參矩陣;kx和ky分別為成像平面到圖像平面的坐標(biāo)在x軸和y軸上的轉(zhuǎn)換參數(shù);u0和v0分別為相機(jī)主點(diǎn)在圖像平面上的橫、縱坐標(biāo);s為比例因子;Mout為相機(jī)相對于物體的外參矩陣;R為3×3的旋轉(zhuǎn)變換矩陣;t為3×1的平移矩陣;O=(0,0,0)。
由相機(jī)標(biāo)定可以得到目標(biāo)物體在相機(jī)坐標(biāo)系下與世界坐標(biāo)系的坐標(biāo)變換關(guān)系,而對于一個(gè)安裝在機(jī)器人末端的結(jié)構(gòu)光視覺裝置來說,需要知道機(jī)器人在任意姿態(tài)下結(jié)構(gòu)光視覺裝置所在位置,因此還需要求取手眼參數(shù),得到相機(jī)與機(jī)器人末端之間的變換關(guān)系,系統(tǒng)各坐標(biāo)系建立和變換關(guān)系如圖4所示。
圖4 各坐標(biāo)系和轉(zhuǎn)換關(guān)系
圖4中Te為機(jī)器人基坐標(biāo)系B與機(jī)器人末端坐標(biāo)系E之間的轉(zhuǎn)換矩陣;Tm為機(jī)器人末端坐標(biāo)系E與相機(jī)坐標(biāo)系C之間的轉(zhuǎn)換矩陣;Tw為機(jī)器人基坐標(biāo)系B與世界坐標(biāo)系W的轉(zhuǎn)換矩陣;Tp為世界坐標(biāo)系W與相機(jī)坐標(biāo)系C之間的轉(zhuǎn)換矩陣,由圖5可知:
(a) 機(jī)器人移動(dòng)前 (b) 機(jī)器人移動(dòng)后圖5 光平面與物體交點(diǎn)
(3)
本系統(tǒng)采用基于單特征點(diǎn)的相機(jī)標(biāo)定方法[11],該方法需場景中的一個(gè)特征點(diǎn),利用機(jī)器人帶動(dòng)相機(jī)做8次平移運(yùn)動(dòng)求出相機(jī)參數(shù)和3次末端位姿改變運(yùn)動(dòng)求出手眼參數(shù)。
光平面作為輔助平面,可以彌補(bǔ)單目相機(jī)無法獲取目標(biāo)物體深度的缺點(diǎn)。由于結(jié)構(gòu)光視覺裝置中,激光裝置射出的光平面與相機(jī)相對位置不變,所以標(biāo)定任務(wù)為求取光平面與相機(jī)坐標(biāo)系的轉(zhuǎn)換矩陣。
在機(jī)器人處于初始位置時(shí),激光發(fā)射器發(fā)出的線激光照射到物體,此時(shí)會(huì)與物體產(chǎn)生兩個(gè)交點(diǎn)P1和Q1,如圖5a所示。對相機(jī)進(jìn)行內(nèi)參和手眼標(biāo)定后,s即是外參標(biāo)定結(jié)果中平移矩陣t的z軸坐標(biāo),因此可以通過提取這兩個(gè)點(diǎn)的像素坐標(biāo),并通過式(1)坐標(biāo)變換將其轉(zhuǎn)換為相機(jī)坐標(biāo)系下的坐標(biāo),分別記為(xcp1,ycp1,zcp1)和(xcq1,ycq1,zcq1)??刂茩C(jī)器人保持末端姿態(tài)不變,使其沿著ZB軸運(yùn)動(dòng),此時(shí)點(diǎn)P和點(diǎn)Q的位置會(huì)發(fā)生改變,設(shè)為P2和Q2,如圖5b所示。
s為比例因子,當(dāng)相機(jī)位置改變后導(dǎo)致s發(fā)生變化,所以不能再通過式(1)求出P1和Q1在相機(jī)坐標(biāo)系下的坐標(biāo)。若初始位置相機(jī)垂直于平臺(tái),機(jī)器人基坐標(biāo)系B和世界坐標(biāo)系W的各坐標(biāo)軸相互平行,則可以通過機(jī)器人的位移信息獲得新的s,記為s2。此時(shí),提取P2和Q2的像素坐標(biāo)后,利用式(1)即可將兩點(diǎn)轉(zhuǎn)至相機(jī)坐標(biāo)系下,記為(xcp2,ycp2,zcp2)和(xcq2,ycq2,zcq2)。多次使機(jī)器人沿著z軸運(yùn)動(dòng),則會(huì)產(chǎn)生多個(gè)P點(diǎn)和Q點(diǎn),記為Pi和Qi,求出各點(diǎn)在相機(jī)坐標(biāo)系下的坐標(biāo)。
由相對運(yùn)動(dòng)可知,機(jī)器人沿著其基坐標(biāo)系的ZB軸運(yùn)動(dòng)可視為物體沿著機(jī)器人ZB軸運(yùn)動(dòng),可知點(diǎn)Pi和Qi均為在光平面上的點(diǎn),本文通過5次此類平移運(yùn)動(dòng)獲取P點(diǎn)和Q點(diǎn)各5個(gè),利用最小二乘法將這些點(diǎn)擬合從而獲取光平面方程。在獲得光平面方程后,便可提取在線激光上照射之物體上的任意一點(diǎn)的像素坐標(biāo),通過坐標(biāo)變換獲得此點(diǎn)在基坐標(biāo)系下的坐標(biāo)。
本文設(shè)計(jì)的是一種無需特制靶標(biāo)的自動(dòng)標(biāo)定系統(tǒng),對于靶標(biāo)的要求為易獲得、成本低、可重復(fù)使用,因此采用例如身份證或銀行卡等卡片狀物體,將其上的圖像信息作為特征。本文設(shè)計(jì)的系統(tǒng)由兩階段組成,兩階段提取的特征點(diǎn)不同。
第1階段為了提取多幅圖像中共有的特征點(diǎn),本系統(tǒng)采用了圖像匹配的方法,將多幅圖像依次匹配,取出所有圖像共有的特征點(diǎn)匹配對中誤差最小的特征點(diǎn)作為共有特征點(diǎn),然后利用基于單特征點(diǎn)的標(biāo)定相機(jī)標(biāo)定方法即可求出相機(jī)參數(shù)和手眼參數(shù)。第2階段提取激光發(fā)射器照射至非特制靶標(biāo)的兩端的端點(diǎn)作為特征點(diǎn)。
由于相機(jī)在采集圖像過程中目標(biāo)物體易受到其所在環(huán)境中光照因素和相機(jī)本身材質(zhì)因素影響,在圖像傳輸過程中易受到電路構(gòu)成方式和電子元件自身屬性影響從而產(chǎn)生噪聲,為了提升圖像匹配精度,獲得更好的匹配效果,則需要對圖像進(jìn)行預(yù)處理,減小噪聲產(chǎn)生的影響。
首先,機(jī)器人在初始位置對靶標(biāo)拍照,獲取到如圖6a所示的原圖像,圖像進(jìn)行感興趣區(qū)域提取(ROI)作為匹配模板如圖6b所示,從而減少后續(xù)與機(jī)器人在其他位置獲取的圖像進(jìn)行匹配的時(shí)間,然后對所有圖片采用拉普拉斯算子(Laplace)銳化處理,補(bǔ)償圖像輪廓,加強(qiáng)圖像的邊緣信息,然后使用限制對比度自適應(yīng)直方圖均衡化(Clahe)處理[12],達(dá)到削弱噪點(diǎn)保留圖像局部信息的效果,圖像處理效果如圖6c所示。
(a) 原始圖像 (b) ROI (c) 銳化和增強(qiáng)后圖6 圖像處理效果圖
在第1階段中,利用BRISK特征匹配算法[13]進(jìn)行圖像匹配,如圖7a所示,然后使用隨機(jī)抽樣一致性算法[14](RANSAC),對錯(cuò)誤的匹配點(diǎn)進(jìn)行刪除處理,使用漢明距離找到所有配對的匹配點(diǎn)中平均漢明距離最小的點(diǎn),將此點(diǎn)作為共有特征點(diǎn),匹配結(jié)果如圖7b所示。
(a) Brisk特征匹配 (b) 特征點(diǎn)圖7 圖像匹配
在第2階段中,采用Steger算法[15]提取出激光條紋的中心線,如圖8a所示,然后將中心線的像素點(diǎn)利用最小二乘法擬合為一條直線,計(jì)算連續(xù)兩個(gè)像素點(diǎn)之間的像素距離,與前一點(diǎn)之間距離最大的點(diǎn)即為激光發(fā)射器照射至靶標(biāo)兩端的端點(diǎn),如圖8b所示。
(a) Steger中心線提取 (b) 特征點(diǎn)圖8 激光條紋特征提取
本文設(shè)計(jì)的結(jié)構(gòu)光視覺自動(dòng)標(biāo)定系統(tǒng),具體標(biāo)定流程如下:
(1)調(diào)整機(jī)器人末端位姿,使相機(jī)垂直于平臺(tái),設(shè)為初始位置。調(diào)節(jié)非特制靶標(biāo)位置,檢驗(yàn)激光發(fā)射器發(fā)射的線激光是否能夠與靶標(biāo)邊緣產(chǎn)生兩個(gè)交點(diǎn),相機(jī)的視野是否能夠清晰成像。
(2)機(jī)器人帶動(dòng)結(jié)構(gòu)光視覺裝置做第一組運(yùn)動(dòng),如圖9所示,菱形點(diǎn)為初始位置,拍攝圖片后按圖中箭頭所示,做8次平移運(yùn)動(dòng)至圓形點(diǎn)位和3次改變末端姿態(tài)運(yùn)動(dòng)至三個(gè)矩形點(diǎn)位,對靶標(biāo)拍照,并記錄拍照時(shí)機(jī)器人的姿態(tài)信息,然后回到初始位置。
圖9 機(jī)器人第一組運(yùn)動(dòng)點(diǎn)位示意圖 圖10 機(jī)器人第二組運(yùn)動(dòng)點(diǎn)位示意圖
(3)機(jī)器人帶動(dòng)結(jié)構(gòu)光視覺裝置做第二組運(yùn)動(dòng),由上位機(jī)發(fā)出信號(hào)啟動(dòng)線激光發(fā)射器,機(jī)器人做5次平移運(yùn)動(dòng)至矩形點(diǎn)位,拍攝圖片并記錄機(jī)器人的位移信息,然后回到初始位置,如圖10所示。
(4)將獲得的圖片進(jìn)行處理,通過調(diào)用由OpenCV編寫的程序計(jì)算出相機(jī)參數(shù),手眼參數(shù)和光平面方程。
實(shí)驗(yàn)選取醫(yī)療卡和身份證作為靶標(biāo)1和靶標(biāo)2,并分別進(jìn)行了多次實(shí)驗(yàn),對多次實(shí)驗(yàn)結(jié)果的參數(shù)取均值作為最終結(jié)果,如表1和表2所示。
表1 醫(yī)療卡作為靶標(biāo)所得標(biāo)定結(jié)果
表2 身份證作為靶標(biāo)所得標(biāo)定結(jié)果
由表1和表2可知,在更換靶標(biāo)后標(biāo)定結(jié)果較為接近,本系統(tǒng)對于具有清晰圖像信息的卡片類非特制靶標(biāo)的選取有較強(qiáng)的適應(yīng)性。
對于所構(gòu)建的結(jié)構(gòu)光視覺裝置的精度驗(yàn)證方法如下:以制造精度為0.01 mm,寬度分別為30 mm,50 mm和60 mm的標(biāo)準(zhǔn)塊作為驗(yàn)證對象,如圖11所示。
圖11 標(biāo)準(zhǔn)塊尺寸 圖12 驗(yàn)證方法
控制機(jī)器人移動(dòng),使線結(jié)構(gòu)光打到標(biāo)準(zhǔn)塊的邊緣上,線激光會(huì)與標(biāo)準(zhǔn)塊的兩頂點(diǎn)相交,如圖12所示,提取出M1和M2兩點(diǎn)在像素坐標(biāo)系下的坐標(biāo),利用標(biāo)定結(jié)果將兩點(diǎn)轉(zhuǎn)換為機(jī)器人基坐標(biāo)系下的坐標(biāo)。
改變標(biāo)準(zhǔn)塊位置,對3種標(biāo)準(zhǔn)塊分別進(jìn)行多次實(shí)驗(yàn),計(jì)算出M1和M2在基坐標(biāo)系下的坐標(biāo)如表3所示。
由表3所得數(shù)據(jù),求出兩點(diǎn)之間距離并與標(biāo)準(zhǔn)塊尺寸進(jìn)行比較,結(jié)果如表4所示。
表4 誤差計(jì)算結(jié)果
由表4可知,工件尺寸測量結(jié)果和工件的實(shí)際尺寸的平均絕對誤差在均在0.05左右,平均絕對誤差的均值為0.049 6 mm,可以滿足工業(yè)現(xiàn)場的工作需求,相對誤差較為穩(wěn)定,均值為0.11%,多次測量的標(biāo)準(zhǔn)偏差的均值為0.048 37,由此可得出本系統(tǒng)有較好的穩(wěn)定性和較高的精度。誤差來源在于特征點(diǎn)匹配時(shí)對特征點(diǎn)提取產(chǎn)生的誤差以及提取線激光平面與物體產(chǎn)生交點(diǎn)時(shí)的誤差,如何有效的減少這二者產(chǎn)生的誤差也是接下來的工作重點(diǎn)。
本文在提出了一種基于非特制靶標(biāo)的結(jié)構(gòu)光視覺自動(dòng)標(biāo)定方法的同時(shí)構(gòu)建了相應(yīng)的系統(tǒng)。利用非特制靶標(biāo)圖像表面的圖像信息和機(jī)器人的姿態(tài)信息完成對結(jié)構(gòu)光視覺裝置的標(biāo)定,實(shí)驗(yàn)結(jié)果表明,該系統(tǒng)對于非特制靶標(biāo)的選擇有著較強(qiáng)的適應(yīng)性,在利用30 mm、50 mm和60 mm的標(biāo)準(zhǔn)塊進(jìn)行精度驗(yàn)證時(shí),均值為0.049 6 mm,相對誤差均值為0.11%,能夠滿足毫米級的檢測需求,且系統(tǒng)靶標(biāo)容易獲得,節(jié)省了標(biāo)定成本,簡化了標(biāo)定流程,提高了標(biāo)定效率,能適應(yīng)如焊縫跟蹤、物體測量等工業(yè)現(xiàn)場對結(jié)構(gòu)光視覺裝置的要求。