羅 輝,崔亞飛
(永州職業(yè)技術(shù)學(xué)院智能制造與建筑工程學(xué)院,湖南 永州 425100)
隨著《德國(guó)工業(yè)4.0》、《中國(guó)制造2025》[1-2]等戰(zhàn)略的出臺(tái),傳統(tǒng)制造業(yè)正逐步進(jìn)入智能制造時(shí)代。機(jī)器人關(guān)節(jié)是機(jī)器人組成的關(guān)鍵部件,由于機(jī)器人種類較多,且需要小批量生產(chǎn),故機(jī)器人關(guān)節(jié)組裝生產(chǎn)需要大量的和種類繁多的工件。機(jī)器人關(guān)節(jié)組裝過(guò)程中,需要大量的人工完成工件的識(shí)別和分揀工作,工種自動(dòng)化程度較低,成為機(jī)器人關(guān)節(jié)生產(chǎn)的瓶頸所在[3]。在工件分揀的生產(chǎn)線上,大多數(shù)公司采用傳統(tǒng)的手工分揀。然而,近年來(lái)我國(guó)勞動(dòng)力成本急劇上升,人口老齡化嚴(yán)重,國(guó)內(nèi)產(chǎn)業(yè)升級(jí)加速進(jìn)行,機(jī)器視覺作為工業(yè)的眼睛,廣泛應(yīng)用于各個(gè)行業(yè),如:路況監(jiān)控、藥品檢測(cè)、車牌識(shí)別、人臉識(shí)別等各個(gè)行業(yè),傳統(tǒng)的手動(dòng)分揀將沒有任何優(yōu)勢(shì)[4]。因此,將機(jī)器視覺技術(shù)應(yīng)用于工業(yè)分揀系統(tǒng)具有重要的意義,與傳統(tǒng)的分揀的方法相比,它具有更高的質(zhì)量、速度和智能[5]。與人類視覺原理相似,機(jī)器視覺主要由視覺傳感器組成,首先,它獲取圖像是相機(jī)而不是人眼。然后,將圖像傳輸?shù)接?jì)算機(jī)。經(jīng)過(guò)處理和分析,最終將有用的信息用于實(shí)際的檢測(cè)、測(cè)量和控制[6-7]。
視覺分揀的前提是工件的識(shí)別與定位,工件識(shí)別定位技術(shù)在自動(dòng)化生產(chǎn)中起著重要的作用,如機(jī)械加工、裝配操作和自動(dòng)分揀等。圖像預(yù)處理、特征提取和識(shí)別算法等都應(yīng)用于工件識(shí)別定位的實(shí)現(xiàn)。在特征提取方面,有矩不變量[8-9]、尺度不變特征變換(SIFT)[10]、加速魯棒特征(SURF)[11]等方法,均具有平移、旋轉(zhuǎn)、縮放不變性。但是SIFT和SURF非常復(fù)雜,當(dāng)圖像尺寸較大時(shí),它們需要更多的運(yùn)行時(shí)間。顯然,在某些應(yīng)用領(lǐng)域,它不能滿足實(shí)時(shí)性的要求。針對(duì)大尺寸圖像下工件幾何特征簡(jiǎn)單的識(shí)別問題,利用Hu矩不變量對(duì)工件進(jìn)行快速、高效的處理。
本文將視覺技術(shù)與工件分揀相結(jié)合,提出了一種基于OpenCV[12]視覺的機(jī)器人關(guān)節(jié)工件形狀匹配的識(shí)別算法,可以使工業(yè)機(jī)器人分揀作業(yè)擁有更高的可靠性,分揀對(duì)象及分揀工件種類可隨時(shí)變換,提高了機(jī)器人關(guān)節(jié)工件裝配生產(chǎn)的效率和工業(yè)機(jī)器人分揀系統(tǒng)的智能化程度。基于以上技術(shù)優(yōu)勢(shì)基礎(chǔ),開發(fā)和研究基于視覺技術(shù)的工件識(shí)別與定位系統(tǒng)有著十分重要的意義。
本文主要研究對(duì)象是需要組裝的機(jī)器人關(guān)節(jié)工件,機(jī)器人關(guān)節(jié)有I型機(jī)器人關(guān)節(jié)成品套件如圖1所示,每套機(jī)器人關(guān)節(jié)由4個(gè)工(部)件組成,分別是關(guān)節(jié)底座、電機(jī)、諧波減速器和輸出法蘭。
圖1 機(jī)器人關(guān)節(jié)工件和成品套件圖示
圖1中,工件1的尺寸分別是:外直徑102 mm;內(nèi)直徑50 mm;高76 mm;工件2的尺寸分別是:外直徑80 mm;寬50 mm;高55 mm;工件3的尺寸分別是:外直徑80 mm;內(nèi)直徑15 mm;高8 mm;工件4的尺寸分別是:外直徑90 mm;內(nèi)直徑15 mm;高16 mm。
本文針對(duì)機(jī)器人關(guān)節(jié)工件的特點(diǎn)及視覺檢測(cè)的要求,同時(shí)考慮到系統(tǒng)成本和生產(chǎn)現(xiàn)場(chǎng)的安裝空間等因素,設(shè)計(jì)了如圖2所示的機(jī)器人關(guān)節(jié)視覺識(shí)別與定位系統(tǒng)裝置。該系統(tǒng)裝置的主要結(jié)構(gòu)包括:圖像采集相機(jī)、托盤輸入檢測(cè)光電開關(guān)、托盤傳送鏈、相機(jī)拍照托盤檢測(cè)光電開關(guān)、步進(jìn)電機(jī)、LED光源、控制柜、托盤等待搬運(yùn)工位氣擋電池閥、圖像識(shí)別工位氣擋電池閥、圖像識(shí)別上位機(jī)、顯示屏等。
1.圖像采集相機(jī) 2.托盤輸入檢測(cè)光電開關(guān) 3.托盤傳送鏈 4.相機(jī)拍照托盤檢測(cè)光電開關(guān) 5.步進(jìn)電機(jī) 6.LED光源 7.控制柜 8.托盤流出檢測(cè)光電開關(guān) 9.托盤等待搬運(yùn)工位氣擋桿 10.圖像識(shí)別工位氣擋桿 11.圖像識(shí)別上位機(jī) 12.顯示屏
圖2 機(jī)器人關(guān)節(jié)視覺識(shí)別與定位系統(tǒng)裝置
為了保證待識(shí)別工件的圖像采集效果,本文在相機(jī)檢測(cè)的底部安裝了LED燈,保證了采集光線的充足。同時(shí)在圖像采集區(qū)位置安裝了氣缸和傳感器,如果有新的工件到達(dá)了圖像采集區(qū)位置,如圖3所示,則氣缸伸出,保證了圖像采集時(shí)的穩(wěn)定性。
圖3 圖像采集區(qū)
機(jī)器人關(guān)節(jié)工件識(shí)別與定位的整體流程設(shè)計(jì)如圖4所示。首先,當(dāng)有工件到達(dá)流水線時(shí),托盤輸入檢測(cè)光電開關(guān)把檢測(cè)到的信號(hào)傳給控制器,控制器開始控制托盤傳送鏈運(yùn)轉(zhuǎn)并計(jì)數(shù)。之后,當(dāng)工件剛離開相機(jī)拍照托盤檢測(cè)光電開關(guān)時(shí),控制器控制電池閥,使圖像識(shí)別工位氣擋桿抬起,阻擋工件繼續(xù)前進(jìn),方便相機(jī)更穩(wěn)定地采集圖像。當(dāng)相機(jī)采集完圖像后,上位機(jī)給控制器信號(hào),控制器控制圖像識(shí)別工位氣擋電池閥降下,工件繼續(xù)前行。最后,當(dāng)工件到達(dá)托盤流出檢測(cè)光電開關(guān)時(shí),控制器控制電池閥,使托盤等待搬運(yùn)工位氣擋桿抬起,阻擋工件繼續(xù)前進(jìn),等待進(jìn)一步的處理信號(hào)。
圖4 系統(tǒng)整體流程方案
圖像的預(yù)處理是工件準(zhǔn)確識(shí)別的重要組成部分,這個(gè)處理的結(jié)果將直接影響到后續(xù)輪廓的提取。在本文中,圖像預(yù)處理主要包括圖像灰度化、均值濾波和自適應(yīng)閥值分割的圖像二值化。
在OpenCV中,函數(shù)cvtColor的作用是將圖像從一個(gè)顏色空間轉(zhuǎn)換為另一個(gè)顏色空間。通過(guò)設(shè)置參數(shù)代碼COLOR_RGB2GRAY,可以將GRB轉(zhuǎn)換為灰色。
在OpenCV中,函數(shù)blur是均值濾波,通過(guò)圖像內(nèi)核公式(1),該函數(shù)可以進(jìn)行圖像模糊平滑,該核內(nèi)的值,求平均值放入核中。
(1)
式中,gsize是進(jìn)行圖像模糊平滑的尺寸大小。函數(shù)blur中borderType有8種邊界模式,用于推斷圖像外部像素的某種邊界模式,本文使用默認(rèn)值BORDER_DEFAULT。
在OpenCV中,函數(shù)adaptiveThreshold對(duì)圖像應(yīng)用自適應(yīng)閾值,根據(jù)如下公式將灰度圖像轉(zhuǎn)換為二值化圖像:
(1) THRESH_BINARY
(2)
(2) THRESH_BINARY_INV
(3)
式中,T(x,y)是每個(gè)像素都單獨(dú)計(jì)算的閥值,src(x,y)是待計(jì)算的像素值。
圖像預(yù)處理過(guò)程如圖5所示,首先通過(guò)相機(jī)采集原始工件RGB圖像,如圖5①,然后把原始圖像灰度化,如圖5②。由于灰度化的圖像具有干擾點(diǎn),影響圖像的后期處理,所以有必要對(duì)灰度化圖像進(jìn)行濾波去噪,本文使用的是均值濾波,如圖5③。最后使用自適應(yīng)閾值濾波去除較小的干擾,如圖5④。
圖5 圖像預(yù)處理過(guò)程圖
機(jī)器人關(guān)節(jié)工件輪廓提取的目的是為了得到疑似工件的外輪廓,這樣我們就可以得到胡矩不變量。從圖5d中的閾值分割結(jié)果可以看到,圖中有一些小的連通區(qū)域,這些區(qū)域必須去除,否則會(huì)影響我們輪廓提取的準(zhǔn)確度。因此,在從二值圖像中提取所有的輪廓后,需要計(jì)算工件輪廓的面積、周長(zhǎng)和圓度。之后,如果從二值圖像中提取輪廓的周長(zhǎng)或者圓度小于預(yù)給定的閥值,則該輪廓將被移除掉。圓度是表征某一連通區(qū)域形狀復(fù)雜度的一種特征參數(shù),它是以某一連通區(qū)域的面積和周長(zhǎng)參數(shù),通過(guò)方程(4)計(jì)算得到:
(4)
式中,ε表示圓度,S是計(jì)算得到的輪廓面積,L是計(jì)算得到的輪廓周長(zhǎng),從式中我們可以得到,如果某一連通區(qū)域的形狀越復(fù)雜,則圓度值ε就越小。
工件輪廓提取流程如下,首先需要從圖6①中的閾值分割二值圖像中提取輪廓,提取輪廓效果如圖6②所示,同時(shí),提取的這些輪廓中周長(zhǎng)和形狀復(fù)雜的連通區(qū)域?qū)⒈灰瞥簦瞥蟮男Ч鐖D6③所示。
在OpenCV中,從二值圖像中提取工件輪廓的過(guò)程主要用到findContours這個(gè)函數(shù)算子,使用CV_RETR_TREE這種方法能檢測(cè)所有輪廓并建立繼承關(guān)系。
圖6 圖像預(yù)處理過(guò)程圖
幾何矩是1962年由Hu提出,具有平移、旋轉(zhuǎn)和尺度不變的特性。其分析如下:
(12)對(duì)于數(shù)字圖像f(x,y),其(p+q)階普通矩和中心矩的公式如下:
(5)
(6)
式中,M,N是圖像的總行數(shù)和總列數(shù)。
(2)用零階中心矩upq進(jìn)行歸一化,歸一化中心矩ηpq為:
(7)
(3)構(gòu)造胡氏7個(gè)矩不變量
φ1=η20+η02φ2=(η20-η02)2+4η112φ3=(η30-3η12)2+3(η21-η03)2φ4=(η30+η12)2+(η21+η03)2φ5=(η03-3η12)(η30+η12)+[(η30+3η12)2-3× (η21+η03)2]+3(η21-η03) (η21+η03) [3(η30+η12)2-(η21-η03)2]φ6=(η20-η02)[(η30+η12)2-(η21+η03)2]+
4η11(η30+η12)(η21+η03)
(8)
φ7=(3η12-η03)(η30+η12)×[(η30+3η12)2-3× (η21+η03)2]+(3η21-η03) (η21+η03)
[3(η30+η12)2-(η21+η03)2]
(9)
式中,φ1~φ7為胡氏不變矩的7個(gè)矩不變量。
上述7個(gè)矩不變量值的范圍變化比較大,可能會(huì)出現(xiàn)負(fù)值,因此,本文采用下列改進(jìn)的公式:
mi=sign(φi)log(φi),i=1,2,…,7
(10)
工件輪廓提取與匹配的思路是:首先,需要對(duì)模板圖像和待識(shí)別圖像進(jìn)行圖像的預(yù)處理。其次,將模板圖像進(jìn)行二值化,并從二值化模板圖像中提取出目標(biāo)工件的外輪廓。對(duì)于待識(shí)別的工件圖像,我們同樣需要將其圖像進(jìn)行二值化處理,必須提取出待識(shí)別工件的所有輪廓,并對(duì)輪廓進(jìn)行區(qū)分。之后,我需要算出模板輪廓Hu矩值和待識(shí)別圖像中的輪廓Hu矩值。最后,將模板的輪廓與待識(shí)別的輪廓進(jìn)行匹配。工件輪廓提取與匹配過(guò)程如圖7所示。
圖7 工件輪廓提取與匹配
在OpenCV中,工件的識(shí)別與匹配過(guò)程需要使用matchShapes函數(shù)算子, 計(jì)算比較兩張圖像Hu不變距,該算子有3種有效地使用Hu矩值的比較方法,如下述過(guò)程:
(1) CV_CONTOURS_MATCH_I1:
(11)
(2) CV_CONTOURS_MATCH_I2:
(12)
(3) CV_CONTOURS_MATCH_I3:
(13)
如果A和B屬于同一種形狀,則I(A,B)的值將接近于0,經(jīng)過(guò)實(shí)踐表明,如果采用公式(11),I(A,B)的值小于0.05時(shí)就可以認(rèn)為A和B屬于同一種輪廓。
由圖1可知,待分類識(shí)別的工件共有4個(gè),其中工件1、工件3和工件4通過(guò)圖7的步驟提取輪廓信息都是圓形,不同工件的不同點(diǎn)在于圓形輪廓的數(shù)量和面積。而工件2只有一種類型,通過(guò)圖7的步驟很容易識(shí)別。本文的工件識(shí)別與分類的過(guò)程如圖8所示。
首先,提取待識(shí)別工件圖像的輪廓,同時(shí),提取的待識(shí)別工件輪廓中周長(zhǎng)和面積。然后,取出識(shí)別的輪廓分別與匹配模板圓形相比較,如果待識(shí)別工件的輪廓沒有圓形,則該工件是工件2,否則比較圓形的數(shù)量。如果圓形的數(shù)量為3個(gè),則工件為工件4,否則繼續(xù)比較圓形的面積。如果待識(shí)別工件中圓形面積有兩個(gè)大于設(shè)定值,則該工件是工件1,否則是工件3。
圖8 工件的識(shí)別與分類
在工業(yè)應(yīng)用中,只是識(shí)別出工件的種類還不能滿足需求,往往需要求出工件的具體位置和方向,工件的位置確定可以通過(guò)計(jì)算輪廓的質(zhì)心獲得到工件的位置公式如下:
(14)
(15)
式中,imageArray(i,j)是一種輪廓的二維點(diǎn)數(shù)組。
工件的方向是相對(duì)于工件圖像坐標(biāo)而言的,在確定方向時(shí)必須選擇合適的特征。本文針對(duì)形狀規(guī)則、對(duì)稱軸和凸輪輪廓的工件2,通過(guò)搜索工件的最小外接矩形可以得到主軸。主軸相對(duì)于圖像坐標(biāo)的傾斜表示工件的方向。
在OpenCV中,函數(shù)minAreaRect可以計(jì)算并返回指定點(diǎn)集的最小區(qū)域邊界矩形。利用該函數(shù),我們可以得到工件輪廓的最小面積邊界矩形,然后根據(jù)矩形的4個(gè)頂點(diǎn)得到主軸及其垂直線。
但是,本文的工件1、3和4沒有凸輪的輪廓,不能通過(guò)外接矩形來(lái)確定工件的方向。由于確定工件1、3和4的方向由兩個(gè)面積最小圓形輪廓構(gòu)成,故可以先分別求出兩個(gè)小圓的質(zhì)心坐標(biāo)(x0,y0)和(x1,y1),通過(guò)如下公式求出斜率ε:
(16)
通過(guò)公式(16)求出的斜率,進(jìn)而可以用反三角函數(shù)得出工件1、3和4傾斜的角度。
本實(shí)驗(yàn)使用OpenCV中的matchShapes函數(shù)匹配待識(shí)別工件圖像和模板圖像,該函數(shù)的返回值I(A,B)小于0.05時(shí),就可以認(rèn)為屬于同一種形狀。為了驗(yàn)證該算法的可行性和有效性,本實(shí)驗(yàn)設(shè)計(jì)了如圖9所示的工件圖像自動(dòng)化采集裝置,針對(duì)每個(gè)工件設(shè)計(jì)了2種不同擺放位置的實(shí)驗(yàn),分兩組共采集了8張圖像,實(shí)驗(yàn)圓形模板圖像如圖10a所示,圓矩形模板圖像如圖10b所示,第一組采集待識(shí)別的工件1、2、3、4圖像如圖10c,第二組采集待識(shí)別的工件1、2、3、4圖像如圖10d。
圖9 工件圖像自動(dòng)化采集裝置
(a) 圓形模板 (b) 圓矩形模板
(c) 第一組采集待識(shí)別的工件1、2、3、4圖像
(d) 第二組采集待識(shí)別的工件1、2、3、4圖像圖10 模板圖像和工件采集圖像
本實(shí)驗(yàn)讓采集的兩組圖像的每個(gè)工件圖像的輪廓分別與圓形模板10a和圓矩形模板10b的輪廓進(jìn)行匹配,匹配的返回的結(jié)果就是每個(gè)目標(biāo)圖像中輪廓與模板圖像輪廓的相似度。當(dāng)目標(biāo)圖像輪廓與模板圖像輪廓的相似度小于0.05的時(shí)候,我們認(rèn)為目標(biāo)圖像中的輪廓與模板輪廓形狀一樣,否則認(rèn)為不一樣,并記錄返回結(jié)果,匹配結(jié)果如表1所示。
由表1可知,第一組共有4個(gè)圖像基本都是垂直或水平,每張圖像的平均相似度均小于0.05,故可以認(rèn)為符合識(shí)別判別條件。根據(jù)第一組的分析,同樣也可以識(shí)別第二組的圖像,同時(shí)可以得出第一組和第二組的相似度平均誤差為0.000 418。
表1 工件圖像識(shí)別結(jié)果
工件定位實(shí)驗(yàn)主要是求出每個(gè)工件的質(zhì)心和傾斜方向,本實(shí)驗(yàn)所用采集圖像如圖10所示,圖10c是第一組,圖10d是第二組。工件1、2、3和4求出定位的方法是使用OpenCV中的moment ()函數(shù)找出待識(shí)別圖像每個(gè)輪廓的輪廓矩,然后再計(jì)算出每個(gè)輪廓的質(zhì)心和角度,輪廓的質(zhì)心和角度數(shù)據(jù)如表2所示,圖像處理結(jié)果如圖11所示。
表2 圖像輪廓的質(zhì)心和角度識(shí)別結(jié)果數(shù)據(jù)
(a) 第一組工件1、2、3和4的質(zhì)心和角度
(b) 第二組工件1、2、3和4的質(zhì)心和角度圖11 工件的質(zhì)心和角度定位結(jié)果
本文針對(duì)機(jī)器人關(guān)節(jié)工件識(shí)別與分揀過(guò)程中人工效率低下的問題,提出了一種基于OpenCV視覺的機(jī)器人關(guān)節(jié)工件的識(shí)別與定位算法,該算法可以提取待識(shí)別工件的輪廓,然后使用Hu矩不變量和模板匹配識(shí)別工件類型,同時(shí),也可以得出工件的位置和方向。但是工件識(shí)別與定位結(jié)果的準(zhǔn)確性主要依賴于輪廓提取的精度。實(shí)驗(yàn)結(jié)果表明,本文提出的工件識(shí)別與定位算法是可行的和高效的,提高了機(jī)器人關(guān)節(jié)工件的分揀效率,具有重要的參考和應(yīng)用價(jià)值。