徐呈藝 劉 英 賈民平 肖 軼 曹 健
(1.南京林業(yè)大學機械電子工程學院, 南京 210037; 2.南通職業(yè)大學機械工程學院, 南通 226007;3.東南大學機械工程學院, 南京 211189)
目前,鋪地板的方式主要是人工鋪放,存在勞動力少、成本高等問題。隨著機器人技術(shù)高速發(fā)展,通過機器人視覺系統(tǒng)完成該項工作具有較好的實用意義,目前尚未發(fā)現(xiàn)有相關(guān)文獻或報道。手眼標定是機器人末端正確定位、完成木板抓取的關(guān)鍵。機器人視覺伺服控制系統(tǒng)中機器人和相機的關(guān)聯(lián)方式,即手眼關(guān)系,主要有兩種:眼在手外(Eye-to-Hand)和眼在手上(Eye-in-Hand)。Eye-to-Hand方式中相機固定,具有簡單、方便等優(yōu)點,主要用于固定區(qū)域目標的定位或識別[1]。Eye-in-Hand方式是在機器人手臂末端安裝相機,相機隨著機器人手臂末端一起運動,賦予機器人主動視覺功能[2-3]。確定機器人執(zhí)行末端與相機的相互位姿變換關(guān)系,需要手眼標定[4],該技術(shù)直接影響到機器人視覺伺服控制功能的精確實現(xiàn)。
手眼標定方法主要分為需要標定參考物和不需要標定參考物兩大類。不需要標定參考物的方法標定復雜,受干擾因素多[5-7]。需要標定參考物的傳統(tǒng)方法是運行機器人使其末端帶動相機,以兩種位姿觀測同一標定參考物,整合兩組采集結(jié)果,獲得一個標定方程。手眼標定法求解的非線性和不穩(wěn)定性問題一直是機器人視覺伺服領(lǐng)域的研究熱點之一。主要求解方法有:文獻[8-11]基于傳統(tǒng)標定方程推導了經(jīng)典求解兩步法;文獻[12-16]對傳統(tǒng)標定方程進行了變換,同時求解了旋轉(zhuǎn)矩陣和平移向量;還有少部分研究[17-18]對標定方程進行了改進再求解。
本文以機器人帶動相機采集一次數(shù)據(jù)獲得一個標定方程,采用Kronecker product算法和最小二乘法對多個標定方程進行求解,并用Levenberg-Marquardt算法對其進行優(yōu)化,通過仿真平臺的可視化模塊驗證該標定方法的有效性。在不同噪聲水平和采集圖像數(shù)量下運行機器人、觀測標定板,并對求解得到的標定方程與傳統(tǒng)標定法進行比較。最后進行木板視覺抓取試驗,驗證整體視覺系統(tǒng)精度。
圖1 傳統(tǒng)手眼標定方法模型Fig.1 Hand-eye calibration model with traditional model
傳統(tǒng)標定方法是將兩種位姿構(gòu)成一個閉環(huán)回路關(guān)系,有
(1)
即
CX=XD
(2)
其中
式中C——相機坐標系在機器人運動前后的位姿變換關(guān)系
D——機器人末端坐標系在機器人運動前后的位姿變換關(guān)系
X——相機坐標系到機器人末端坐標系的位姿變換關(guān)系
即所求手眼關(guān)系轉(zhuǎn)換成對CX=XD的問題進行求解。
(3)
即
AX=ZB
(4)
通過采集一系列數(shù)據(jù)(A,B),計算相機與機械手上的相對位置X,可直接求解AX=ZB。
圖2 手眼標定方法模型Fig.2 Hand-eye calibration method model
A、X、Z、B為4×4的齊次矩陣,式(4)則可寫成旋轉(zhuǎn)矩陣(姿態(tài))和平移向量(位置),即
(5)
展開式(5),則第i次采集的數(shù)據(jù)滿足
RAiRX=RZRBi
(6)
RAiTX+TAi=RZTBi+TZ
(7)
(8)
可利用Kronecker product算法求解RX與RZ,根據(jù)Kronecker product性質(zhì),式(8)可變換為
(RBi?RAi)9×9vec(RX)=vec(RZ)
(9)
將式(9)變換為
(10)
如果有n組數(shù)據(jù),利用最小二乘法計算,可得
(11)
其中
解得旋轉(zhuǎn)矩陣RX與RZ后,可解平移向量TX與TZ,由式(7)得
RAiTX-TZ=RZTBi-TAi
(12)
將式(12)變換為
(13)
同樣用最小二乘法求解得到平移向量TX、TZ,得到標定結(jié)果。
上述求解方法分開求解姿態(tài)和位置,姿態(tài)部分的誤差會傳遞到位置,從而可能造成標定精度下降。本文采用Levenberg-Marquardt算法對其進行優(yōu)化。對標定的求解過程作為優(yōu)化算法的一個初始化過程,結(jié)果作為優(yōu)化算法的初始值。采用迭代方式降低誤差函數(shù)值。由式(4)得
B=YAX
(14)
其中
Y=Z-1
同樣式(14)可寫成旋轉(zhuǎn)矩陣(姿態(tài))和平移向量(位置)表示形式,即
(15)
對式(15)展開可得
(16)
建立誤差函數(shù)為
(17)
其中
p=(nX1,nX2,nX3,nY1,nY2,nY3,TX1,TX2,TX3,TY1,TY2,TY3)
建立雅可比矩陣J和誤差向量ε為
(18)
(19)
其中
Jfi=
利用Levenberg-Marquardt算法在基于Kronecker product算法與最小二乘求解的初值基礎上進行迭代運算可得最優(yōu)結(jié)果[21-22]。
在ROS仿真系統(tǒng)中,采用標準的棋盤格標定板并固定放置Motoman SDA10型雙臂機器人,即機器人基坐標系不動,編程控制機器人左臂末端帶著需要標定的相機從不同視角拍攝標定板進行數(shù)據(jù)采集,機器人不同動作下獲取的圖像和本身關(guān)節(jié)角自動保存,其中采集圖像如圖3所示。
采集狀態(tài)的機器人運動學正解結(jié)果如表1所示,x、y、z表示位置分量;ow、ox、oy、oz是四元數(shù)表示的姿態(tài)分量。
對應機器人運動的16組狀態(tài),通過張正友相機標定法得到相機標定外參,即標定板世界坐標系到相機坐標系位姿變換關(guān)系矩陣A如表2所示。
利用Kronecker product算法與Levenberg-Marquardt迭代得到手眼標定最終結(jié)果為
圖3 采集的圖像Fig.3 Collected images
表1 16組機器人運動學正解(矩陣B)結(jié)果Tab.1 16 groups of forward solution (B matrix) results of robot kinematics
表2 16組標定板檢測(矩陣A)結(jié)果Tab.2 16 groups of calibration plate detection (A matrix) results
基于標定結(jié)果將深度相機得到的點云數(shù)據(jù)直接投影到ROS系統(tǒng)3D可視化工具Rviz中,如圖4所示,點云與機器人的模型完全匹配,無錯位現(xiàn)象。給定單塊木板在機器人基坐標系下的位姿,可知木板模型的點云相對于機器人基坐標系的位置向量p,另控制機器人帶動相機以不同位姿對單塊木板進行觀測并獲得一系列點云數(shù)據(jù),由機器人正運動學與本文手眼標定算法求得該點云在機器人基坐標系下的位置向量q,并與對應p求得平均歐氏距離即點云匹配誤差為0.1 mm數(shù)量級,說明標定結(jié)果有效,符合要求。
圖4 標定結(jié)果可視化Fig.4 Visualization of calibration results
手眼標定的誤差與機器人本體、相機標定和標定方程求解方法等都有直接關(guān)系。而機器人本體末端定位精度主要跟關(guān)節(jié)角相關(guān),相機標定誤差跟標定模型及外部因素相關(guān),相機標定模型采用張正友經(jīng)典算法[19],外部因素主要有拍攝標定板圖像數(shù)量與特征點提取精度[23]。因此用新標定方法和傳統(tǒng)標定方法對不同噪聲水平下的標定結(jié)果進行對比,用同樣的兩種方法對不同采集圖像幅數(shù)的標定結(jié)果進行對比。
考慮到MOTOMAN SDA10型機器人重復定位精度為±0.1 mm,給機器人各關(guān)節(jié)變量加入期望為0,均方差為σ1的高斯噪聲,其中σ1為[0.002,0.02]區(qū)域10等分的不同值。對機器人帶動相機采集的圖像加入期望為0,均方差為σ2的高斯噪聲,其中σ2為[0.02,0.2]區(qū)域10等分的不同值。對10組σ1和σ2依次配對組成噪聲水平試驗組進行標定,標定仿真過程及分析如下:
(1)給機器人7個關(guān)節(jié)角加入第a組噪聲水平,運行機器人帶動相機以多種位姿觀測標定板圖像,如圖5所示,得到12幅采集圖像。同時根據(jù)機器人正運動學方程可得12個變換矩陣Bi。
圖5 手眼標定數(shù)據(jù)采集試驗Fig.5 Hand-eye calibration data acquisition test
圖6 角點提取效果Fig.6 Corner point extraction effect
(2)對相機拍到的標定板圖像加入第a組噪聲水平,對圖像采用Harris角點提取,效果如圖6所示,由相機標定張正友法[19]求得12個變換矩陣Ai。
(3)使用本文方法得到12個標定方程并求解優(yōu)化Xa,與給定的值X′建立位置向量絕對誤差,以上獨立進行600次試驗,平均位置誤差算式為
(20)
式中t(·)——取變換矩陣的位置向量部分
采用Tsai傳統(tǒng)標定法得到6個標定方程,求解并得到與給定值的位置絕對誤差,標定結(jié)果誤差如圖7所示。
圖7 標定結(jié)果誤差與噪聲水平關(guān)系Fig.7 Relationship between calibration error and noise level
(4)使用同一噪聲水平試驗組σ1~σ2,針對不同的圖像數(shù)量,利用上述流程進行試驗,標定結(jié)果誤差如圖8所示。
圖8 標定結(jié)果誤差與圖像數(shù)量關(guān)系Fig.8 Relationship between calibration error and image quantity
由步驟(3)數(shù)據(jù)可知,同樣數(shù)量的采集數(shù)據(jù)組,手眼標定方法所獲得標定方程比傳統(tǒng)方法多,本文手眼標定法平均精度為3.17 mm,傳統(tǒng)手眼標定法平均精度為4.45 mm,本文方法相對傳統(tǒng)法精度平均提高了30%,隨著噪聲水平的增加,本文算法優(yōu)勢愈加明顯;由步驟(4)可知,同一噪聲水平下,標定精度隨著采集數(shù)據(jù)組數(shù)目增加而提高,本文手眼標定法平均精度為1.36 mm,傳統(tǒng)手眼標定法平均精度為2 mm,本文方法相對傳統(tǒng)法精度平均提高了31.1%,采集圖像數(shù)量越多,精度越高,但在12幅以后,標定結(jié)果趨于穩(wěn)定。
木板抓取流程為:
(21)
(4)由機器人逆運動學實現(xiàn)抓取木板。
將木板放置給定的不同位姿,進行抓取試驗,如圖9所示,利用本文算法求解機器人抓取木板時定位位置與給定位置求歐氏距離得到其定位精度,并與傳統(tǒng)方法相比較,設置木板放置的不同位姿數(shù)量分別為50、100、200、500等,定位精度如表3所示,傳統(tǒng)標定法平均視覺定位精度為2.864 mm,本文方法平均視覺定位精度為1.739 mm,應用本文方法的視覺定位比傳統(tǒng)方法精度平均提高了39.2%,抓取成功率為96.2%,部分失敗的原因是木板放置在機器人關(guān)節(jié)極限范圍以外。
圖9 木板抓取試驗Fig.9 Picking board test
表3 機器人視覺抓取定位精度Tab.3 Robot visual picking position accuracy
(1)該標定方法以機器人帶動相機采集一次數(shù)據(jù),即可獲得一個標定方程,利用Kronecker product算法和最小二乘法對標定方程進行求解,得到的解作為初始值,建立了雅可比矩陣和誤差函數(shù),利用Levenberg-Marquardt算法對其進行優(yōu)化,通過ROS系統(tǒng)中的3D可視化工具Rviz驗證了標定結(jié)果的有效性。
(2)本文方法在手眼標定本身求解精度和應用機器人整體視覺系統(tǒng)定位精度方面相對于傳統(tǒng)方法有一定的提高。相同采集圖像數(shù)量、不同噪聲水平下,本文標定方法位置解精度比傳統(tǒng)標定方法平均提高了30%;相同噪聲水平、不同采集圖像數(shù)量下,本文標定方法位置解精度比傳統(tǒng)標定方法平均提高了31.1%。機器人視覺系統(tǒng)抓取定位精度比傳統(tǒng)標定方法平均提高了39.2%,木板抓取成功率為96.2%。