牛 晨,魯照權(quán),魯 飛
(合肥工業(yè)大學(xué)電氣與自動(dòng)化工程學(xué)院,安徽合肥 230009)
工業(yè)化生產(chǎn)過程中,大部分工業(yè)機(jī)器人往往無(wú)法直接獲得工件的位姿信息,執(zhí)行抓取任務(wù)時(shí)一般都是采用人工示教的方式,抓取位姿與工件位姿都需要預(yù)先規(guī)定。但當(dāng)工件的位姿因?yàn)椴淮_定因素發(fā)生變動(dòng)時(shí),會(huì)產(chǎn)生抓取誤差[1]。近年來(lái),隨著機(jī)器視覺技術(shù)的發(fā)展,人們利用機(jī)器視覺技術(shù)對(duì)工件進(jìn)行定位,并將工件的視覺信息傳輸給機(jī)器人,讓機(jī)器人具有“感知能力”進(jìn)而完成定位和抓取任務(wù)。雙目視覺技術(shù)是機(jī)器視覺的重要組成部分,當(dāng)抓取任務(wù)需要目標(biāo)物空間位姿時(shí),不同于單目視覺只能獲取目標(biāo)的二維信息,雙目視覺具備獲取目標(biāo)三維信息的能力。
本文利用目標(biāo)物的點(diǎn)、線特征及其本身幾何約束建立一種基于雙目視覺的空間位姿求解模型。該模型可分為5部分:雙目攝像機(jī)標(biāo)定、目標(biāo)檢測(cè)、特征點(diǎn)提取、立體匹配、位姿計(jì)算。利用SURF算法旋轉(zhuǎn)和尺度不變性[2]搜索匹配模板以檢測(cè)目標(biāo)物所在區(qū)域。位姿檢測(cè)的重點(diǎn)在于如何提取出目標(biāo)物上的特征點(diǎn),特征角點(diǎn)的檢測(cè)精度將直接影響到目標(biāo)物空間位姿的估算精度。而一般的角點(diǎn)檢測(cè)算法如Harris角點(diǎn)檢測(cè)算法存在誤檢和漏檢情況[3],檢測(cè)精度不高。本文對(duì)目標(biāo)區(qū)域進(jìn)行邊緣檢測(cè)[4],利用霍夫變換提取特征邊緣,求解直線交點(diǎn)擬合出目標(biāo)物的特征點(diǎn),提升了角點(diǎn)的檢測(cè)精度。采用基于灰度函數(shù)的雙向區(qū)域匹配算法[5],對(duì)左右兩圖像所檢測(cè)出來(lái)的特征角點(diǎn)進(jìn)行雙向確認(rèn),有效減少了誤匹配的發(fā)生。
最后結(jié)合雙目視覺模型建立圖像特征角點(diǎn)像素坐標(biāo)與用戶坐標(biāo)間的映射關(guān)系計(jì)算目標(biāo)物在用戶坐標(biāo)系下的位姿信息。
機(jī)械臂抓取箱體工件的位姿需要知道其在用戶坐標(biāo)系的位置范圍及相對(duì)朝向。對(duì)于箱體工件而言,由于其本身的幾何約束,只需要求出工件表面的特征點(diǎn)坐標(biāo),經(jīng)過計(jì)算便可確定其位姿信息[6],位姿計(jì)算示意圖如圖1所示。
圖1 位姿計(jì)算示意圖
在圖1中,O-XYZ為用戶坐標(biāo)系,P1、P2、P3為箱體工件平面上的角點(diǎn)。P4為與P1、P2、P3異面的點(diǎn)。以這4個(gè)點(diǎn)建立目標(biāo)物坐標(biāo)系O′-X′Y′Z′,經(jīng)過平移、旋轉(zhuǎn)操作使目標(biāo)物坐標(biāo)系與用戶坐標(biāo)系重合,可得到目標(biāo)物坐標(biāo)系繞用戶坐標(biāo)軸的旋轉(zhuǎn)參數(shù)(θx,θy,θz)。
工件特征角點(diǎn)Pi在用戶坐標(biāo)系的坐標(biāo)Pi=(xi,yi,zi),將2坐標(biāo)系重合可分為4個(gè)步驟:
(1)通過平移使兩坐標(biāo)系原點(diǎn)重合,平移向量為t,平移后各特征角點(diǎn)用戶坐標(biāo)為
(1)
特征角點(diǎn)的新坐標(biāo)為
(2)
(3)
當(dāng)θy為負(fù)時(shí),令θy=π+θy。
(3)在步驟(2)的基礎(chǔ)上繞用戶坐標(biāo)系X軸旋轉(zhuǎn)角度θx,使目標(biāo)物坐標(biāo)系Z′軸與用戶坐標(biāo)系Z軸重合,旋轉(zhuǎn)矩陣為
特征角點(diǎn)的新坐標(biāo)為
(4)
(5)
(4)在Z′坐標(biāo)軸與Z坐標(biāo)軸重合后,繞用戶坐標(biāo)系Z軸旋轉(zhuǎn)角度θz便可使兩坐標(biāo)系重合,旋轉(zhuǎn)矩陣為
特征角點(diǎn)的新坐標(biāo)為
(6)
(7)
(θx,θy,θz)反映了工件相對(duì)于用戶坐標(biāo)的位姿角度。此外,用箱體工件的重心坐標(biāo)(xM,yM,zM)表示工件的總體位置,公式如式(8)。
(8)
攝像機(jī)的線性成像模型如圖2所示。
圖2 線性成像模型
空間點(diǎn)P的用戶坐標(biāo)為(XW,YW,ZW)與投影點(diǎn)p像素坐標(biāo)(u,v)映射關(guān)系如式(9)所示。
(9)
式中:M1屬于相機(jī)內(nèi)參數(shù),由fx,fy,u0,v0決定;M2屬于相機(jī)外參數(shù),由旋轉(zhuǎn)矩陣R和平移向量T決定。
將內(nèi)外參數(shù)矩陣合并,并將左、右2個(gè)相機(jī)線性模型聯(lián)立可有:
將其消元整理后,可得到左、右相機(jī)像素坐標(biāo)與用戶坐標(biāo)的映射關(guān)系:
(10)
通過張正友標(biāo)定法[8]得到參數(shù)矩陣中的參數(shù)。在拍攝過程中,可能存在誤差和噪聲,一般取式(10)的最小二乘解作為理論值。通過該映射關(guān)系,便可用空間點(diǎn)P在左、右相機(jī)中的像素坐標(biāo)估算出其用戶坐標(biāo)(XW,YW,ZW)。
空間位姿檢測(cè)流程如圖3所示。
工件所處的環(huán)境一般比較復(fù)雜,對(duì)所拍攝的圖片進(jìn)行目標(biāo)檢測(cè)有利于甄別目標(biāo)并檢測(cè)目標(biāo)所在區(qū)域,減小后續(xù)圖像處理的計(jì)算量。經(jīng)典的目標(biāo)檢測(cè)算法如采用基于HSV空間的目標(biāo)識(shí)別方法[9]在目標(biāo)物顏色并不鮮明時(shí),檢測(cè)效果并不理想,且受光照影響較大。SURF算法是基于SIFT算法的基礎(chǔ)上提出的一種改進(jìn)算法。其在特征點(diǎn)的提取和匹配速度方面達(dá)到近乎實(shí)時(shí)的水平?;赟URF算法檢測(cè)分離目標(biāo)區(qū)域具體步驟如下:
(1)在單一背景下,目標(biāo)物每旋轉(zhuǎn)45°,左攝像頭便采集1幅圖片,手動(dòng)標(biāo)記目標(biāo)物輪廓,建立離線目標(biāo)物圖片模板庫(kù)。
(2)采集場(chǎng)景圖片,并與模板庫(kù)中的圖片用SURF算法逐一匹配,設(shè)定檢測(cè)閾值(本文閾值設(shè)為7)。特征點(diǎn)匹配個(gè)數(shù)超過這一閾值則認(rèn)為找到目標(biāo)物,否則繼續(xù)與模板庫(kù)下一張圖片匹配直至搜索完成。若直至最后仍未超過閾值則認(rèn)為目標(biāo)物不在此場(chǎng)景中。模板匹配效果如圖4所示。
圖4 模板匹配
(3)由匹配成功點(diǎn)求解模板圖片與場(chǎng)景圖片間的單應(yīng)矩陣[10],將模板圖片的4個(gè)頂點(diǎn)坐標(biāo)由單應(yīng)矩映射到場(chǎng)景圖片中,獲得映射坐標(biāo)A(xA、yA)、B(xB、yB)、C(xC,yC)、D(xD,yD)。以(xmin,ymin)為矩形的左上頂點(diǎn)坐標(biāo),(xmax,ymax)為矩形右下頂點(diǎn)坐標(biāo)截取目標(biāo)區(qū)域。其中xmax、xmin、ymax、ymin分別表示A、B、C、D映射像素坐標(biāo)橫坐標(biāo)的最大值、最小值和縱坐標(biāo)的最大值、最小值。檢測(cè)效果如圖5所示。窗口截取區(qū)域即為目標(biāo)區(qū)域。
圖5 目標(biāo)區(qū)域截取
確定目標(biāo)物所在區(qū)域后,為了獲得箱體工件特征點(diǎn)的像素坐標(biāo),需要對(duì)目標(biāo)區(qū)域做相應(yīng)處理,處理步驟包括邊緣檢測(cè)、直線檢測(cè)和特征直線篩選。
邊緣檢測(cè)的目的是為了提取目標(biāo)物的幾何輪廓,本文采用經(jīng)典Canny算法。當(dāng)目標(biāo)物因光照和遮擋等原因使圖像出現(xiàn)亮度低和對(duì)比度低等情況時(shí),Canny算法的檢測(cè)效果并不理想。適當(dāng)增強(qiáng)圖像的對(duì)比度,使得目標(biāo)物與背景顏色對(duì)比更為明顯以便適度增大Canny算法梯度閾值以去除無(wú)關(guān)邊緣和噪聲干擾。對(duì)圖5中目標(biāo)區(qū)域邊緣檢測(cè)效果如圖6所示。
圖6 目標(biāo)物邊緣檢測(cè)
檢測(cè)出目標(biāo)物的邊緣輪廓后,利用霍夫變換[11-12]以提取特征直線。
一條特征直線可能對(duì)應(yīng)霍夫變換檢測(cè)出的多條線段。為了檢測(cè)結(jié)果的準(zhǔn)確性,要根據(jù)實(shí)際情況選擇兩點(diǎn)之間的距離閾值(小于此閾值則認(rèn)為這兩點(diǎn)屬于同一條線段)、線段長(zhǎng)度閾值(大于此閾值則返回該線段參數(shù))?;舴蜃儞Q檢測(cè)的直線會(huì)有多條,需要從中篩選出特征直線。特征直線的篩選需滿足以下條件:
(1)線段是目標(biāo)物與背景的分界線,一側(cè)像素為背景色,一側(cè)像素偏目標(biāo)物表面顏色?;叶忍荻炔町愝^大,屬于強(qiáng)邊緣。
(2)雖然目標(biāo)物上各條平行的棱在圖片上不會(huì)嚴(yán)格平行,但其θ值差異不會(huì)過大,如圖6中線段1、2、3的θ值相近。因此以強(qiáng)邊緣特征直線θ值為基準(zhǔn),設(shè)置偏差閾值,經(jīng)多次試驗(yàn),閾值取±15°時(shí)篩選的特征直線較為可靠?;舴蜃儞Q檢測(cè)特征直線效果如圖7所示。
圖7 霍夫變換直線篩選
篩選出特征直線后,為了防止直線處于垂直狀態(tài)時(shí)斜截式無(wú)法表示,直線應(yīng)用兩點(diǎn)式表示。計(jì)算它們的交點(diǎn)坐標(biāo)。
用上述方法對(duì)左、右圖像做同樣處理,得到各候選特征點(diǎn)的左、右圖像像素坐標(biāo)。
立體匹配的目的是為了確定左右圖像中的特征點(diǎn)的對(duì)應(yīng)關(guān)系[13]。利用霍夫變換檢測(cè)直線進(jìn)而擬合出特征角點(diǎn)計(jì)算工件的位姿,僅需利用特征點(diǎn)像素周圍的局部信息計(jì)算匹配代價(jià),匹配左、右圖像中所檢測(cè)出的特征點(diǎn)。同時(shí),局部立體匹配算法相較于其他立體匹配算法,具有計(jì)算復(fù)雜度低,時(shí)間效率高的優(yōu)點(diǎn)[14]。采用雙向灰度相關(guān)匹配,對(duì)一個(gè)匹配特征點(diǎn)進(jìn)行雙向確認(rèn),以減少誤匹配的發(fā)生。
特征點(diǎn)立體匹配流程圖如圖8所示。
圖8 特征點(diǎn)立體匹配流程圖
考慮相機(jī)的安裝偏差因素,圖像的搜索區(qū)域高度設(shè)置為[vk-5,vk+5],寬度為[uk-d,uk+d]。d表示圖像寬度的1/4,灰度相關(guān)函數(shù)[15]為
(11)
由式(11)計(jì)算出的相關(guān)分值區(qū)間為[-1,1],匹配窗口完全相似時(shí)分值為1,完全不相似時(shí)分值為-1。取n=m=5,匹配閾值設(shè)為0.85。
本文采用張正友標(biāo)定法對(duì)2個(gè)攝像頭分別進(jìn)行標(biāo)定。標(biāo)定物為標(biāo)準(zhǔn)棋盤格,左、右攝像頭內(nèi)外參數(shù)標(biāo)定結(jié)果見表1、表2。
表1 左攝像頭內(nèi)外參數(shù)表
表2 右攝像頭內(nèi)外參數(shù)表
為便于測(cè)量工件角點(diǎn)實(shí)際坐標(biāo),工件均水平放置。本文共進(jìn)行了30組實(shí)驗(yàn),從中選取3組P1~P4坐標(biāo)實(shí)驗(yàn)數(shù)據(jù)見表3。
表3 位姿檢測(cè)實(shí)驗(yàn)數(shù)據(jù)表 mm
表3(續(xù))
實(shí)驗(yàn)所用工件長(zhǎng)a=150 mm,寬b=100 mm,高h(yuǎn)=40 mm,利用式(12)可以計(jì)算得出抓取平面各邊的理論長(zhǎng)度,進(jìn)而得到其與實(shí)際長(zhǎng)度的誤差。其對(duì)比見表4。
表4 抓取平面邊長(zhǎng)與實(shí)際邊長(zhǎng)對(duì)比 mm
(12)
由表4可知本文測(cè)量模型得到的抓取平面各邊理論邊長(zhǎng)與實(shí)際邊長(zhǎng)相差很小,其平均誤差不超過1mm。
根據(jù)表3實(shí)驗(yàn)數(shù)據(jù)可計(jì)算得出用戶坐標(biāo)系下工件重心位置坐標(biāo)和工件姿態(tài)角度。其重心坐標(biāo)理論值和實(shí)際數(shù)據(jù)對(duì)比見表5。
表5 重心坐標(biāo)理論值與實(shí)際值對(duì)比 mm
由表5可知重心理論坐標(biāo)與實(shí)際坐標(biāo)最大平均誤差為1.57 mm,不超過2 mm,滿足誤差要求。
工件在用戶坐標(biāo)系下姿態(tài)角理論值與實(shí)際值對(duì)比見表6。
表6 姿態(tài)角理論值與實(shí)際值對(duì)比 (°)
由于工件均是水平放置,θx、θy理論上為0°。本文測(cè)量模型計(jì)算的θx、θy均接近于0°,且θz理論值與實(shí)際值最大誤差為3.33°,不超過4°,滿足誤差要求。
實(shí)驗(yàn)中,特征點(diǎn)與相機(jī)間的深度距離與其橫坐標(biāo)成正比,與縱坐標(biāo)成反比。當(dāng)把工件重心的縱坐標(biāo)分別設(shè)置為0、25、50、75、100 mm時(shí),工件重心坐標(biāo)Z值的絕對(duì)誤差與橫、縱坐標(biāo)間的關(guān)系如圖9所示。
圖9 不同位置下三維坐標(biāo)Z的誤差
由圖9可以看出,Z的絕對(duì)誤差隨著深度距離的增大,總體呈增大趨勢(shì)。且誤差的波動(dòng)幅度隨著深度距離的增大而變大。
本文建立了一種基于雙目視覺的箱體工件空間位姿檢測(cè)模型。該位姿檢測(cè)模型結(jié)構(gòu)簡(jiǎn)單,易于實(shí)現(xiàn)。在目標(biāo)檢測(cè)部分,采集目標(biāo)物在不同角度下的圖片建立模板庫(kù),再對(duì)場(chǎng)景圖片利用SURF算法搜索匹配該模板庫(kù),結(jié)合匹配結(jié)果確定不同場(chǎng)景下目標(biāo)物所在區(qū)域;在特征點(diǎn)提取部分,利用霍夫變換擬合提取特征點(diǎn),減小了角點(diǎn)的檢測(cè)誤差。最終,結(jié)合雙目視覺原理,實(shí)現(xiàn)了目標(biāo)的識(shí)別和位姿檢測(cè)。為后續(xù)機(jī)械臂執(zhí)行抓取任務(wù)奠定了基礎(chǔ)。實(shí)驗(yàn)結(jié)果顯示重心坐標(biāo)平均檢測(cè)誤差不超過2 mm,姿態(tài)角度檢測(cè)誤差不超過4°,驗(yàn)證了該方法的可行性。