楊澤偉,祁宇明,2
(1.天津職業(yè)技術(shù)師范大學(xué)機(jī)器人及智能裝備研究院,天津 300350;2.天津職業(yè)技術(shù)師范大學(xué)天津市智能機(jī)器人技術(shù)及應(yīng)用企業(yè)重點(diǎn)實(shí)驗(yàn)室,天津 300350)
隨著信息科學(xué)通信技術(shù)的發(fā)展及在制造業(yè)中的廣泛應(yīng)用,工業(yè)制造相關(guān)生產(chǎn)正朝著智能化、自動(dòng)化的方向發(fā)展[1],工業(yè)機(jī)器人在其中起到了重要作用。傳統(tǒng)的工業(yè)機(jī)器人只能按照已規(guī)劃好的軌跡運(yùn)行,主要應(yīng)用于一些結(jié)構(gòu)化情景,在噴涂、拋磨、裝配等非結(jié)構(gòu)化場(chǎng)景中,仍需人工配合作業(yè),自動(dòng)化程度不高[2]。而機(jī)器人結(jié)合視覺(jué)傳感器后,可以對(duì)目標(biāo)工件進(jìn)行定位,提高了機(jī)器人在裝配等作業(yè)場(chǎng)景中的自動(dòng)化程度?,F(xiàn)階段,在工業(yè)領(lǐng)域中應(yīng)用的定位方法主要有基于點(diǎn)特征類(lèi)算法[3-5]、基于模板匹配算法[6-7]和基于深度學(xué)習(xí)類(lèi)算法[8]。近年來(lái),基于深度學(xué)習(xí)的目標(biāo)檢測(cè)與定位算法成為主流方法,此類(lèi)算法常用的有R-CNN、Fast-RCNN、Faster-R-CNN、YOLO、SSD等,這些算法與傳統(tǒng)方法相比,雖然精度高,對(duì)遮擋、噪聲、光照有較強(qiáng)的魯棒性,但是訓(xùn)練時(shí)計(jì)算機(jī)所需內(nèi)存空間大,檢測(cè)效率低,定位精度依賴(lài)于訓(xùn)練模型的精確度,這極大地限制了其應(yīng)用[9]。針對(duì)法蘭盤(pán)的形狀特點(diǎn),本文提出一種基于單目相機(jī)的定位方法。該方法可以快速地對(duì)法蘭盤(pán)進(jìn)行定位,解決了當(dāng)法蘭盤(pán)在傳送帶上隨意擺放時(shí)法蘭盤(pán)的定位問(wèn)題,同時(shí)為法蘭盤(pán)和圓盤(pán)類(lèi)工件的定位問(wèn)題提供了思路。
工業(yè)相機(jī)采集到的圖像為RGB彩色圖像,對(duì)三通道依次進(jìn)行處理耗時(shí)較長(zhǎng)。為了滿(mǎn)足系統(tǒng)的實(shí)時(shí)性,采用均值加權(quán)法將原始圖像灰度化為單一通道的圖像。因需使用連通域分析對(duì)法蘭盤(pán)的孔洞特征進(jìn)行提取,故先將圖像進(jìn)行二值化處理。Qtsu自動(dòng)閾值算法對(duì)灰度直方圖為雙峰分布的圖像分割效果較好,且計(jì)算量較小,故本文采用Qtsu自動(dòng)閾值法對(duì)圖像進(jìn)行二值化。Qtsu自動(dòng)閾值法將0~255的每個(gè)整數(shù)值先假設(shè)為閾值,首先計(jì)算這256個(gè)值作為閾值時(shí),前景與背景的灰度級(jí)方差,然后計(jì)算前景方差與背景方差的加權(quán)和,加權(quán)和最小的灰度值為該圖像的分割閾值[10]。二值化后的圖像中存在一些小的弧形連通域,會(huì)對(duì)孔洞特征的提取造成誤差,故將二值化的圖像做開(kāi)運(yùn)算,將一些小連通域消除,減少面積較小的連通域?qū)B通域分析的干擾[11]。預(yù)處理的結(jié)果如圖1所示。其中,圖1(d)為對(duì)二值化進(jìn)行開(kāi)運(yùn)算后的圖像,是將圖1(c)中的細(xì)小連通域去掉的結(jié)果。
圖1 圖像預(yù)處理
常用的像素級(jí)邊緣提取算法有Sobel算子、Canny算子、LOG算子、Robert算子等。其中,Canny算子是一種滿(mǎn)足最有準(zhǔn)則的邊緣算子,其檢測(cè)結(jié)果包括了更多的邊緣信息[12]。使用Canny算子提取到像素級(jí)邊緣,為了提高定位的精度,需要對(duì)得到的邊緣進(jìn)一步處理得到亞像素邊緣。目前,亞像素邊緣提取的方法主要有矩方法、曲線(xiàn)擬合法、插值法。其中,矩方法的精度較高,本文使用矩方法中的Zernike矩進(jìn)行亞像素邊緣細(xì)化。亞像素邊緣階躍模型如圖2所示。圖2中:h為背景的灰度值;k為階躍灰度;l為圓心與邊緣的垂直距離;Φ為x軸與邊緣垂線(xiàn)的夾角。
圖2 亞像素邊緣階躍模型
Zernike的掩模為5×5,根據(jù)文獻(xiàn)[13]的方法,計(jì)算出h、k、l、Φ等參數(shù)后,通過(guò)式(1)選擇滿(mǎn)足條件的邊緣點(diǎn)
式中:μ1為第1類(lèi)中k的平均值;μ2為第2類(lèi)中k的平均值;μ為所有k的平均值。
計(jì)算類(lèi)間方差
當(dāng)σ取得最小值時(shí),得到的閾值為最佳閾值,也就是ε的最佳取值。由于模板的放大效應(yīng),單位圓的半徑變?yōu)镹/2,修正后的亞像素邊緣坐標(biāo)為
式中:(xs,ys)為亞像素邊緣;(x,y)為Canny算子提取的邊緣;N為模板的大小。
亞像素邊緣提取的結(jié)果如圖3所示。
圖3 亞像素邊緣
先對(duì)二值化后的圖像進(jìn)行連通域標(biāo)注,得到所有連通域后,通過(guò)面積作為閾值得到法蘭盤(pán)的孔洞區(qū)域。連通域標(biāo)記算法主要有像素標(biāo)記法、區(qū)域增長(zhǎng)等。本文采用八鄰域連通域標(biāo)注[14],連通域標(biāo)注的結(jié)果如圖4(a)所示。將通過(guò)面積閾值得到的孔洞區(qū)域設(shè)為ROI區(qū)域,在每個(gè)感興趣區(qū)域內(nèi)提取輪廓,根據(jù)輪廓點(diǎn)集分別計(jì)算它們的細(xì)長(zhǎng)度。細(xì)長(zhǎng)度是基于區(qū)域的形狀描述,使用旋轉(zhuǎn)卡殼法[15]得到ROI區(qū)域輪廓的最小外接矩形如圖4(b)所示。
圖4 孔洞特征提取
用其長(zhǎng)邊除以短邊得到細(xì)長(zhǎng)度。圓孔的細(xì)長(zhǎng)度接近1,而長(zhǎng)圓孔的細(xì)長(zhǎng)度>1,因此可以通過(guò)比較細(xì)長(zhǎng)度識(shí)別法蘭盤(pán)上的圓孔與長(zhǎng)圓孔。
通過(guò)預(yù)處理得到工件的二值化圖像,對(duì)二值化圖像進(jìn)行邊緣提取后,得到法蘭盤(pán)的亞像素邊緣,提取的邊緣用于最小二乘擬合,并對(duì)圖像的孔洞特征進(jìn)行提取,得到的孔洞特征用來(lái)對(duì)法蘭盤(pán)的旋轉(zhuǎn)角度進(jìn)行粗定位。
為了實(shí)現(xiàn)機(jī)械臂分揀裝配工件的任務(wù),需要進(jìn)行攝像機(jī)標(biāo)定。將投影到相機(jī)平面的像素坐標(biāo)點(diǎn)投影到三維世界坐標(biāo)系中,確定相機(jī)坐標(biāo)系與世界坐標(biāo)系的相互轉(zhuǎn)換關(guān)系。本文相機(jī)標(biāo)定的模型為針孔模型,像素坐標(biāo)與世界坐標(biāo)系的映射關(guān)系為
式中:ZC為尺度參數(shù);u、v為像素坐標(biāo);XW、YW、ZW為世界坐標(biāo);fx、fy、u0、v0均為相機(jī)內(nèi)參數(shù);R為旋轉(zhuǎn)矩陣;T為平移矩陣;R與T均為相機(jī)的外參數(shù)矩陣。
法蘭盤(pán)的厚度是已知的,故此時(shí)ZW相當(dāng)于已知。先將參數(shù)矩陣合并為
再將ZW提取出來(lái),得到
此時(shí)等式兩邊向量的維數(shù)相同,在等式兩邊乘以參數(shù)矩陣的逆矩陣得到像素坐標(biāo)中的點(diǎn)對(duì)應(yīng)的世界坐標(biāo)。
由于法蘭盤(pán)突出法蘭的邊耳輪廓會(huì)對(duì)圓的擬合造成誤差,需要將邊耳輪廓去除。先使用Shi Tomasi角點(diǎn)檢測(cè)算法[16]將法蘭盤(pán)邊耳輪廓處的4個(gè)拐點(diǎn)檢測(cè)出來(lái),拐點(diǎn)提取如圖5所示。
圖5 拐點(diǎn)提取
檢測(cè)出4個(gè)拐點(diǎn)后計(jì)算其中1個(gè)拐點(diǎn)與其他拐點(diǎn)之間的距離,然后對(duì)求出的距離進(jìn)行排序,計(jì)算其中距離排在中間的點(diǎn)與該點(diǎn)之間連線(xiàn)的直線(xiàn)方程,直線(xiàn)方程為
對(duì)輪廓中的像素點(diǎn)進(jìn)行約束,約束條件為
式中:(x,y)為輪廓里像素點(diǎn)的坐標(biāo)。
將不滿(mǎn)足上式的像素點(diǎn)刪除,即將2條直線(xiàn)包圍區(qū)域內(nèi)的像素點(diǎn)去除掉,得到的輪廓如圖6所示。
圖6 去除邊耳后的輪廓
圓擬合常用的方法有霍夫圓檢測(cè)法、最小二乘擬合法、代數(shù)擬合法等?;舴驁A檢測(cè)法雖然可以檢測(cè)出圓,但其存在計(jì)算量較大,檢測(cè)精度不高等缺點(diǎn)。代數(shù)擬合法雖然精度較高,但計(jì)算量較大,難以滿(mǎn)足實(shí)時(shí)性的要求?;谧钚《朔▓A擬合算法可以較好地提取圓信息[17]。因此,本文使用最小二乘法對(duì)邊緣像素進(jìn)行圓擬合。圓的一般方程為
式中:a、b、c為3個(gè)待求的未知量。
待擬合的點(diǎn)集為1.2節(jié)通過(guò)Zernike矩方法得到的輪廓像素點(diǎn)集(xi,yi),i∈(1,2,3…n),n為邊緣輪廓像素點(diǎn)的個(gè)數(shù)。殘差平方和F(a,b,c)可以表示為
為了得到使殘差平方和最小的a、b、c 3個(gè)參數(shù),對(duì)3個(gè)未知參數(shù)求偏導(dǎo),并令其值為0,其計(jì)算式為
將式(9)代入式(10)中,得
將擬合點(diǎn)集即邊緣點(diǎn)集(xi,yi)代入式(11)中,得到a、b、c參數(shù)的三元一次方程,將其求解得到a、b、c未知參數(shù)的值,再通過(guò)式(12)求得圓心和半徑的值為圓擬合的結(jié)果如圖7所示。
圖7 最小二乘擬合結(jié)果
得到中心點(diǎn)坐標(biāo)后,通過(guò)2.1節(jié)中的坐標(biāo)轉(zhuǎn)換得到法蘭盤(pán)中心點(diǎn)在世界坐標(biāo)系中的坐標(biāo)位置。
為了使機(jī)械臂將工件放置在正確位置,需要獲取工件的姿態(tài)信息,由于法蘭盤(pán)的形狀對(duì)稱(chēng),水平地放置在傳送帶上,故只需獲取法蘭盤(pán)繞其中心軸的旋轉(zhuǎn)角度,其具體步驟如下。
(1)旋轉(zhuǎn)角粗定位
在1.3節(jié)已識(shí)別出長(zhǎng)圓孔區(qū)域,長(zhǎng)圓孔中心位置的坐標(biāo)值通過(guò)統(tǒng)計(jì)特征矩計(jì)算,長(zhǎng)圓孔的中心即其重心,重心的計(jì)算公式為
式中:mpq為像素點(diǎn)橫坐標(biāo)p次方與像素縱坐標(biāo)值q次方的積分;P為長(zhǎng)圓孔區(qū)域的像素點(diǎn)集;xc、yc分別為長(zhǎng)圓孔重心的橫、縱坐標(biāo)。
根據(jù)重心坐標(biāo)計(jì)算通過(guò)2個(gè)重心直線(xiàn)的傾斜角度,該傾角為輸出法蘭盤(pán)旋轉(zhuǎn)角度的粗定位。傾角θ的計(jì)算公式為
式中:(xc1,yc1)、(xc2,yc2)分別為2個(gè)長(zhǎng)圓孔重心的橫、縱坐標(biāo)。
(2)旋轉(zhuǎn)角精定位
本文使用基于區(qū)域灰度值的模板匹配對(duì)輸出法蘭盤(pán)的旋轉(zhuǎn)角度精定位,該方法具有較高的魯棒性,是將模板從左到右,從上到下與待檢測(cè)圖片中與模板重合的部分進(jìn)行相似度計(jì)算。本文采用歸一化互相關(guān)算法——NCC算法,NCC算法對(duì)光照強(qiáng)度的線(xiàn)性變化適應(yīng)性強(qiáng),抗干擾性能較好[18],其計(jì)算公式為
式中:R為待檢測(cè)圖像與模板重合的部分與模板圖像的相似度;(x,y)為待檢測(cè)圖像中被模板覆蓋區(qū)域左上角的像素點(diǎn);n、m為模板圖像的高與寬;I(x+i,y+j)為待檢測(cè)圖像中像素點(diǎn)(x+i,y+j)的像素值;T(i,j)為模板圖像中像素點(diǎn)(i,j)的像素值;Iˉ為待檢測(cè)圖像被模板圖像覆蓋區(qū)域的平均像素值;Tˉ為模板圖像素的平均值。
該方法較明顯的缺陷是當(dāng)工件發(fā)生旋轉(zhuǎn)時(shí),模板圖像不能準(zhǔn)確地匹配出待檢測(cè)圖片中要匹配的位置,造成機(jī)械臂無(wú)法抓取到工件,從而使算法失效。因此,對(duì)該算法進(jìn)行改進(jìn),將輸出法蘭盤(pán)的灰度圖像旋轉(zhuǎn)[θ-1°,θ-0.9°,θ-0.8°,…,θ+0.9°,θ+1°],圖像旋轉(zhuǎn)的步長(zhǎng)為0.1°,步長(zhǎng)太大會(huì)影響定位的精度,而步長(zhǎng)太小會(huì)增加計(jì)算量和系統(tǒng)處理時(shí)間,故選擇步長(zhǎng)為0.1°,θ為上節(jié)中得到的直線(xiàn)傾角,然后將旋轉(zhuǎn)得到的20張圖像再與水平位置子圖進(jìn)行匹配,水平位置子圖如圖8所示。
圖8 水平位置子圖
匹配后每幅圖像都會(huì)得到一個(gè)最大的R值,將得到的20個(gè)R值進(jìn)行比較,R值最大的圖像就是與水平子圖匹配結(jié)果最好的圖像,其角度β就是工件與水平位置的角度,即工件繞其中心軸的旋轉(zhuǎn)角度。模板匹配結(jié)果如圖9所示。
圖9 模板匹配結(jié)果
對(duì)法蘭盤(pán)進(jìn)行定位得到法蘭盤(pán)中心的空間坐標(biāo)及法蘭盤(pán)繞軸心的旋轉(zhuǎn)角度,從而得到工業(yè)機(jī)器人的抓取位置及放置時(shí)機(jī)械臂末端工具的旋轉(zhuǎn)角度。
本文選用型號(hào)為MH2520S的工業(yè)鏡頭,該鏡頭焦距為25 mm,工業(yè)相機(jī)為大華12CG-E面陣彩色相機(jī),相機(jī)的分辨率為1 280×960。相機(jī)固定在拍攝位置時(shí),拍攝法蘭盤(pán)平面的視野為80 mm×60 mm,此時(shí)相機(jī)的拍攝精度為0.25 mm/pixel。使用Intel Core CPU,16 GB RAM的計(jì)算機(jī)平臺(tái)對(duì)圖像進(jìn)行處理,軟件測(cè)試平臺(tái)為Pycharm及OpenCV4.4庫(kù)。為驗(yàn)證本文提出的基于單目相機(jī)的定位方法的有效性,將工件分別旋轉(zhuǎn)至-90°、-45°、0°、45°、90°,并擺放在不同位置,通過(guò)工業(yè)相機(jī)采集工件在這5個(gè)角度的圖像。通過(guò)對(duì)圖像進(jìn)行處理得到工件中心位置和繞主軸的旋轉(zhuǎn)角度,將其與工件的實(shí)際旋轉(zhuǎn)角度和位置進(jìn)行比較,算法有效性驗(yàn)證如表1所示。
表1 算法有效性驗(yàn)證
由表1可知,旋轉(zhuǎn)角度最大誤差為0.1°,平均誤差為0.08°,中心位置的定位誤差<0.3 mm可以滿(mǎn)足工件裝配的精度。根據(jù)表1中程序運(yùn)行時(shí)間可知程序5次運(yùn)行的平均總時(shí)間為377.54 ms,說(shuō)明本文的方法能夠快速定位,并獲得法蘭繞主軸的旋轉(zhuǎn)角度,滿(mǎn)足了機(jī)械臂對(duì)法蘭盤(pán)抓取和裝配的速度要求。
為了驗(yàn)證本文所提方法的穩(wěn)定性,將法蘭盤(pán)隨意擺放在傳送帶上,采集50張?zhí)幱诓煌恢玫姆ㄌm盤(pán)圖像,使用采集到的圖像對(duì)其進(jìn)行定位,得到的算法穩(wěn)定性驗(yàn)證如表2所示。
表2 算法穩(wěn)定性驗(yàn)證
由表2可知,在多次測(cè)試后,平均定位誤差均較小,說(shuō)明算法的穩(wěn)定性能較高。
本文提出一種基于單目相機(jī)的快速識(shí)別及位姿估計(jì)方法。該方法可以對(duì)傳送帶上任意擺放的法蘭盤(pán)進(jìn)行快速定位:首先對(duì)法蘭盤(pán)進(jìn)行亞邊緣像素提取,然后使用最小二乘法對(duì)法蘭盤(pán)邊緣進(jìn)行圓擬合,實(shí)現(xiàn)了對(duì)法蘭盤(pán)中心的精確定位;通過(guò)模板匹配法獲得法蘭盤(pán)繞主軸的旋轉(zhuǎn)角度。本算法計(jì)算量小,位姿檢測(cè)用時(shí)少,精度高。本文所使用的方法還可以應(yīng)用到處理不同的法蘭盤(pán)和圓盤(pán)形工件上。需要指出的是,由于單目相機(jī)只能提取較少的圖像信息,下一步的研究將使用基于雙目視覺(jué)的位姿估計(jì)算法,利用本文提取出的特征點(diǎn)對(duì)法蘭盤(pán)的6D位姿進(jìn)行估計(jì)。