羅 輝,崔亞飛
(永州職業技術學院智能制造與建筑工程學院,湖南 永州 425100)
隨著《德國工業4.0》、《中國制造2025》[1-2]等戰略的出臺,傳統制造業正逐步進入智能制造時代。機器人關節是機器人組成的關鍵部件,由于機器人種類較多,且需要小批量生產,故機器人關節組裝生產需要大量的和種類繁多的工件。機器人關節組裝過程中,需要大量的人工完成工件的識別和分揀工作,工種自動化程度較低,成為機器人關節生產的瓶頸所在[3]。在工件分揀的生產線上,大多數公司采用傳統的手工分揀。然而,近年來我國勞動力成本急劇上升,人口老齡化嚴重,國內產業升級加速進行,機器視覺作為工業的眼睛,廣泛應用于各個行業,如:路況監控、藥品檢測、車牌識別、人臉識別等各個行業,傳統的手動分揀將沒有任何優勢[4]。因此,將機器視覺技術應用于工業分揀系統具有重要的意義,與傳統的分揀的方法相比,它具有更高的質量、速度和智能[5]。與人類視覺原理相似,機器視覺主要由視覺傳感器組成,首先,它獲取圖像是相機而不是人眼。然后,將圖像傳輸到計算機。經過處理和分析,最終將有用的信息用于實際的檢測、測量和控制[6-7]。
視覺分揀的前提是工件的識別與定位,工件識別定位技術在自動化生產中起著重要的作用,如機械加工、裝配操作和自動分揀等。圖像預處理、特征提取和識別算法等都應用于工件識別定位的實現。在特征提取方面,有矩不變量[8-9]、尺度不變特征變換(SIFT)[10]、加速魯棒特征(SURF)[11]等方法,均具有平移、旋轉、縮放不變性。但是SIFT和SURF非常復雜,當圖像尺寸較大時,它們需要更多的運行時間。顯然,在某些應用領域,它不能滿足實時性的要求。針對大尺寸圖像下工件幾何特征簡單的識別問題,利用Hu矩不變量對工件進行快速、高效的處理。
本文將視覺技術與工件分揀相結合,提出了一種基于OpenCV[12]視覺的機器人關節工件形狀匹配的識別算法,可以使工業機器人分揀作業擁有更高的可靠性,分揀對象及分揀工件種類可隨時變換,提高了機器人關節工件裝配生產的效率和工業機器人分揀系統的智能化程度。基于以上技術優勢基礎,開發和研究基于視覺技術的工件識別與定位系統有著十分重要的意義。
本文主要研究對象是需要組裝的機器人關節工件,機器人關節有I型機器人關節成品套件如圖1所示,每套機器人關節由4個工(部)件組成,分別是關節底座、電機、諧波減速器和輸出法蘭。

圖1 機器人關節工件和成品套件圖示
圖1中,工件1的尺寸分別是:外直徑102 mm;內直徑50 mm;高76 mm;工件2的尺寸分別是:外直徑80 mm;寬50 mm;高55 mm;工件3的尺寸分別是:外直徑80 mm;內直徑15 mm;高8 mm;工件4的尺寸分別是:外直徑90 mm;內直徑15 mm;高16 mm。
本文針對機器人關節工件的特點及視覺檢測的要求,同時考慮到系統成本和生產現場的安裝空間等因素,設計了如圖2所示的機器人關節視覺識別與定位系統裝置。該系統裝置的主要結構包括:圖像采集相機、托盤輸入檢測光電開關、托盤傳送鏈、相機拍照托盤檢測光電開關、步進電機、LED光源、控制柜、托盤等待搬運工位氣擋電池閥、圖像識別工位氣擋電池閥、圖像識別上位機、顯示屏等。

1.圖像采集相機 2.托盤輸入檢測光電開關 3.托盤傳送鏈 4.相機拍照托盤檢測光電開關 5.步進電機 6.LED光源 7.控制柜 8.托盤流出檢測光電開關 9.托盤等待搬運工位氣擋桿 10.圖像識別工位氣擋桿 11.圖像識別上位機 12.顯示屏
圖2 機器人關節視覺識別與定位系統裝置
為了保證待識別工件的圖像采集效果,本文在相機檢測的底部安裝了LED燈,保證了采集光線的充足。同時在圖像采集區位置安裝了氣缸和傳感器,如果有新的工件到達了圖像采集區位置,如圖3所示,則氣缸伸出,保證了圖像采集時的穩定性。

圖3 圖像采集區
機器人關節工件識別與定位的整體流程設計如圖4所示。首先,當有工件到達流水線時,托盤輸入檢測光電開關把檢測到的信號傳給控制器,控制器開始控制托盤傳送鏈運轉并計數。之后,當工件剛離開相機拍照托盤檢測光電開關時,控制器控制電池閥,使圖像識別工位氣擋桿抬起,阻擋工件繼續前進,方便相機更穩定地采集圖像。當相機采集完圖像后,上位機給控制器信號,控制器控制圖像識別工位氣擋電池閥降下,工件繼續前行。最后,當工件到達托盤流出檢測光電開關時,控制器控制電池閥,使托盤等待搬運工位氣擋桿抬起,阻擋工件繼續前進,等待進一步的處理信號。

圖4 系統整體流程方案
圖像的預處理是工件準確識別的重要組成部分,這個處理的結果將直接影響到后續輪廓的提取。在本文中,圖像預處理主要包括圖像灰度化、均值濾波和自適應閥值分割的圖像二值化。
在OpenCV中,函數cvtColor的作用是將圖像從一個顏色空間轉換為另一個顏色空間。通過設置參數代碼COLOR_RGB2GRAY,可以將GRB轉換為灰色。
在OpenCV中,函數blur是均值濾波,通過圖像內核公式(1),該函數可以進行圖像模糊平滑,該核內的值,求平均值放入核中。
(1)
式中,gsize是進行圖像模糊平滑的尺寸大小。函數blur中borderType有8種邊界模式,用于推斷圖像外部像素的某種邊界模式,本文使用默認值BORDER_DEFAULT。
在OpenCV中,函數adaptiveThreshold對圖像應用自適應閾值,根據如下公式將灰度圖像轉換為二值化圖像:
(1) THRESH_BINARY

(2)
(2) THRESH_BINARY_INV

(3)
式中,T(x,y)是每個像素都單獨計算的閥值,src(x,y)是待計算的像素值。
圖像預處理過程如圖5所示,首先通過相機采集原始工件RGB圖像,如圖5①,然后把原始圖像灰度化,如圖5②。由于灰度化的圖像具有干擾點,影響圖像的后期處理,所以有必要對灰度化圖像進行濾波去噪,本文使用的是均值濾波,如圖5③。最后使用自適應閾值濾波去除較小的干擾,如圖5④。

圖5 圖像預處理過程圖
機器人關節工件輪廓提取的目的是為了得到疑似工件的外輪廓,這樣我們就可以得到胡矩不變量。從圖5d中的閾值分割結果可以看到,圖中有一些小的連通區域,這些區域必須去除,否則會影響我們輪廓提取的準確度。因此,在從二值圖像中提取所有的輪廓后,需要計算工件輪廓的面積、周長和圓度。之后,如果從二值圖像中提取輪廓的周長或者圓度小于預給定的閥值,則該輪廓將被移除掉。圓度是表征某一連通區域形狀復雜度的一種特征參數,它是以某一連通區域的面積和周長參數,通過方程(4)計算得到:
(4)
式中,ε表示圓度,S是計算得到的輪廓面積,L是計算得到的輪廓周長,從式中我們可以得到,如果某一連通區域的形狀越復雜,則圓度值ε就越小。
工件輪廓提取流程如下,首先需要從圖6①中的閾值分割二值圖像中提取輪廓,提取輪廓效果如圖6②所示,同時,提取的這些輪廓中周長和形狀復雜的連通區域將被移除掉,移除后的效果如圖6③所示。
在OpenCV中,從二值圖像中提取工件輪廓的過程主要用到findContours這個函數算子,使用CV_RETR_TREE這種方法能檢測所有輪廓并建立繼承關系。

圖6 圖像預處理過程圖
幾何矩是1962年由Hu提出,具有平移、旋轉和尺度不變的特性。其分析如下:
(12)對于數字圖像f(x,y),其(p+q)階普通矩和中心矩的公式如下:
(5)
(6)
式中,M,N是圖像的總行數和總列數。
(2)用零階中心矩upq進行歸一化,歸一化中心矩ηpq為:
(7)

(3)構造胡氏7個矩不變量
φ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個矩不變量。
上述7個矩不變量值的范圍變化比較大,可能會出現負值,因此,本文采用下列改進的公式:
mi=sign(φi)log(φi),i=1,2,…,7
(10)
工件輪廓提取與匹配的思路是:首先,需要對模板圖像和待識別圖像進行圖像的預處理。其次,將模板圖像進行二值化,并從二值化模板圖像中提取出目標工件的外輪廓。對于待識別的工件圖像,我們同樣需要將其圖像進行二值化處理,必須提取出待識別工件的所有輪廓,并對輪廓進行區分。之后,我需要算出模板輪廓Hu矩值和待識別圖像中的輪廓Hu矩值。最后,將模板的輪廓與待識別的輪廓進行匹配。工件輪廓提取與匹配過程如圖7所示。

圖7 工件輪廓提取與匹配
在OpenCV中,工件的識別與匹配過程需要使用matchShapes函數算子, 計算比較兩張圖像Hu不變距,該算子有3種有效地使用Hu矩值的比較方法,如下述過程:
(1) CV_CONTOURS_MATCH_I1:
(11)
(2) CV_CONTOURS_MATCH_I2:
(12)
(3) CV_CONTOURS_MATCH_I3:
(13)

如果A和B屬于同一種形狀,則I(A,B)的值將接近于0,經過實踐表明,如果采用公式(11),I(A,B)的值小于0.05時就可以認為A和B屬于同一種輪廓。
由圖1可知,待分類識別的工件共有4個,其中工件1、工件3和工件4通過圖7的步驟提取輪廓信息都是圓形,不同工件的不同點在于圓形輪廓的數量和面積。而工件2只有一種類型,通過圖7的步驟很容易識別。本文的工件識別與分類的過程如圖8所示。
首先,提取待識別工件圖像的輪廓,同時,提取的待識別工件輪廓中周長和面積。然后,取出識別的輪廓分別與匹配模板圓形相比較,如果待識別工件的輪廓沒有圓形,則該工件是工件2,否則比較圓形的數量。如果圓形的數量為3個,則工件為工件4,否則繼續比較圓形的面積。如果待識別工件中圓形面積有兩個大于設定值,則該工件是工件1,否則是工件3。

圖8 工件的識別與分類
在工業應用中,只是識別出工件的種類還不能滿足需求,往往需要求出工件的具體位置和方向,工件的位置確定可以通過計算輪廓的質心獲得到工件的位置公式如下:
(14)
(15)
式中,imageArray(i,j)是一種輪廓的二維點數組。
工件的方向是相對于工件圖像坐標而言的,在確定方向時必須選擇合適的特征。本文針對形狀規則、對稱軸和凸輪輪廓的工件2,通過搜索工件的最小外接矩形可以得到主軸。主軸相對于圖像坐標的傾斜表示工件的方向。
在OpenCV中,函數minAreaRect可以計算并返回指定點集的最小區域邊界矩形。利用該函數,我們可以得到工件輪廓的最小面積邊界矩形,然后根據矩形的4個頂點得到主軸及其垂直線。
但是,本文的工件1、3和4沒有凸輪的輪廓,不能通過外接矩形來確定工件的方向。由于確定工件1、3和4的方向由兩個面積最小圓形輪廓構成,故可以先分別求出兩個小圓的質心坐標(x0,y0)和(x1,y1),通過如下公式求出斜率ε:
(16)
通過公式(16)求出的斜率,進而可以用反三角函數得出工件1、3和4傾斜的角度。
本實驗使用OpenCV中的matchShapes函數匹配待識別工件圖像和模板圖像,該函數的返回值I(A,B)小于0.05時,就可以認為屬于同一種形狀。為了驗證該算法的可行性和有效性,本實驗設計了如圖9所示的工件圖像自動化采集裝置,針對每個工件設計了2種不同擺放位置的實驗,分兩組共采集了8張圖像,實驗圓形模板圖像如圖10a所示,圓矩形模板圖像如圖10b所示,第一組采集待識別的工件1、2、3、4圖像如圖10c,第二組采集待識別的工件1、2、3、4圖像如圖10d。

圖9 工件圖像自動化采集裝置

(a) 圓形模板 (b) 圓矩形模板

(c) 第一組采集待識別的工件1、2、3、4圖像

(d) 第二組采集待識別的工件1、2、3、4圖像圖10 模板圖像和工件采集圖像
本實驗讓采集的兩組圖像的每個工件圖像的輪廓分別與圓形模板10a和圓矩形模板10b的輪廓進行匹配,匹配的返回的結果就是每個目標圖像中輪廓與模板圖像輪廓的相似度。當目標圖像輪廓與模板圖像輪廓的相似度小于0.05的時候,我們認為目標圖像中的輪廓與模板輪廓形狀一樣,否則認為不一樣,并記錄返回結果,匹配結果如表1所示。
由表1可知,第一組共有4個圖像基本都是垂直或水平,每張圖像的平均相似度均小于0.05,故可以認為符合識別判別條件。根據第一組的分析,同樣也可以識別第二組的圖像,同時可以得出第一組和第二組的相似度平均誤差為0.000 418。

表1 工件圖像識別結果
工件定位實驗主要是求出每個工件的質心和傾斜方向,本實驗所用采集圖像如圖10所示,圖10c是第一組,圖10d是第二組。工件1、2、3和4求出定位的方法是使用OpenCV中的moment ()函數找出待識別圖像每個輪廓的輪廓矩,然后再計算出每個輪廓的質心和角度,輪廓的質心和角度數據如表2所示,圖像處理結果如圖11所示。

表2 圖像輪廓的質心和角度識別結果數據

(a) 第一組工件1、2、3和4的質心和角度

(b) 第二組工件1、2、3和4的質心和角度圖11 工件的質心和角度定位結果
本文針對機器人關節工件識別與分揀過程中人工效率低下的問題,提出了一種基于OpenCV視覺的機器人關節工件的識別與定位算法,該算法可以提取待識別工件的輪廓,然后使用Hu矩不變量和模板匹配識別工件類型,同時,也可以得出工件的位置和方向。但是工件識別與定位結果的準確性主要依賴于輪廓提取的精度。實驗結果表明,本文提出的工件識別與定位算法是可行的和高效的,提高了機器人關節工件的分揀效率,具有重要的參考和應用價值。