郭 源,張愛軍
(南京理工大學機械工程學院,南京 210094)
近年來,隨著機器人技術與機器視覺技術不斷地革新,催生了許多形態(tài)各異的機器人[1]。其中,拆垛機器人是通過視覺引導定位抓取目標物的一類機器人。拆垛機器人由機械臂、相機以及計算機設備組成,先由相機對目標垛堆進行圖像采集,再由計算機設備對采集的數(shù)據(jù)做物體姿態(tài)估計,最后將位姿結(jié)果反饋至機械臂,由機械臂進行抓取[2]。其中,手眼標定是機械臂抓取中的重要一步,手眼標定技術的準確性直接影響了目標物抓取準確性[3]。所以,改善拆垛機器人的手眼標定關鍵技術,是整個拆垛系統(tǒng)的準確度的關鍵所在。
業(yè)界對手眼標定有許多研究成果。如TSAI等[4]首次提出了手眼標定方程AX=XB,并利用線性二分法來進行解算,但在求解旋轉(zhuǎn)向量時易引入較大的誤差。DANIILIDIS[5]提出基于對偶四元數(shù)改寫手眼方程,但在實際標定中易受到噪聲的干擾,影響標定的準確度?;诖?TABB等[6]使用迭代算法進行手眼標定的求解。但迭代求解過程復雜且依賴初值,才能有較為精確的結(jié)果。王一凡等[7]利用對偶四元數(shù)的最小二乘法進行迭代。李巍等[8]采用了LMI優(yōu)化算法,結(jié)合對偶四元數(shù)求出剛性變換矩陣,但是利用LMI算法求解矩陣依賴于問題參數(shù)模型的選取及相關工具箱,算法復雜不易工程化。在數(shù)據(jù)獲取方面,YANG等[9]使用標定球來獲取標定數(shù)據(jù),但標定球制作不易。王連慶等[10]設計了一種標定塊,利用點云匹配算法來獲取轉(zhuǎn)換關系,雖然利用點云算法會更為精確,但點云運算耗時過長。程麒等[11]利用標定板對龍門架機器人進行手眼標定,但其軌跡規(guī)劃及去噪處理不適用于拆垛機器人,故需對其進行改進。
綜上所述,為了提高拆垛機器人的精度,提出一種基于對偶四元數(shù)和3D相機的手眼標定方法。劉屹東等[12]利用粒子群對相機參數(shù)進行標定,證明其在標定領域可進行非線性優(yōu)化,故本文將其運用在手眼標定方面。并采用自適應粒子群算法避免手眼標定求解過程陷入局部最優(yōu)值,在數(shù)據(jù)獲取方面,采用普通的圓形標定板,并利用加權奇異值分解算法提高算法穩(wěn)定性。經(jīng)檢驗該方法具備較高的準確度,可以用于拆垛機器人的定位抓取工作。
拆垛機器人進行拆垛工作時需要先獲取機器人基座坐標系和相機坐標系之間的位置關系,對此剛體轉(zhuǎn)換矩陣的獲取過程即手眼標定。手眼標定問題分為眼在手上和眼在手外,眼在手上即相機固定在機械臂末端,此方法擁有較高的精度,可用于焊接、自動化貼片等。眼在手外即相機被固定在機械臂外某一位置,有較廣的視場,雖然精度較低,但可用于機器人大范圍抓取等領域。故拆垛機器人較為適合選用眼在手外的拆垛系統(tǒng)進行工作。
圖1 拆垛機器人眼在手外標定模型
已知對于每張圖片,都有以下關系:
(1)
由式(1)結(jié)合機械臂變換情況可推導出式(2):
(2)
AX=XB
(3)
式中:A可以有機械臂的示教器獲得,B可以由相鄰點云標定板的變換矩陣求得。因此,求解手眼標定方程的解,即是對X進行求解。
為了構建目標函數(shù)以供解算,可根據(jù)手眼標定方程AX=XB,將其分解為旋轉(zhuǎn)和平移兩部分:
RARX=RXRB
(4)
(RA-I)tX=RXtB-tA
(5)
式中:R為旋轉(zhuǎn)矩陣,t為平移向量,I為單位矩陣,下標表示它們所對應的齊次矩陣。
由于采用對偶四元數(shù)可以用兩個四元數(shù)同時描述旋轉(zhuǎn)和平移部分,避免了萬向節(jié)死鎖。故根據(jù)文獻[5]引入對偶四元數(shù)進行手眼標定方程的模型構建與解算。
對偶四元數(shù)是四元數(shù)的對偶形式,可以將其表示為:
(6)
(7)
根據(jù)式(7),可將式(4)和式(5)變形為對偶四元數(shù)形式:
a·qx=qx·b
(8)
(9)
(10)
對該方程進行解算即可求得手眼標定的對偶四元數(shù)解。
由于傳統(tǒng)的對偶四元數(shù)解算法易受噪聲干擾引入旋轉(zhuǎn)誤差,故本文使用粒子群優(yōu)化算法,將對偶四元數(shù)的旋轉(zhuǎn)部分和平移部分分開解算,避免3D相機帶來的平移誤差對旋轉(zhuǎn)部分的影響。
粒子群算法是一種出色的全局搜索策略算法,可以用于工程實踐之中,能有效解決非線性函數(shù)尋優(yōu)問題。粒子群算法將諸多粒子當做鳥類,并賦予各個粒子初速度vi和初位置xi。每個粒子經(jīng)過速度和位置的變換,會不斷地更新個體極值Pbest,i,并與其它粒子共享,并經(jīng)過比較得出群體極值Gbest,通過個體極值與群體極值進行比較,各個粒子將會通過式(11)和式(12)進一步進行迭代,直到獲得最終的全局最優(yōu)解。
vi(k+1)=ωvi(k)+c1r1(Pbest,i(k)-xi(k))+
c2r2(Gbest-xi(k))
(11)
xi(k+1)=xi(k)+vi(k+1)
(12)
式中:r1、r2為(0,1)內(nèi)的隨機數(shù),ω為慣性權重,c1、c2為學習因子,c1引導粒子向個體極值方向飛行,而c2引導粒子向群體極值方向飛行。由于標準的PSO(粒子群)算法易陷入局部最優(yōu)解,且需要設置諸多參數(shù),故在應用中受到了限制?;诖?需要對標準PSO算法進行改進,使其更為適應手眼標定方程的求解。
其中,慣性權重ω的值與粒子的搜索能力有直接的關聯(lián),ω的值越大,則粒子的全局搜索能力越強,反之則粒子的局部搜索能力越強。為了平衡粒子的全局尋優(yōu)能力和局部尋優(yōu)能力??刹捎谜仪€函數(shù),在粒子尋優(yōu)的前期,賦予較大的ω,使粒子進行大范圍搜索。在尋優(yōu)后期,使粒子更注重局部搜索,因此可使用正弦慣性權重函數(shù):
ω=ωmax-(ωmax-ωmin)sin(tπ/(2Niter))
(13)
式中:ωmax取0.9,ωmin取0.45,t為當前迭代次數(shù),Niter為總迭代次數(shù)。
同理,為了增強前期全局尋優(yōu)能力和后期局部尋優(yōu)能力,可將學習因子c1、c2進行改進,采用閆群民等[13]提出的方法,使c1逐漸減小、c2逐漸增大。
c1=c1max-t(c1max-c1min)/Niter
(14)
c2=c2min-t(c2min-c2max)/Niter
(15)
式中:c1max、c2max為2.5,c1min、c2min為1.25。
(16)
同理,將模型1的解算結(jié)果代入,利用平移矩陣的性質(zhì),最終可得到平移矩陣的求解模型:
(17)
但與點云坐標系相關的數(shù)據(jù)需要通過對標定板進行多次移動,通過采集標定板圓心點坐標的變換量進行計算。為了獲取不同方位下標定板的數(shù)據(jù),以及配合3D視覺相機下的錐形視野,故提出3層梯狀采樣法來獲取相關數(shù)據(jù)。為了獲取標定板的角度信息,可在點Q處,進行5次以上不同方向的旋轉(zhuǎn),每次旋轉(zhuǎn)角度不低于30°。標定板移動軌跡如圖2所示。
圖2 標定板的3層梯狀移動軌跡
采用標定塊進行標定點提取的方法在三維標定鄰域十分熱門,但標定塊制作不易,成本高昂,對于拆垛機器人只需使用抗噪性強的4×5圓形標定板進行圓心點云坐標提取,可以顯著降低成本,標定板如圖3所示。
圖3 點云中標定板圓心提取效果
本文使用3D結(jié)構光相機。通過3D相機提供的深度信息,便可以由圖片生成點云,并獲取圖片中任意像素點的三維坐標。利用這一性質(zhì),可利用Opencv提取出二維狀態(tài)下圓形標定板的圓心坐標,再通過深度值則可計算出三維坐標下圓心的坐標值。其標定板點云圓心提取效果如圖3所示。
(18)
(19)
(20)
令U為左奇異矩陣,V為右奇異矩陣,W為對角系數(shù)權重矩陣,則由SVD分解可得:
[U,S,V]=SVD(AWBT)
(21)
則旋轉(zhuǎn)變換矩陣R為:
R=VUT
(22)
平移矩陣為:
t=-R*CA+CB
(23)
至此,便可初步得到標定板點云間的變換矩陣。為了追求計算簡便,普通的SVD方法只是將權重值都設為相同值。但是使用標定板的缺點便是易受光照及相機畸變所影響,導致提取的部分圓心坐標不準確,為此有必要引入合適的加權函數(shù)來進行降噪,增加算法的穩(wěn)定性。
(24)
根據(jù)各點的測量誤差并結(jié)合實際情況,可選取加權函數(shù)IGGⅢ來進行權重系數(shù)的計算,該函數(shù)滿足誤差小的點位權重保持不變,誤差稍大的點位降低權重分配,而誤差較大的點位權重置0,該函數(shù)的表達式如下:
(25)
本文使用如圖4所示的拆垛機器人手眼標定系統(tǒng)對本文提出算法進行驗證。在CPU為Intel(R) Core(TM) i5-8300H,內(nèi)存為16 G的主機上進行運行。
圖4 眼在手外標定系統(tǒng) 圖5 SVD與IGGⅢSVD方法比較
該系統(tǒng)按照上述方法進行手眼標定,每組實驗使用標定板在20個方位上采集20張照片及其對應點云,并獲取20組機械臂末端位姿。
為驗證加權SVD算法的有效性,實驗中選擇一組標定板的點云坐標變化數(shù)據(jù),共20個點位。任取20%,隨機選擇X或Y坐標賦予0~7 mm的誤差模擬光照等因素對標定板的影響,分別采用SVD算法和加權SVD算法進行驗證,可以看出加權SVD算法對粗大誤差的抑制效果較好,結(jié)果如圖5所示。
(26)
用3種算法分別在不同噪聲水平下進行200次模擬計算,可得到不同高斯噪聲水平下的誤差??梢钥闯?本文算法在不同高斯噪聲條件下保持著較優(yōu)的精度,如圖6所示。
圖6 不同噪聲水平下的誤差曲線圖 圖7 不同點位的誤差曲線圖
后續(xù)經(jīng)過實際實驗計算,可以得出最優(yōu)的一次手眼標定矩陣Xbest,即:
為了增加實驗結(jié)果的可靠性,本文提出一種誤差驗證方法,仿造圖2所示的標定過程中標定板的移動軌跡,將標定板放置在三層平面上,并將標定板分別放置在每層平面的5個方位由機械臂末端對圓形標定板的對角圓心碰觸,以獲取標定板在不同方位的準確坐標。再由所獲取的點云坐標以及計算得出的剛體變換矩陣X,來計算得出標定板在基座坐標系下的理論坐標pmath,將其與實際坐標ptrue進行誤差計算,便可得到剛體變換矩陣的準確性。計算投影誤差如式(27)所示。
(27)
實驗結(jié)果表明,Tsai法的平均精度為4.135 4 mm,Dual法的平均精度為2.677 4 mm,本文所提方法的平均精度為2.421 4 mm,小于2.5 mm,最大誤差為3.9 mm,不超過4 mm,滿足拆垛要求,平均精度高于其余兩種方法。
本研究采用對偶四元數(shù)對手眼標定進行模型構建,利用三層梯狀采樣法和加權SVD算法得到了魯棒性較強的待處理數(shù)據(jù),而后采用自適應粒子群算法得到了較優(yōu)的手眼標定結(jié)果。
實驗結(jié)果表明,加權SVD算法在獲取手眼標定數(shù)據(jù)中具備較強的魯棒性,而且使用自適應粒子群算法求解手眼標定方程的平均精度高于Tsai法、略優(yōu)于Dual法,最終結(jié)果的平均誤差小于2.5 mm,且所提的算法在本文所述的模擬環(huán)境下,賦予其不同水平的高斯噪聲時,有較好的穩(wěn)定性。對于同類型拆垛機器人的手眼標定工作具有一定的參考價值。