趙瀟安
(桂林電子科技大學(xué) 電子工程與自動(dòng)化學(xué)院,桂林541004)
工業(yè)機(jī)器人在物體抓取、自動(dòng)裝配、噴涂、搬運(yùn)碼垛、焊接等場(chǎng)合的應(yīng)用越來(lái)越廣泛[1]。 與使用傳統(tǒng)的示教方法搭建機(jī)器人抓取系統(tǒng)相比較,基于視覺(jué)的工業(yè)機(jī)器人抓取系統(tǒng), 提升了其靈活性和穩(wěn)定性,極大地拓寬了工業(yè)機(jī)器人的應(yīng)用空間。
在2D 相機(jī)的工業(yè)機(jī)器人視覺(jué)研究中, 文獻(xiàn)[2]使用發(fā)那科FANUC 機(jī)器人通信模塊與標(biāo)定算法,通過(guò)圖像處理提取輪廓中心為特征點(diǎn);文獻(xiàn)[3]提出基于圖像梯度優(yōu)化與評(píng)分的方法,以解決目標(biāo)物體的識(shí)別與定位問(wèn)題;文獻(xiàn)[4]采用最小二乘算法擬合直線, 然后根據(jù)直線計(jì)算目標(biāo)物體的傾斜角度;文獻(xiàn)[5]提出基于直線特征的位姿測(cè)量方法SoftNewton,構(gòu)建了直線的匹配評(píng)價(jià)函數(shù), 再采用高斯牛頓迭代算法解算目標(biāo)位姿;文獻(xiàn)[6]采集2 幅圖像通過(guò)雙視圖幾何的等效約束來(lái)解算目標(biāo)物體的旋轉(zhuǎn)姿態(tài)角度。
為了有效地提取目標(biāo)物體的姿態(tài)角度信息,在此提出根據(jù)聚類中心之間中點(diǎn)與角點(diǎn)之間的歐式距離提取角點(diǎn)的方法,然后以角點(diǎn)作為特征點(diǎn)提取虛擬向量,采用相互匹配的向量計(jì)算出目標(biāo)物體的姿態(tài)角度。
為了通過(guò)圖像獲取工業(yè)機(jī)器人的末端姿態(tài)數(shù)據(jù),搭建工業(yè)機(jī)器人圖像數(shù)據(jù)測(cè)量平臺(tái)。 平臺(tái)硬件由垂直多關(guān)節(jié)六自由度重復(fù)定位精度為0.03 mm 的機(jī)器人,圖像分辨率為2048×1536 和水平/垂直像素為3.45 μm×3.45 μm 的攝像機(jī), 以及工業(yè)計(jì)算機(jī)等組成。
在工業(yè)機(jī)器人視覺(jué)系統(tǒng)中,上位機(jī)通過(guò)以太網(wǎng)總線的通信方式與工業(yè)機(jī)器人控制系統(tǒng)通信。圖像處理軟件采用德國(guó)MVtec 公司研發(fā)的HALCON機(jī)器視覺(jué)軟件, 利用導(dǎo)出的C# 文件開發(fā)工業(yè)機(jī)器人通信模塊。 工業(yè)機(jī)器人圖像數(shù)據(jù)測(cè)量平臺(tái)如圖1所示。
圖像數(shù)據(jù)測(cè)量平臺(tái)攝像機(jī)安裝方式采用eyeto-hand 結(jié)構(gòu),將工業(yè)攝像機(jī)固定在支架末端。 通過(guò)手眼標(biāo)定計(jì)算得到工業(yè)攝像機(jī)坐標(biāo)系在工業(yè)機(jī)器人基坐標(biāo)系中的位置。 使用文獻(xiàn)[7]的標(biāo)定算法得到攝像機(jī)內(nèi)外參數(shù),通過(guò)計(jì)算獲得圖像的內(nèi)部參數(shù)與標(biāo)定板所處平面坐標(biāo)系相對(duì)于相機(jī)坐標(biāo)系的轉(zhuǎn)換關(guān)系。
畸變圖像以及通過(guò)圖像畸變矯正后得到圖像的復(fù)原圖,如圖2 所示。
目前, 基于2D 視覺(jué)的工業(yè)機(jī)器人抓取系統(tǒng)多采用SIFT,SURF[8-9]等特征檢測(cè)算法。 然而,這些算法的特征點(diǎn)檢測(cè)依賴于尺度空間的選擇,在實(shí)際使用過(guò)程中不可避免地存在特征點(diǎn)的漏檢。
在圖像的微觀結(jié)構(gòu)中,圖像的邊緣輪廓由微小的像素構(gòu)成。 以三角柱和立方體的平面拍攝圖為例,目標(biāo)物體的角點(diǎn)作為特征點(diǎn)。在此通過(guò)模板a 與模板b 遍歷圖像中所有的邊緣像素點(diǎn),若該像素點(diǎn)擁有2 個(gè)灰度變換方向,則保留該點(diǎn)為粗角點(diǎn)。
在幾何目標(biāo)物體的平面圖中,輪廓可以被描述為由多個(gè)三角形組成。 在如圖3 所示立方體的輪廓內(nèi)可以提取出三角形r1,r2;在如圖4 所示六棱柱的平面圖中可以提取出三角形R1,R2,R3。 由此分析可知,角點(diǎn)的分析涉及構(gòu)成幾何的基本單元——三角形。 故在此對(duì)典型的基本單元三角形進(jìn)行角點(diǎn)提取的研究。
圖3 立方體平面圖輪廓三角形劃分Fig.3 Cube plan view outline triangle division
圖4 六棱柱平面圖輪廓三角形劃分Fig.4 Hexagonal prism plan view outline triangle division
邊緣鋸齒以及角點(diǎn)、偽角點(diǎn)與輪廓內(nèi)一點(diǎn)之間的歐氏距離如圖5 所示。 圖中,圖像中存在邊緣鋸齒等干擾因素,造成在角點(diǎn)檢測(cè)中存在大量的偽角點(diǎn)。 在閉合輪廓中,真角點(diǎn)與輪廓內(nèi)其它點(diǎn)的歐式距離存在唯一性,并且存在歐式距離最大值。
圖5 邊緣鋸齒以及角點(diǎn)、偽角點(diǎn)與輪廓內(nèi)一點(diǎn)之間的歐氏距離Fig.5 Edge jagged and Euclidean distance between corner,false corners and a point in the contour
由圖可見(jiàn),輪廓內(nèi)的點(diǎn)與角點(diǎn)之間的歐式距離為dmax,與偽角點(diǎn)之間的歐式距離為d,dmax>d。 故在此提出計(jì)算歐式距離最大值的方法,通過(guò)歐式距離剔除由于偽角點(diǎn)引入的不穩(wěn)定因素。
為了得到更加準(zhǔn)確的角點(diǎn),在圖像處理過(guò)程中引入k-means++修正算法[10]。通過(guò)上述方法計(jì)算出粗角點(diǎn)之后,選擇合適的聚類中心數(shù),計(jì)算獲得所需的聚類中心。
2.3.1 基于兩個(gè)聚類中心之間的中心點(diǎn)角點(diǎn)提取
計(jì)算出聚類樣本與聚類中心之后,可計(jì)算出其中2 個(gè)聚類中心之間的中心點(diǎn)坐標(biāo)。 如圖6 中聚類中心點(diǎn)ci與中心點(diǎn)cˉ所示,有
如圖6 所示,計(jì)算中心點(diǎn)分別與其它聚類樣本內(nèi)的粗角點(diǎn)(真角點(diǎn)與偽角點(diǎn))之間的歐式距離d 為
圖6 聚類中心的中心點(diǎn)與粗角點(diǎn)之間的歐式距離Fig.6 Euclidean distance between the central point of the cluster center and the rough corners
在其它聚類樣本內(nèi),分別保留擁有最大值d 的對(duì)應(yīng)粗角點(diǎn)為真實(shí)角點(diǎn)。在圖6 所示B1區(qū)域內(nèi),dmax>d1,dmax>d2,保留擁有最大值dmax的粗角點(diǎn)即A2為真角點(diǎn)。 使用其它的聚類中心組合與聚類樣本可重復(fù)以上計(jì)算過(guò)程,計(jì)算出各個(gè)角對(duì)應(yīng)的角點(diǎn)。
2.3.2 驗(yàn)證
為提高角點(diǎn)識(shí)別的正確率,對(duì)所提取的角點(diǎn)進(jìn)行驗(yàn)證。
步驟1在提取出的真實(shí)角點(diǎn)之間計(jì)算中心點(diǎn),類似于式(1),重新計(jì)算中心點(diǎn)。
步驟2在各個(gè)聚類樣本中, 重新計(jì)算新得到的中心點(diǎn)與粗角點(diǎn)(真角點(diǎn)與偽角點(diǎn))之間的歐式距離,保留歐式距離最大的對(duì)應(yīng)角點(diǎn)為真實(shí)的角點(diǎn)。
步驟3在每一個(gè)聚類樣本中, 選取與驗(yàn)證前不同的中心點(diǎn), 估計(jì)同一角點(diǎn)。 分2 種情況進(jìn)行討論:
情況1計(jì)算出2 個(gè)角點(diǎn)。 若驗(yàn)證前與驗(yàn)證后得到的角點(diǎn)相同,則該點(diǎn)為最終計(jì)算真角點(diǎn);
情況2若驗(yàn)證前與驗(yàn)證后得到的角點(diǎn)不相同,則重新計(jì)算2 個(gè)角點(diǎn)與對(duì)應(yīng)的聚類中心之間的距離,距離最小者為最終計(jì)算的真角點(diǎn)。重復(fù)步驟1至步驟3,直至所有的角點(diǎn)驗(yàn)證完畢,得到目標(biāo)物體的所有的真角點(diǎn)。
在立方體平面圖中,采用與對(duì)角線平行的虛擬向量L1與L2為特征向量。 三角柱平面圖中采用與三角柱的邊平行的L1′和L2′為虛擬向量, 并以此作為特征向量。 三角柱平面圖與立方體平面圖的虛擬向量如圖7 所示。
圖7 平面圖的虛擬向量Fig.7 Virtual vectors of floor plan
目前,目標(biāo)物體的姿態(tài)旋轉(zhuǎn)角度計(jì)算方法主要采用SIFT 算法和SURF 算法等提取圖像中的特征點(diǎn),通過(guò)估算仿射參數(shù)計(jì)算姿態(tài)旋轉(zhuǎn)角度。 文獻(xiàn)[11]提出采用BRIEF 描述子對(duì)SURF 算法提取的特征點(diǎn)進(jìn)行描述,結(jié)合最近漢明距離融合PROSAC 算法提高特征點(diǎn)的匹配精度。
文獻(xiàn)[12]將軟決策技術(shù)和POSIT 算法[13]結(jié)合,形成SoftPOSIT 算法。 文獻(xiàn)[14]采用尺度不變特征變換SIFT 算法計(jì)算特征點(diǎn),采用特征點(diǎn)主方向匹配特征點(diǎn)并且計(jì)算姿態(tài)旋轉(zhuǎn)角度,算法計(jì)算誤差約為3°。
本文算法也采用假設(shè)與檢驗(yàn)的方法,通過(guò)相互匹配的特征向量之間的夾角計(jì)算姿態(tài)旋轉(zhuǎn)角度。 立方體起始姿態(tài)如圖8 所示,先使用相機(jī)拍照一個(gè)固定放置目標(biāo)物體的圖像,將其作為模板圖像,且目標(biāo)物體的起始姿態(tài)為0°。 姿態(tài)的計(jì)算目的,就是獲得從模板圖像到實(shí)際目標(biāo)的變化包括姿態(tài)旋轉(zhuǎn)角度,從而為工業(yè)機(jī)器人末端抓取提供移動(dòng)信息。
圖8 立方體起始姿態(tài)Fig.8 Origin posture of the cube
在圖像坐標(biāo)系中, 立方體姿態(tài)旋轉(zhuǎn)角度θ 為30°,如圖9 所示。 立方體相對(duì)于模板圖像的起始位置出現(xiàn)了姿態(tài)旋轉(zhuǎn)角度θ,即目標(biāo)圖像。 由于姿態(tài)旋轉(zhuǎn)角度的唯一性,通過(guò)目標(biāo)圖像與模板圖像中目標(biāo)物體之間的比較,獲得工業(yè)機(jī)器人末端抓取的姿態(tài)旋轉(zhuǎn)角度。
圖9 立方體姿態(tài)旋轉(zhuǎn)角度30°Fig.9 Cube posture rotation angle of 30 degrees
通過(guò)本文算法計(jì)算出目標(biāo)物體的姿態(tài)旋轉(zhuǎn)角度。 針對(duì)立方體平面圖的4 個(gè)角點(diǎn)與三角柱平面圖的3 個(gè)角點(diǎn),以2.3 節(jié)獲得的角點(diǎn)為基礎(chǔ),目標(biāo)圖像的虛擬向量、模板圖像的虛擬向量為
式中:(xi,j,yi,j)為模板圖像的角點(diǎn)坐標(biāo),i=1,2,且j=1,2;(Xi,j,Yi,j) 為目標(biāo)圖像的角點(diǎn)坐標(biāo);i 為對(duì)應(yīng)虛擬向量標(biāo)號(hào);j 為虛擬向量對(duì)應(yīng)的角點(diǎn)坐標(biāo)序號(hào)。
計(jì)算出目標(biāo)物體的特征向量之后。 首先假設(shè)目標(biāo)圖像與模板圖像之間的其中一對(duì)特征向量相互匹配。 特征向量之間的夾角為
式中:假設(shè)L1與l1為互相匹配的特征向量;θ 為計(jì)算的旋轉(zhuǎn)輸出角度。 根據(jù)輸出角度,計(jì)算仿射參數(shù)矩陣,并投影余下的特征向量。 即
通過(guò)檢驗(yàn)另外一條特征向量是否重合確定姿態(tài),增加算法的穩(wěn)定性。 若另外一條特征向量沒(méi)有重合則重新匹配,計(jì)算出正確的姿態(tài)角度。
目標(biāo)物體的邊緣輪廓存在角點(diǎn),如圖10 所示。為了提取更加精確的角點(diǎn),在此進(jìn)行了方法的對(duì)比。 采用文獻(xiàn)[15]所述方法根據(jù)角度閾值提取角點(diǎn),試驗(yàn)中以粗角點(diǎn)兩邊夾角>8°為閾值。基于歐氏距離的角點(diǎn)識(shí)別方法,提取出聚類中心之中心點(diǎn)與其它樣本內(nèi)歐式距離最大的粗角點(diǎn)為真角點(diǎn)。
圖10 立方體邊緣輪廓角點(diǎn)Fig.10 Corners of cube edge contour
角點(diǎn)的識(shí)別精度見(jiàn)表1。由表可知,基于歐氏距離的角點(diǎn)識(shí)別方法識(shí)別精確度高,對(duì)所提方法的實(shí)現(xiàn)具有更好的使用效果。
表1 角點(diǎn)識(shí)別精度Tab.1 Corner recognition accuracy
通過(guò)試驗(yàn)驗(yàn)證本文算法,選取立方體與三角柱為試驗(yàn)圖像。 目標(biāo)物體的姿態(tài)旋轉(zhuǎn)角度,如圖11 所示。
在圖像坐標(biāo)系中,三角柱圍繞旋轉(zhuǎn)中心點(diǎn)從5°旋轉(zhuǎn)至60°, 立方體圍繞旋轉(zhuǎn)中心點(diǎn)從5°旋轉(zhuǎn)至85°。 在圖像處理過(guò)程中,圖像沒(méi)有噪聲等干擾的情況下,目標(biāo)物體沒(méi)有發(fā)生平移變換。
采用所提出的目標(biāo)物體姿態(tài)角度估計(jì)算法,評(píng)估姿態(tài)角度的誤差。 三角柱和立方體的姿態(tài)角度計(jì)算誤差如圖12 所示。
圖11 目標(biāo)物體姿態(tài)角度Fig.11 Posture angle of target object
圖12 目標(biāo)物體姿態(tài)角度的計(jì)算誤差Fig.12 Calculation error of posture angle of target object
由圖可見(jiàn),立方體的姿態(tài)從0°旋轉(zhuǎn)至85°,最大誤差達(dá)到0.1474°,平均誤差為0.0610°;三角體的姿態(tài)從0°旋轉(zhuǎn)至60°,最大誤差達(dá)到0.5828°,平均誤差為0.2367°。 SIFT 算法對(duì)于分辨率為640×480 的圖像提取特征點(diǎn)需要1.75 s, 分辨率為320×240 的圖像提取特征點(diǎn)所需時(shí)間為0.63 s; 本文算法運(yùn)行時(shí)間小于0.2 s,縮短了圖像中目標(biāo)物體姿態(tài)旋轉(zhuǎn)角度的測(cè)量時(shí)間。
試驗(yàn)中,利用圖11 所示立方體的平面圖與三角柱的平面圖為試驗(yàn)對(duì)象。 采用尺度不變特征變換SIFT 算法提取圖像特征點(diǎn),計(jì)算出模板圖像與目標(biāo)圖像中對(duì)應(yīng)匹配的3 個(gè)特征點(diǎn)后,采用三點(diǎn)法計(jì)算出仿射參數(shù)與姿態(tài)旋轉(zhuǎn)角度。
三角體的姿態(tài)旋轉(zhuǎn)角度分別為5°,10°,15°,20°,25°,30°,35°; 立方體的姿態(tài)旋轉(zhuǎn)角度分別為5°,10°,15°,30°,35°,40°,45°,50°,55°,60°,75°,80°,85°。 本文算法與SIFT 算法的估計(jì)誤差對(duì)比結(jié)果如圖13 所示。
圖13 目標(biāo)物體姿態(tài)角度估計(jì)誤差的對(duì)比Fig.13 Comparison of posture angle estimation errors of target objects
估計(jì)誤差的試驗(yàn)對(duì)比結(jié)果見(jiàn)表2。 通過(guò)試驗(yàn)對(duì)比,本文提出的算法在物體旋轉(zhuǎn)姿態(tài)角度估計(jì)上準(zhǔn)確度優(yōu)于SIFT 算法。
表2 姿態(tài)角度估計(jì)誤差的對(duì)比結(jié)果Tab.2 Comparison results of posture angle estimation error
在工業(yè)機(jī)器人末端目標(biāo)物體的姿態(tài)獲取中,角點(diǎn)的準(zhǔn)確提取為一個(gè)關(guān)鍵技術(shù)。 所研究的圖像可以抽取為多個(gè)三角形組成的獨(dú)立單元。 在各個(gè)獨(dú)立的三角形中,根據(jù)2 個(gè)聚類中心之間中點(diǎn)與角點(diǎn)之間的歐式距離為依據(jù),提取擁有最大值的粗角點(diǎn)為真角點(diǎn)。 以角點(diǎn)構(gòu)成圖像的特征向量,采用假設(shè)與檢驗(yàn)的方法將模板圖像與目標(biāo)圖像中的特征向量相匹配,以相匹配的特征向量之間的夾角作為目標(biāo)物體的姿態(tài)旋轉(zhuǎn)輸出角度,所獲得工業(yè)機(jī)器人的末端姿態(tài),為視覺(jué)抓取提供必要的參考數(shù)據(jù)。 基于試驗(yàn)采集圖像數(shù)據(jù)進(jìn)行了處理與分析,與尺度不變特征變換SIFT 算法作比較。 試驗(yàn)結(jié)果表明,所提出的方法用于目標(biāo)物體的旋轉(zhuǎn)角度估計(jì)具有較高的準(zhǔn)確度,在實(shí)時(shí)性方面也表現(xiàn)出一定的優(yōu)勢(shì)。