謝探陽,李玉梅,張 濤,高天亮,石玉超
(1.北京信息科技大學(xué)a.高動(dòng)態(tài)導(dǎo)航技術(shù)北京市重點(diǎn)實(shí)驗(yàn)室;b.現(xiàn)代測控技術(shù)教育部重點(diǎn)實(shí)驗(yàn)室,北京 100101;2.河北明尚德玻璃科技股份有限公司,河間 062450)
機(jī)器視覺與機(jī)械臂的結(jié)合案例在工業(yè)場景中的應(yīng)用非常廣泛。而手眼標(biāo)定作為機(jī)械臂在攝像頭視角下與真實(shí)世界交互的重要環(huán)節(jié),其標(biāo)定算法的快速性、穩(wěn)定性、精準(zhǔn)性,在很大程度上決定了機(jī)械臂的工作效率。近年來,國內(nèi)外對于手眼標(biāo)定問題的研究越來越多。
黃騰超等[1]提出了一種基于差值細(xì)分的手眼標(biāo)定算法,避免了傳統(tǒng)標(biāo)定算法中鏡頭過度校正問題。丁雷鳴等[2]提出了一種基于遺傳神經(jīng)網(wǎng)絡(luò)的優(yōu)化算法,將相機(jī)坐標(biāo)和機(jī)械臂坐標(biāo)作為輸入量與輸出量,訓(xùn)練神經(jīng)網(wǎng)絡(luò)模型,越過了傳統(tǒng)標(biāo)定算法中繁瑣的坐標(biāo)轉(zhuǎn)換過程。鄧仕超等[3]提出了一種針對單目相機(jī)的使用單位八元數(shù)優(yōu)化的標(biāo)定算法,在保證抗噪聲能力的同時(shí),簡化了坐標(biāo)轉(zhuǎn)換中旋轉(zhuǎn)矩陣和平移矩陣同步最優(yōu)解的計(jì)算過程。鐘宇等[4]使用目標(biāo)檢測技術(shù)獲取機(jī)械手加持的3D球球心坐標(biāo)。之后再運(yùn)用奇異值分解法獲取不同坐標(biāo)系間的的線性回歸解來研究標(biāo)定過程。
LEE等[5]提出了一種使用棋盤格換算機(jī)器人末端執(zhí)行器和相機(jī)之間的位置關(guān)系的方法,該方法無需操作員干預(yù)校準(zhǔn)過程,并成功應(yīng)用于工業(yè)機(jī)器人中。PACHTRACHAI等[6]提出了一種基于神經(jīng)網(wǎng)絡(luò)的手眼標(biāo)定方法,不需要標(biāo)定網(wǎng)格中的相機(jī)位置,只使用相機(jī)視角下機(jī)器人的姿勢作為輸入來獲取手眼矩陣,簡化了手眼問題模型。LEE等[7]利用增強(qiáng)現(xiàn)實(shí)技術(shù),將仿真數(shù)據(jù)與真實(shí)數(shù)據(jù)結(jié)合進(jìn)行了實(shí)驗(yàn),分析了坐標(biāo)變換的平移分量對坐標(biāo)轉(zhuǎn)換精度的影響。
本文提出了一種將鏡頭畸變校正[8](distortion correction)與回歸隨機(jī)森林模型[9](regression random forest)結(jié)合的手眼標(biāo)定算法,該算法保留了傳統(tǒng)標(biāo)定算法中對相機(jī)鏡頭的畸變校正部分,最大程度減少數(shù)據(jù)原本的誤差。同時(shí)利用了RRF算法適用于非線性數(shù)據(jù)、訓(xùn)練速度快、不易過擬合的特點(diǎn),保證了計(jì)算的精準(zhǔn)度。實(shí)驗(yàn)部分使用傳統(tǒng)手眼標(biāo)定算法、線性回歸算法[10]與DC-RRF算法在自行采集的坐標(biāo)數(shù)據(jù)集上進(jìn)行測試。該研究能夠提升坐標(biāo)轉(zhuǎn)換的精準(zhǔn)度,在很大程度上提高機(jī)械臂的工作效率。
三維空間中某點(diǎn)的具體幾何位置,與其在圖像中對應(yīng)點(diǎn)之間的變換關(guān)系,是由相機(jī)固有的成像模型與參考坐標(biāo)系的選取位置決定的。而傳統(tǒng)手眼標(biāo)定的流程,正是獲取世界坐標(biāo)系、機(jī)械臂坐標(biāo)系、圖像坐標(biāo)系、相機(jī)坐標(biāo)系四者之間的轉(zhuǎn)換關(guān)系。但在具體的運(yùn)算過程中,可依據(jù)機(jī)械臂實(shí)際位置,將機(jī)械臂坐標(biāo)系與世界坐標(biāo)系作為一個(gè)整體[11]來考慮,如圖1所示。
圖1 坐標(biāo)系轉(zhuǎn)換過程
圖像坐標(biāo)系中任一點(diǎn)像素坐標(biāo)(u,v),與其對應(yīng)的毫米單位坐標(biāo)之間的關(guān)系,滿足如下齊次變換矩陣:
(1)
式中,(u0,v0)為圖像坐標(biāo)系原點(diǎn)。設(shè)相機(jī)坐標(biāo)系下某點(diǎn)P1(x,y,z),其對應(yīng)于成像平面上的成像點(diǎn)為P2(X,Y,Z),可獲得該點(diǎn)在機(jī)械臂坐標(biāo)(xr,yr,zr)與相機(jī)坐標(biāo)(x,y,z)間的關(guān)系模型:
(2)
式中,(x,y,z)為該點(diǎn)在相機(jī)坐標(biāo)系中的坐標(biāo);(xr,yr,zr)為該點(diǎn)在世界坐標(biāo)系中的坐標(biāo);Mout為相機(jī)外參數(shù)矩陣;[nx,ny,nz]T為機(jī)械臂坐標(biāo)系的Xr軸在相機(jī)坐標(biāo)系中的方向向量;[ox,oy,oz]T為機(jī)械臂坐標(biāo)系的Yr軸在相機(jī)坐標(biāo)系中的方向向量;[ax,ay,az]T為機(jī)械臂坐標(biāo)系的Zr軸在相機(jī)坐標(biāo)系中的方向向量;[px,py,pz]T為機(jī)械臂坐標(biāo)系的原點(diǎn)在相機(jī)坐標(biāo)系中的平移位置[11]。
光學(xué)透鏡的透視失真問題會(huì)導(dǎo)致成像時(shí)產(chǎn)生徑向畸變或者切向畸變。通常情況下,切向畸變的主要是因?yàn)殓R頭透鏡與成像平面不平行,通過設(shè)備調(diào)整完全可以克服,本文中只考慮徑向畸變模型。
徑向畸變[12]主要沿著光學(xué)透鏡的半徑方向分布,產(chǎn)生原因是光線在經(jīng)過透鏡時(shí)發(fā)生不同程度的偏折。如圖2所示,徑向畸變又分為桶形畸變和枕形畸變。
圖2 桶形畸變和枕形畸變
徑向畸變的成像中心幾乎不發(fā)生畸變,但是沿圖像圓心向邊緣移動(dòng),畸變則越發(fā)明顯。徑向畸變的數(shù)學(xué)模型可以使用中心點(diǎn)周圍的泰勒級數(shù)展開式來建立,通常取前兩項(xiàng)進(jìn)行計(jì)算。對于畸變嚴(yán)重的鏡頭可以選取三項(xiàng)或者更多項(xiàng)。畸變圖像中的某一點(diǎn)的像素坐標(biāo)(xu,yu)可以表示為:
(3)
(4)
式中,(xd,yd)為理想狀態(tài)下不發(fā)生畸變的像素坐標(biāo);(xo,yo)為畸變圖像中心點(diǎn)的像素坐標(biāo);k1、k2為展開式中的一階和二階徑向畸變參數(shù),以此類推;rd為畸變半徑。
回歸隨機(jī)森林(RRF)是通過構(gòu)建多棵回歸樹,并以此作為基本單元,形成類似森林的一種回歸算法。此算法使用bootstrap重采樣[13]隨機(jī)得到多個(gè)互不相同的樣本子集,再依據(jù)各樣本子集通過子空間隨機(jī)劃分構(gòu)建回歸樹。
從數(shù)據(jù)集(X,Y)中隨機(jī)選擇,組成訓(xùn)練集。輸入向量X為自變量,輸出向量Y為因變量。則預(yù)測結(jié)果h(X)的均方泛化誤差表示為:
EX,Y[Y-h(X)]2
(5)
RRF的計(jì)算結(jié)果是k棵回歸樹的計(jì)算結(jié)果h(θ,Xk)取均值而來的(θ為服從獨(dú)立分布的隨機(jī)變量),當(dāng)k→∞,則滿足:
(6)
此時(shí)右側(cè)部分表示RRF的整體泛化誤差,記為PE*。PE則代表單獨(dú)一顆回歸樹的泛化誤差,即:
PE=EθEX,Y[Y-h(X,θ)]2
(7)
對所有隨機(jī)組成的訓(xùn)練集,存在:
PE*≤ρPE
(8)
式中,ρ是在θ與θ′相互獨(dú)立時(shí),殘差Y-h(X,θ)和Y-h(X,θ′)的加權(quán)相關(guān)系數(shù)。
建模流程如圖3所示。當(dāng)回歸樹需要節(jié)點(diǎn)分裂時(shí),則選取特征子集中的最優(yōu)特征進(jìn)行分裂。對所有回歸樹的預(yù)測結(jié)果進(jìn)行眾數(shù)投票或者取平均值,最后得到RRF最終的預(yù)測結(jié)果[14]。
圖3 回歸隨機(jī)森林示意
RRF中的每顆決策樹模型都會(huì)對輸入的特征進(jìn)行計(jì)算并預(yù)測,得到與樣本集數(shù)量k對應(yīng)的k個(gè)預(yù)測結(jié)果,這些結(jié)果的平均值即為輸出預(yù)測結(jié)果,表達(dá)式如下:
(9)
式中,Y為預(yù)測結(jié)果;X為輸入特征的數(shù)據(jù)向量;k為回歸樹數(shù)量;Fk(X)為每個(gè)獨(dú)立的回歸樹模型,其公式為:
(10)
式中,Rj為以不同特征切分量劃分完畢后的單元區(qū)域;I為邏輯值,當(dāng)X∈Rj,則I-1,否則I=0;Cj為當(dāng)前單元區(qū)域內(nèi)所包含的全部輸出值的平均值;j為單元區(qū)域序號。此過程[15]即是在判斷輸入量屬于哪個(gè)單元區(qū)域后,計(jì)算出該單元區(qū)域的預(yù)測值。
本文首先對讀取視頻流所用的單目相機(jī)進(jìn)行畸變校正。單目相機(jī)拍攝不同位置、角度的國際象棋棋盤格圖片17張(棋盤方格數(shù)為9×7,每個(gè)方格實(shí)際長度大小為22 mm×22 mm)。使用MATLAB自帶的Camera Calibrator工具箱完成對17張圖片的標(biāo)定過程。部分標(biāo)定過程如圖4所示。
圖4 標(biāo)定過程部分圖片 圖5 重投影誤差
重投影誤差用以判斷標(biāo)定的精準(zhǔn)程度。在標(biāo)定后每個(gè)角點(diǎn)的像素位置與實(shí)際圖像位置之間存在一個(gè)距離,這個(gè)距離的累加和就是重投影誤差。如果平均重投影誤差過大則說明采樣或者標(biāo)定的過程存在問題。
如圖5所示,橫坐標(biāo)為圖片序號,縱坐標(biāo)為像素誤差值。標(biāo)定結(jié)果顯示平均重投影誤差為0.29,滿足精度識別要求[16]。Camera Calibrator工具箱獲取到的畸變系數(shù)如表1所示,可以用來還原相機(jī)圖像。
表1 相機(jī)畸變系數(shù)
表中,k1、k2、k3為徑向畸變系數(shù);p1、p2為切向畸變系數(shù)。本此實(shí)驗(yàn)只采用徑向畸變校正相機(jī)。
實(shí)驗(yàn)采用Eye to Hand手眼系統(tǒng)完成,該系統(tǒng)由MyCobot六自由度機(jī)械臂、計(jì)算機(jī)、LT-USB1080P高清攝像機(jī)等組成。夾取目標(biāo)為圓形不等高的玻璃杯,夾爪安裝于機(jī)械臂末端。
圖6 數(shù)據(jù)采集平臺(tái)
設(shè)定玻璃杯瓶口的幾何中心為目標(biāo)點(diǎn),使機(jī)械臂末端運(yùn)動(dòng)至該點(diǎn),然后攝像機(jī)相獲取視頻流,經(jīng)自制軟件處理后得到該點(diǎn)坐標(biāo),即目標(biāo)點(diǎn)在相機(jī)坐標(biāo)系下的像素坐標(biāo)。像素坐標(biāo)與機(jī)械臂坐標(biāo)系下的坐標(biāo)共同組成一組對應(yīng)坐標(biāo)數(shù)據(jù)。重復(fù)此過程得到700組坐標(biāo)值,作為數(shù)據(jù)集,如表2所示。
表2 部分手眼標(biāo)定數(shù)據(jù) (mm)
本文使用常規(guī)的R2(決定系數(shù))、MSE(均方誤差)、MAE(平均絕對誤差)作為度量指標(biāo)[13],進(jìn)行基于RRF的模型的性能分析。
(11)
(12)
(13)
由于RRF中每一棵樹的運(yùn)算,都需要使用有放回的隨機(jī)抽樣方式來進(jìn)行采樣,所以在每個(gè)回歸樹模型創(chuàng)建之后,都有一部分樣本未參與到運(yùn)算過程中,這部分樣本即為袋外樣本[17](OOB)。
(14)
(15)
式中,k為隨機(jī)森林內(nèi)回歸樹的數(shù)量;i為單個(gè)回歸樹模型的序號;OOBi為第i個(gè)回歸樹模型的袋外誤差;n為袋外樣本數(shù);j為袋外樣本序號;yi為實(shí)際值;h(xi)為預(yù)測值。平均袋外誤差趨近于平穩(wěn)時(shí)的參數(shù)[18]即可視為模型的最優(yōu)參數(shù)。
模型所需要調(diào)整的主要參數(shù)有兩個(gè),一個(gè)是n_estimators,即“森林”中回歸樹的數(shù)量;另一個(gè)是max_depth,表示回歸樹的最大深度數(shù)。宏觀上講深度值越大,訓(xùn)練效果越好。但是過大會(huì)導(dǎo)致計(jì)算量增大和過擬合。
圖7為不同max_depth下模型平均袋外誤差率與參數(shù)n_estimators的關(guān)系曲線??v坐標(biāo)為平均袋外誤差率,橫坐標(biāo)回歸樹的數(shù)量。最大深度為30或者60時(shí),誤差率曲線沒有辦法收斂,都存在一定程度的波動(dòng)。當(dāng)最大深度達(dá)到90,且回歸樹的個(gè)數(shù)超過150棵。平均袋外誤差率不再發(fā)生明顯的波動(dòng)或者下降。參數(shù)選擇結(jié)果如表3所示,其余參數(shù)均設(shè)為默認(rèn)值。
圖7 平均袋外誤差變化趨勢
表3 參數(shù)選擇
本文根據(jù)上述內(nèi)容中所采集的數(shù)據(jù),分別使用傳統(tǒng)手眼標(biāo)定算法、DC-RRF算法、線型回歸算法進(jìn)行實(shí)驗(yàn)。隨機(jī)選取70組數(shù)據(jù)作為測試集對機(jī)械臂坐標(biāo)下的X、Y、Z坐標(biāo)進(jìn)行準(zhǔn)確率對比。
如圖8所示,在X軸計(jì)算結(jié)果中,DC-RRF算法的誤差在3 mm以內(nèi),而傳統(tǒng)手眼算法和線性回歸算法的最大誤差分別為6.2 mm和7.5 mm,且波動(dòng)程度均明顯超過DC-RRF算法。
圖8 X軸計(jì)算結(jié)果對比 圖9 Y軸計(jì)算結(jié)果對比
如圖9所示,在Y軸計(jì)算結(jié)果對比中,DC-RRF算法的最大誤差是3.8 mm。線性回歸算法的誤差最大能達(dá)到10 mm。傳統(tǒng)手眼算法的誤差波動(dòng)弱于線性回歸算法,但也比DC-RRF算法劇烈很多,誤差最大達(dá)到8.7 mm,最小為0 mm。
如圖10所示,在Z軸計(jì)算結(jié)果中,傳統(tǒng)手眼標(biāo)定算法的誤差波動(dòng)最為劇烈,誤差最大值達(dá)到7.4 mm。線性回歸算法的誤差最大值為5 mm,最小為0 mm,波動(dòng)程度弱于傳統(tǒng)算法。DC-RRF算法的誤差波動(dòng)在0 mm~2 mm之間,相對其他兩種算法其精度更高。
圖10 Z軸計(jì)算結(jié)果對比
如表4和表5所示,3種算法中,DC-RRF在3軸上的MSE與MAE均為最低值,平均值分別為11.68與1.77。而R2值均為最高,3軸平均值為0.992。DC-RRF算法在以上性能對比中結(jié)果均為最優(yōu),充分證明了此算法在坐標(biāo)轉(zhuǎn)換上具備一定的優(yōu)越性,可做為后續(xù)手眼標(biāo)定算法研究,以及其他坐標(biāo)轉(zhuǎn)換算法的重要參考。
表4 X/Y/Z軸平均絕對誤差(MAE) (mm)
表5 X/Y/Z軸均方誤差(MSE)與決定系數(shù)(R2)
本文提出將傳統(tǒng)手眼標(biāo)定算法中的鏡頭畸變校正部分保留,在坐標(biāo)計(jì)算部分與回歸隨機(jī)森林模型結(jié)合的改進(jìn)手眼標(biāo)定算法(DC-RRF)。
對傳統(tǒng)手眼算法、線性回歸算法、DC-RRF三種算法進(jìn)行實(shí)驗(yàn)對比,結(jié)果表明DC-RRF算法的3軸平均絕對誤差為1.77 mm,為三種算法中最優(yōu),相比于傳統(tǒng)手眼標(biāo)定算法具有明顯優(yōu)勢,可有效提升需要視覺輔助的機(jī)械臂作業(yè)效率。