袁 斌,王 輝,李榮煥,吳瑞明
(1.浙江科技學(xué)院機(jī)械與能源工程學(xué)院,浙江 杭州 310023;2.杭州東城電子有限公司,浙江 杭州 310016)
目前在物流包裝運(yùn)輸、工業(yè)生產(chǎn)制造、餐飲等領(lǐng)域,均出現(xiàn)了視覺(jué)機(jī)器人的應(yīng)用,機(jī)器人作為智能制造中的重要工具,因此被廣泛關(guān)注[1]。零件分揀搬運(yùn)是生產(chǎn)制造中的重要環(huán)節(jié),為了提高視覺(jué)機(jī)器人抓取零件的成功率,提出一種視覺(jué)機(jī)器人的零件識(shí)別與抓取方法。
目標(biāo)識(shí)別與定位是機(jī)器人抓取物體的前提,近年來(lái),在視覺(jué)機(jī)器人抓取物體方面有許多解決方案被提出。文獻(xiàn)[2]提出采用卷積神經(jīng)網(wǎng)絡(luò)識(shí)別物體和單目視覺(jué)定位物體位置的方案,并且取得較理想效果,但單目視覺(jué)定位物體需要提前知道物體的深度信息[3]。文獻(xiàn)[4]基于雙目視覺(jué)技術(shù),采用圖像特征點(diǎn)對(duì)目標(biāo)物體進(jìn)行立體匹配,獲得深度信息,但識(shí)別物體時(shí)易受光線(xiàn)干擾。文獻(xiàn)[5]提出一種具有自動(dòng)識(shí)別與抓取物體的機(jī)械手,但檢測(cè)目標(biāo)時(shí)以矩形框的形式框出物體,對(duì)于L形狀的物體,很難真實(shí)反映出物體真實(shí)的中心位置。
隨著計(jì)算機(jī)計(jì)算能力的提高,基于深度學(xué)習(xí)的算法已經(jīng)普遍應(yīng)用在各個(gè)領(lǐng)域,根據(jù)上述物體識(shí)別與定位方法存在的不足,提出一種解決方法,首先利用YOLOv4-tiny算法識(shí)別物體,然后初步提取出ROI,并送入PSPnet[6]網(wǎng)絡(luò)中進(jìn)一步提取ROI,最后將ROI區(qū)域中的像素進(jìn)行模板匹配,并引入二次項(xiàng)擬合求出亞像素視差。只將感興趣的區(qū)域進(jìn)行模板匹配,可以降低匹配的誤匹配率,提高匹配的效率和精度。在計(jì)算中心坐標(biāo)時(shí),將分割后的圖像做最大內(nèi)接圓,圓心為物體中心,這樣能夠真實(shí)找出物體的最佳抓取點(diǎn),提高抓取的成功率。
實(shí)驗(yàn)設(shè)備分為硬件、軟件,硬件主要包括:筆記本電腦(i5-9300H處理器;12 G,2 667 MHz內(nèi)存,NVIDIA GTX1650顯卡);雙目攝像頭(型號(hào)為H-3040;分辨率3 040*1 520;幀率30幀/s;鏡頭焦距2.6mm);標(biāo)定板GP200-5;一臺(tái)視覺(jué)機(jī)器人。軟件主要包括:Pytorch深度學(xué)習(xí)框架;Opencv庫(kù)。
識(shí)別與定位方法的算法流程,如圖1所示。主要由目標(biāo)檢測(cè)算法、圖像分割算法、模板匹配組成。
圖1 識(shí)別與定位方法的算法流程Fig.1 Algorithm Flow of Identification and Location Method
流程步驟如下:
(1)將待識(shí)別零件放入工作區(qū),并矯正雙目相機(jī)的圖像畸變和采集零件圖像信息。
(2)將左圖像送入YOLOv4-tiny網(wǎng)絡(luò)中,初步提取出物體所在的矩形ROI。
(3)將左圖像的ROI送入圖像分割網(wǎng)絡(luò)中進(jìn)一步提取ROI,并將ROI區(qū)域和右圖像轉(zhuǎn)為灰度圖。
(4)左圖像的灰度ROI區(qū)域與右圖像進(jìn)行初步模板匹配,并截取右圖像中ROI所對(duì)應(yīng)的區(qū)域。
(5)將右圖像中被截取的區(qū)域送入PSPnet網(wǎng)絡(luò)中進(jìn)一步提取ROI。
(6)將右圖像的ROI 進(jìn)行灰度化、二值化、與運(yùn)算生成新的ROI。
(7)把左圖像的ROI與右圖像新的ROI進(jìn)行模板匹配,并計(jì)算亞像素視差。
(8)根據(jù)雙目測(cè)距原理計(jì)算出物體深度信息。
(9)在左圖像的ROI區(qū)域計(jì)算最大內(nèi)接圓,圓心為目標(biāo)物體的像素中心。
(10)根據(jù)三角形相似原理計(jì)算出目標(biāo)所在位置的空間坐標(biāo)。
為了提高零件識(shí)別的魯棒性,采用了深度學(xué)習(xí)方式的目標(biāo)檢測(cè)算法,并對(duì)檢測(cè)精度、實(shí)時(shí)性、場(chǎng)合等因素加以考慮,最后選用YOLOv4-tiny 輕量級(jí)網(wǎng)絡(luò)。YOLOv4-tiny 屬于有監(jiān)督型的深度學(xué)習(xí)算法,它是通過(guò)神經(jīng)網(wǎng)絡(luò)對(duì)物體圖像進(jìn)行特征提取,并按照特征對(duì)物體進(jìn)行分類(lèi)。監(jiān)督型的網(wǎng)絡(luò)需要采集數(shù)據(jù)集進(jìn)行訓(xùn)練,在訓(xùn)練過(guò)程中會(huì)自調(diào)節(jié)到最佳的檢測(cè)精度,并得出網(wǎng)絡(luò)權(quán)重。檢測(cè)網(wǎng)絡(luò)訓(xùn)練完成后,當(dāng)輸入已訓(xùn)練物體的圖像時(shí),檢測(cè)網(wǎng)絡(luò)便可根據(jù)權(quán)重識(shí)別該物體,因此在實(shí)際應(yīng)用過(guò)程中,只需對(duì)想要識(shí)別的物體進(jìn)行打標(biāo)簽并訓(xùn)練即可。YOLOv4-tiny目標(biāo)檢測(cè)算法的網(wǎng)絡(luò)主要由三部分組成:主干特征網(wǎng)絡(luò)(CSPDarknet53-Tiny)、加強(qiáng)特征提取網(wǎng)絡(luò)(FPN)、Yolo head。主干特征網(wǎng)絡(luò)由卷積塊、殘差結(jié)構(gòu)(Resblock_body)構(gòu)成。卷積塊由卷積層(Conv)、歸一化函數(shù)(Batch Norm)、激活函數(shù)(Leaky ReLU)。加強(qiáng)特征提取網(wǎng)絡(luò)由卷積塊、上采樣(Upsample)、堆疊塊(Concat)構(gòu)成。YOLOv4-tiny網(wǎng)絡(luò)結(jié)構(gòu),如圖2所示。
圖2 YOLOv4-tiny網(wǎng)絡(luò)結(jié)構(gòu)Fig.2 Yolov4-tiny Network Structure
Leaky ReLU 激活函數(shù)是將ReLU 激活函數(shù)的負(fù)值區(qū)域賦予一個(gè)非零斜率,表示如下:
式中:ai—在(1,+∞)區(qū)間內(nèi)的固定值。
檢測(cè)的都是小零件,因此將先驗(yàn)框進(jìn)行修改,第一個(gè)Yolo head將圖片劃分為(26×26)的網(wǎng)格用來(lái)檢測(cè)小物體,預(yù)先設(shè)定好的先驗(yàn)框?yàn)椋?3,27),(37,58),(50,50);第二個(gè)Yolo head將圖片劃分為(13×13)的網(wǎng)格用來(lái)檢測(cè)稍大物體,預(yù)先設(shè)定的先驗(yàn)框?yàn)椋?0,50),(81,82),(135,169)。
兩個(gè)相機(jī)捕捉同一物體時(shí),物體在兩相機(jī)的像素平面上呈現(xiàn)的位置會(huì)存在差異,這種差異稱(chēng)為視差。雙目立體視覺(jué)技術(shù)就是利用視差來(lái)計(jì)算物體的深度信息。在理想情況下,根據(jù)空間幾何關(guān)系物體的深度信息可以表示為如下式子:
式中:z—目標(biāo)物體深度信息;
f—焦距;
b—兩相機(jī)的距離;
d—視差值。
在實(shí)際情況中相機(jī)安裝、鏡頭畸變等因素都會(huì)產(chǎn)生誤差,因此,在模板匹配之前需要將相機(jī)進(jìn)行標(biāo)定?;冎饕菑较蚧兒颓邢蚧?。畸變模型可由如下式子表示[7]:
式中:(x0,y0)—線(xiàn)性模型計(jì)算得出的圖像點(diǎn)坐標(biāo);
(x,y)—真實(shí)點(diǎn)坐標(biāo);
δx、δy—非線(xiàn)性畸變函數(shù)。
根據(jù)實(shí)際情況,建立單相機(jī)的世界坐標(biāo)系與像素平面坐標(biāo)系之間的轉(zhuǎn)換關(guān)系,表示如下:
式中:s—比例因子;(u,v)—目標(biāo)物體在像素平面上的投影坐標(biāo);dX、dY—像元尺寸;(u0,v0)—主點(diǎn)坐標(biāo);f—相機(jī)焦距;R—旋轉(zhuǎn)矩陣;t—平移矩陣;(Xw,Yw,Zw)—目標(biāo)物體的世界坐標(biāo)。將式子(4)簡(jiǎn)化可得:
式中:K—相機(jī)內(nèi)參矩陣。
根據(jù)式子(5),建立左右相機(jī)的數(shù)學(xué)模型,可以解出物體空間坐標(biāo),其中K、R、t通過(guò)標(biāo)定可以獲得。
為了獲得相機(jī)內(nèi)、外參數(shù)和消除畸變帶來(lái)的誤差,采用張定友棋盤(pán)格標(biāo)定法對(duì)相機(jī)進(jìn)行標(biāo)定。拍攝15張(5×5)mm間距的棋盤(pán)格,并導(dǎo)入MATLAB工具箱中進(jìn)行標(biāo)定。標(biāo)定結(jié)果如下式子:
式中:Al—左相機(jī)內(nèi)參矩陣;Ar—右相機(jī)內(nèi)參矩陣;Bl—左相機(jī)畸變矩陣;Br—右相機(jī)畸變矩陣;R—旋轉(zhuǎn)矩陣;T—平移矩陣。
經(jīng)標(biāo)定后,相機(jī)采集的圖像具有極限約束的特點(diǎn)[8],即左相機(jī)上的目標(biāo)物體與右相機(jī)上的目標(biāo)物體在同一水平線(xiàn)上,極限約束可以大大減少模板匹配的計(jì)算量,極限約束結(jié)果,如圖3所示。
圖3 左右相機(jī)標(biāo)定后的圖像Fig.3 Images After Calibration of Left and Right Cameras
匹配算法基于區(qū)域一般可分為:全局匹配、半全局匹配、局部匹配[9]。全局匹配效果比較好,但運(yùn)行速度較慢,半全局和局部匹配雖然速度較快,但容易受光線(xiàn)、弱紋理等因素干擾,出現(xiàn)誤匹配的概率較大。這里的匹配方法是將目標(biāo)檢測(cè)后的截取框作為匹配對(duì)象,先進(jìn)行粗匹配。由于目標(biāo)檢測(cè)算法截取框都是以矩形的形式,截取時(shí)會(huì)引入干擾像素參與匹配,從而影響匹配精度。為了更加精準(zhǔn)找出屬于目標(biāo)物體本身的像素,需要將圖像進(jìn)行分割后再進(jìn)行匹配。在圖像分割領(lǐng)域中,傳統(tǒng)的分割算法容易受到環(huán)境的影響,如分水嶺算法。為了增加算法的魯棒性,這里采用基于深度學(xué)習(xí)方式的圖像分割算法。PSPnet算法采用MobilenetV2作為主干網(wǎng)絡(luò)提取特征,采用金字塔池化結(jié)構(gòu)進(jìn)行加強(qiáng)特征提取。金字塔池化結(jié)構(gòu)是將特征層劃分為(6×6),(3×3),(2×2),(1×1)大小,然后對(duì)各自區(qū)域進(jìn)行平均池化,金字塔池化結(jié)構(gòu)可以很好解決全局信息丟失的問(wèn)題。PSPnet語(yǔ)義分割網(wǎng)絡(luò),如圖4所示。
圖4 PSPnet語(yǔ)義分割網(wǎng)絡(luò)示意圖Fig.4 Schematic Diagram of PSPnet Semantic Segmentation Network
相機(jī)經(jīng)過(guò)矯正后具有極限約束的特性,因此匹配時(shí)只需將ROI在同一水平線(xiàn)上做搜索。粗匹配是將目標(biāo)檢測(cè)后的截取框送入PSPnet網(wǎng)絡(luò)中分割所得到的新ROI與右圖像進(jìn)行匹配,移動(dòng)步長(zhǎng)為1像素;精匹配是將新ROI與右圖像分割后的目標(biāo)框進(jìn)行匹配,移動(dòng)步長(zhǎng)為1像素。匹配過(guò)程中采用差值的絕對(duì)值(Sum of Ab‐solute Differences,SAD)進(jìn)行相似度評(píng)估,SAD函數(shù)[10]表示如下:
式中:CSAD(p,d)—兩圖像像素值的絕對(duì)差;Il(p)—左圖像中的待匹配區(qū)域;Ir(p-d)—右圖像中視差為d的待匹配區(qū)域。
經(jīng)過(guò)模板匹配得到的視差與相似度曲線(xiàn),如圖5所示。匹配步長(zhǎng)為1像素,因此匹配結(jié)果為像素級(jí)單位。受文獻(xiàn)[11]啟發(fā),為了得到亞像素級(jí)結(jié)果,首先取出相似度最高的三個(gè)坐標(biāo)點(diǎn),并做二次項(xiàng)擬合,最后將擬合出來(lái)的二次項(xiàng)進(jìn)行最值求解,最高點(diǎn)坐標(biāo)為(57.21,0.93),如圖5(b)所示。
圖5 視差與相似度曲線(xiàn)Fig.5 Disparity and Similarity Curve
為了確定目標(biāo)物體的空間位置和提高抓取的成功率,首先對(duì)分割后的物體圖像進(jìn)行輪廓檢測(cè),使用OpenCV 中的cv2.find‐Countours()函數(shù),得出輪廓矩陣。然后取出最大的輪廓Qmax,將輪廓內(nèi)的坐標(biāo)點(diǎn)與輪廓上的坐標(biāo)點(diǎn)進(jìn)行兩點(diǎn)距離計(jì)算。當(dāng)兩點(diǎn)距離最短時(shí),輪廓內(nèi)的坐標(biāo)點(diǎn)為最大內(nèi)接圓圓心點(diǎn),其式子表示如下:
式中:R—內(nèi)接圓半徑;
(xi,yi)—最大輪廓Qmax上的像素點(diǎn);
(xj,yj)—輪廓內(nèi)的像素點(diǎn)。
最大內(nèi)接圓圓心點(diǎn)也是最佳抓取點(diǎn)(u,v),如圖6所示。
圖6 零件最佳抓取點(diǎn)Fig.6 The Best Grabbing Point of Parts
最后結(jié)合上述的亞像素視差值,可計(jì)算出深度信息z,并根據(jù)相似性原理計(jì)算空間坐標(biāo)(Xw,Yw,Zw)。
這里采用三自由度碼垛機(jī)器人,根據(jù)基座坐標(biāo)系與末端位置關(guān)系可得到如下變換式:
式中:cosθi—ci;其中θ—關(guān)節(jié)的旋轉(zhuǎn)自由度;cos(θi+θj)—ci+j;sinθi—si;sin(θi+θj)—si+j;L2、L3—一級(jí)臂長(zhǎng)度和二級(jí)臂長(zhǎng)度;d0—坐標(biāo)原點(diǎn)到一級(jí)臂旋轉(zhuǎn)中心的距離。
根據(jù)式(14)可以得出,末端位置xt、yt、zt與底盤(pán)自由度θ1、一級(jí)臂自由度θ2、二級(jí)臂自由度θ3之間的關(guān)系式:
對(duì)式(15)進(jìn)行求解可得到逆運(yùn)動(dòng)模型,如下式子表示:
根據(jù)逆運(yùn)動(dòng)學(xué)解算結(jié)果,利用Adams 軟件進(jìn)行三次軌跡仿真,為避免抓取零件時(shí),吸盤(pán)與零件出現(xiàn)相對(duì)滑動(dòng),因此在抓取零件時(shí),吸盤(pán)先移動(dòng)到距離零件5mm處,然后吸盤(pán)呈現(xiàn)直線(xiàn)下降的軌跡進(jìn)行抓取,同理,抬取零件時(shí),吸盤(pán)先直線(xiàn)抬取5mm。這樣可以提高抓取的穩(wěn)定性。軌跡仿真,如圖7所示。
圖7 軌跡仿真結(jié)果Fig.7 Trajectory Simulation Results
在機(jī)器人前方搭建工作平臺(tái),如圖8所示。首先,結(jié)合現(xiàn)有的實(shí)驗(yàn)設(shè)備和需求,在平臺(tái)上擺放外接矩形為(35×35)mm、(50×50)mm、(60×35)mm的三種異形且有平面的小零件,然后用雙目相機(jī)對(duì)工作平臺(tái)上的零件進(jìn)行拍攝,拍攝1000張來(lái)自于不同時(shí)間段、光線(xiàn)、擺放方式等情況的圖片作為數(shù)據(jù)集。訓(xùn)練時(shí)將代碼上傳到服務(wù)器進(jìn)行訓(xùn)練,待訓(xùn)練完成后進(jìn)行測(cè)距和抓取實(shí)驗(yàn)。
圖8 機(jī)器人抓取實(shí)驗(yàn)平臺(tái)Fig.8 Robot Grasping Experimental Platform
使用labelimg和labelme軟件分別對(duì)目標(biāo)檢測(cè)數(shù)據(jù)集和語(yǔ)義分割數(shù)據(jù)集進(jìn)行手動(dòng)標(biāo)注,訓(xùn)練時(shí)載入預(yù)訓(xùn)練權(quán)重,預(yù)訓(xùn)練權(quán)重可以加快網(wǎng)絡(luò)模型的收斂,并設(shè)置學(xué)習(xí)率為0.001,迭代到一定的次數(shù)后再設(shè)置學(xué)習(xí)率為0.000 1。在數(shù)據(jù)集的劃分中,90%為訓(xùn)練集,10%為測(cè)試集。網(wǎng)絡(luò)的目標(biāo)檢測(cè)和圖像分割效果,如圖9所示。
圖9 網(wǎng)絡(luò)檢測(cè)結(jié)果Fig.9 Network Detection Results
零件的深度距離是定位的關(guān)鍵所在,因此,使用YOLOv4-tiny+PSPnet算法與Opencv中的SGBM算法、BM算法進(jìn)行測(cè)距對(duì)比實(shí)驗(yàn),并記錄深度距離和計(jì)算誤差率。實(shí)驗(yàn)結(jié)果,如表1所示。根據(jù)表中數(shù)據(jù)可以看出,這里算法深度誤差基本在5mm內(nèi),小于等于吸盤(pán)的緩沖距離,通過(guò)計(jì)算得出平均誤差率大約為0.72%,而SGBM與BM算法的誤差率分別為1.17%、1.66%。
表1 測(cè)距試驗(yàn)結(jié)果Tab.1 Ranging Test Results
實(shí)驗(yàn)對(duì)三種不同零件進(jìn)行抓取,首先,在上位機(jī)軟件中輸入待抓取零件的名稱(chēng)和數(shù)量,然后上位機(jī)軟件與機(jī)器人控制端進(jìn)行socket遠(yuǎn)程通信,使得機(jī)器人根據(jù)設(shè)定的需求完成自主抓取,上位機(jī)軟件,如圖10所示。
圖10 機(jī)器人系統(tǒng)上位機(jī)界面Fig.10 Upper Computer Interface of Robot System
根據(jù)實(shí)驗(yàn),記錄并計(jì)算每種零件識(shí)別的平均精度(average precision,AP)和抓取率。抓取實(shí)驗(yàn)結(jié)果,如表2所示。
表2 抓取實(shí)驗(yàn)結(jié)果Tab.2 Grasp the Experimental Results
實(shí)驗(yàn)結(jié)果表明:設(shè)計(jì)的識(shí)別與抓取方法,零件識(shí)別精度最低95.91%,成功抓取率最低為88%。
這里的方法是采用深度學(xué)習(xí)算法識(shí)別目標(biāo)物體,在物體空間定位中,首先建立雙目視覺(jué)模型進(jìn)行物體定位,并引入圖像分割算法提高物體的定位精度,然后對(duì)分割后的零件圖像進(jìn)行最大內(nèi)接圓的求解,得出最佳抓取點(diǎn),最后使用D-H法對(duì)機(jī)器人進(jìn)行逆運(yùn)動(dòng)學(xué)求解。通過(guò)抓取實(shí)驗(yàn)驗(yàn)證了,該零件抓取方案的可行性,可以滿(mǎn)足一般工業(yè)零件分揀搬運(yùn)需求。