汪凌陽,朱璠婷,蔣文萍
(上海應用技術大學電氣與電子工程學院,上海 201418)
近年來,在國內外的工業(yè)機器人研究中,機器視覺檢測[1]成為工業(yè)機器人智能制造發(fā)展的潮流。在機器視覺檢測領域,非接觸的視覺測量方法相較于人工測量在速度和精度上都具有優(yōu)勢,對工業(yè)機器人的工作效率和產(chǎn)能效率有極大的提高。
本文所研究的測距工作是指測量目標工件和攝像頭之間的距離。在工業(yè)機器人的實際測距研究[2-4]中,激光測距、超聲波測距和視覺測距是最為廣泛的研究方向。激光測距和超聲波測距由于需要借助激光測距儀和超聲波傳感器進行測距,如王子雨[5]提出一種結合立體視覺和激光測距的姿態(tài)識別方法;謝永超等[6]提出1種基于超聲波傳感器模塊的測距方法。但成本較高,不利于在實際工業(yè)生產(chǎn)中推廣應用。視覺測距指的是基于攝像頭獲取的二維圖像應用視覺算法重建目標的三維信息從而進行測距工作。單雙目測距和結構光測距是視覺測距中最主要的兩種方式。結構光測距[6]屬于主動式三維測量,其通過結構光投射至物體上測量物體的尺寸參數(shù)獲取三維信息,其測量效果收到環(huán)境和物體性質的影響。單雙目測距[7-10]屬于被動式三維測量,從二維平面信息獲取三維信息,其可有效降低成本并且避免受到測量環(huán)境和物體性質的影響。
本文考慮實際工作應用效能和資源成本,提出一種基于機器視覺的機械臂雙目測距系統(tǒng)。此系統(tǒng)是通過雙目CMOS相機拍攝目標工件得到二維圖像,并進行相應的圖像處理和立體匹配得出圖像的視差圖,從而重建三維信息得到點云,根據(jù)關鍵點的三維信息得出目標工件和攝像頭的距離。通過此計算結果,配合機械臂抓取實現(xiàn)一系列的功能。此系統(tǒng)能夠快速完成測距工件,并且在不依托任何附加光源的情況下保證精度和準度。
機械臂雙目測距系統(tǒng),即在自然光的工作環(huán)境下,采用2個固定的CMOS攝像頭對目標工件進行圖像采集。而后將二維圖像結合機器視覺的圖像處理算法得到目標工件的三維信息[11],將此三維信息傳輸至機械臂控制機構做出相應指令。此系統(tǒng)共分為4個步驟,分別是雙目標定、立體校正、立體匹配、測距計算。機械臂雙目測距系統(tǒng)流程圖如圖1所示。
圖1 機械臂雙目測距系統(tǒng)流程圖Fig.1 Flowchart of the manipulator binocular distance measurement system
此系統(tǒng)采用三大坐標系分別是世界坐標系、相機坐標系和圖像坐標系。目標工件的中心在世界坐標系的坐標為(x w,y w,z w),在相機坐標系中的坐標為(x c,y c,z c),在圖像坐標系中的坐標為(x,y)。世界坐標系可通過剛體變換轉化成相機坐標系,相機坐標系可通過透視投影轉換成圖像坐標系[12-14]。
剛體變換的轉換關系的齊次表達式可表示為:
式中,R為旋轉矩陣,表示繞坐標系三大軸的旋轉角度,也是右相機相對左相機的旋轉矩陣。R可劃分為雙目相機的合成矩陣R1,R2,用于下一步的立體校正。T是平移矩陣,表示在坐標系三大軸平移的列向量。R和T與相機無關,為相機的外參數(shù)。0T3表示[ 0,0,0]T。
P點在二維平面的成像根據(jù)三角形相似原理可知:
透視投影的轉換關系的其次表達式可表示為:
聯(lián)合式(1)、(3)可知:
式中:P1表示內參數(shù);P2表示上述提到的外參數(shù)。P1包括相機的鏡頭焦距f和感光CMOS相關元件的中心位置。此外,相機的內參數(shù)還包括畸變系數(shù),由于相機成像存在著徑向和切向畸變[15],故此系統(tǒng)也應該考慮到相機的畸變系數(shù)。其中徑向畸變常采用泰勒級數(shù)展開來描述,取前三階次的系數(shù)k1、k2、k3,切向畸變取前兩階次的系數(shù)p1、p2[16]。令P點在圖像坐標系中畸變矯正后的坐標為(x1,y),則畸變矯正的轉換關系為:
本系統(tǒng)的雙目測距是根據(jù)在立體匹配步驟后得到視差圖通過三角測量[17]的數(shù)學模型計算得出的。
如圖2所示,在本研究中,雙目攝像頭在統(tǒng)一水平線上,Ol和Or分別為左攝像頭和右攝像頭的光心,兩者距離即為基線。P點是目標工件的中心,A1、A2分別為左、右攝像機的像平面。A1和A2經(jīng)過旋轉,至雙攝像頭的前方。Pl和Pr為目標工件中心點P在A1和A2左右攝像機像平面的投影,Pl和Pr的距離即為視差。以左右相機的光心在像平面的投影Ol
圖2 機械臂雙目測距系統(tǒng)Fig.2 Manipulator binocular distancemeasurement system
′和Or′為像平面的中心,則Pl的坐標為(xl,yl),Pr的坐標為(xr,yr)。f是左右攝像機的焦距,由于雙目攝像機的攝像頭的規(guī)格參數(shù)是一致的,故焦距是相同的。Z是P點到攝像頭水平面的距離,即為深度信息[18],計算深度即是本文所探討的雙目測距計算。
結合相似三角形原理,可以得出:
由此可以得出,要獲取距離Z信息,需要求得視差d,而求取視差的過程即是一維搜索的過程。其中一維搜索獲取視差即是立體匹配的關鍵步驟。
雙目標定是求解三維世界位姿關系和二維圖像坐標的對應關系的過程[19]。雙目標定主要計算的是雙目工業(yè)相機的畸變系數(shù)和4個內參數(shù)以及旋轉矩陣R和平移矩陣T,2個外部參數(shù)。其中所求解的內外參數(shù),其是立體校正和立體匹配所采用的關鍵參數(shù)。
此系統(tǒng)使用的是帶有500萬像素鏡頭的CMOS彩色工業(yè)相機,其采集的圖像分辨率為640×480。標定所采用的標靶為黑白正方形棋盤格,角點數(shù)量規(guī)格6×8,棋盤格大小為25 mm×25 mm。由于相機內外參數(shù)的求解至少需要3對及以上的圖像對,并且在標定過程中容易存在重投影誤差較大的圖像,此類圖像影響標定后內外參數(shù)的準確度。因此本文共采集了14對棋盤格圖像對,有效保證雙目標定的精度。
本文采用Matlab的StereoCameraCalibrator工具箱為雙目相機標定工具箱。打開MATLB軟件選擇應用程序中的StereoCameraCalibrator,添加圖像,選定3個徑向畸變參數(shù)、2個切向畸變參數(shù),其中左相機用Camera1表示,右相機用Camera2表示,進行標定。
采用Matlab標定后,誤差如圖3所示。圖3展示了每個圖像對的重投影誤差,得知這14對的重投影誤差平均值在0.13piexl。
圖3 圖像對的重投影誤差Fig.3 Reprojection error of image pairs
并且經(jīng)過標定后通過工具箱得出雙目CMOS相機的相對位置關系,如圖4所示。
圖4 雙目CMOS相機的相對位置Fig. 4 Relative position of binocular CMOScameras
最后,可以求得相機的內、外參數(shù)和左、右相機的內外參數(shù)
式中,Dl和Dr為左右2個相機的畸變系數(shù)。
在雙目標定之后,需要將采集的圖像對進行立體校正。由于本文的機械臂雙目測距系統(tǒng)中的理想情況是雙目攝像機的投影面是平行的,并且光軸與像平面垂直。在實際實驗過程中,也盡量保證鏡頭安裝在同一水平線上。在采集圖像對根據(jù)上述求得畸變參數(shù)進行畸變校正后可以進行立體校正,以保證2幅圖像可以嚴格對應。立體校正可以有效減少立體匹配的搜索量[20]。
本文采用的是Bouguet立體校正法,其校正原理是在校正過程中旋轉一半的旋轉合成矩陣,并建立行對準轉化矩陣,從而使得重投影畸變降至最小,保證2個像平面在平行平面上。此處采用計算機視覺開源庫OpenCV進行實驗過程的立體校正。
首先采用stereoRectify函數(shù)進行旋轉矩陣和投影矩陣的計算,再借助initUndistortRectifyMap函數(shù)進行計算畸變矯正和校正查找映射變換表,其可將原始采集的圖像對和校正后的圖像對上的點對應。最后載入驗證圖像對進行立體校正的圖像對的檢驗。
在完成立體校正后,可以保證圖像對的行對準,從而使得立體匹配的匹配點搜索工作從二維平面轉化至一維搜索。
立體匹配主要是在左相機所成的圖像中以任意1個像素點為參考點,在右相機中所成的圖像中找尋與之相匹配的參考像素點,通過這一過程就可以獲得相機的視差[21],這一過程在此系統(tǒng)測距的過程中非常重要,為后續(xù)的相機的深度信息的準確性埋下伏筆。
立體匹配通常具有匹配代價計算、代價聚合、視差計算和視差細化4個步驟[22]。其中匹配代價計算指的是度量像素匹配的相似性,其通常計算的是局部定義下2個相鄰像素的匹配代價。而代價聚合可以在全局范圍下根據(jù)匹配代價將像素間建立聯(lián)系,可以有效地降低噪聲帶來的代價干擾。在全局優(yōu)化的代價聚合后,各像素將進行匹配代價重新評估得到代價矩陣。根據(jù)代價矩陣可以計算各像素的視差值,最后進行視差細化,降低視差誤差。根據(jù)上述步驟,立體匹配算法通常分為全局匹配算法和局部匹配算法[23]。
本文采用的是半全局的立體匹配算法SGBM。它具有較高的時效性[24],主要是利用互信息之間的像素進行匹配,簡化了全局算法的求解過程,主要步驟是求取圖像中的像素點8個方向的能量代價以及函數(shù),當?shù)玫阶钚≈禃r,代表著該圖像中的像素點作為匹配點可以得到最佳的視差值。該算法中的代價能量函數(shù)用公式表達為:
式中:E(D)表示的是能量函數(shù);C(p,Dp)表示在圖像中任意一個像素點所對應的代價函數(shù);Np代表像素點的集合;T[|Dp-Dq|]=1與T[|Dp-Dq|]>1代表著各像素點之間的1個約束函數(shù);T[|Dp-Dq|]=1表示p區(qū)域內的視差值與q區(qū)域內的差值等于1,此時P1作為懲罰系數(shù)將會受懲罰,T[|Dp-Dq|]>1表示p區(qū)域內的視差值與q區(qū)域內的差值大于1,而這時是P2作為懲罰系數(shù)懲罰[25]。
根據(jù)上述實驗步驟對此系統(tǒng)進行測距驗證。取工件正面的中心點作為目標工件中心點,不斷調整目標工件和雙目工業(yè)相機的距離,進行測距實驗,測距結果如表1所示。
由表1可見,此機械臂雙目視覺測距系統(tǒng)的測距平均誤差在0.3%以下,隨著矩陣增加,測距誤差逐漸升高。此誤差主要來源于雙目標定環(huán)節(jié)中的內外參數(shù)誤差。
表1 機械臂雙目測距系統(tǒng)測量結果Tab.1 The measurement result of manipulator binocular distance measurement system
本文主要研究了基于機器視覺的機械臂雙目測距工作,其中包括對雙目工業(yè)相機進行雙目標定得到其內外參數(shù),并根據(jù)內外參數(shù)進行立體校正和立體匹配得到視差圖進行雙目測距工作。雙目測距可以有效地幫助機械臂控制系統(tǒng)獲取目標工件的三維信息并實現(xiàn)定位抓取等一系列通過。從實驗結果上看,本系統(tǒng)具有一定標定上導致的測量誤差但是仍保有高精度的測量精度,具有一定的可行性和實踐價值。