韓 鑫,余永維,杜柳青
(重慶理工大學機械工程學院,重慶400054)
計算機視覺是制約智能分揀機器人的重要技術,故計算機視覺與機器人技術融合成了智能制造領域的研究熱點。目前,在目標檢測領域主要有基于區(qū)域的目標檢測算法,如Faster-RCNN(Faster-Region Convolutional Neural Networks)[1]、Mask-RCNN(Mask-Region Convolutional Neural Networks)[2]等,以及基于回歸的目標識別算法,如單次多框檢測(Single Shot multibox Detector,SSD)算 法[3]、YOLO(You Only Look Once)[4]等。前者檢測精度高,檢測速度慢;后者檢測速度可達到實時,但檢測精度稍有遜色。本文以開源性較好且可以實現實時檢測的SSD算法為基礎,對其進行改進,最終訓練得到了新的目標檢測模型。
在目標定位領域,主要是得到目標空間坐標位置信息與圖像像素信息之間的映射關系,首先通過張正友標定法[5]求解出相機初始的內外參數,然后再以相機初始的內外參數為基礎求解畸變系數,最后用迭代法[6]求出精確解。再通過手眼標定[7]將工業(yè)相機與機器人系統連接起來,實現相機坐標系到機器人世界坐標系轉換,最終得到目標零件在機器人空間坐標系下的三維位置信息,并將該信息傳送到機器人的計算機控制端,最后實現機器人抓取任務[8-10]。
整個識別與抓取系統流程如圖1所示:Kinect相機捕捉到待分揀零件之后將信息傳送至計算機(Personal Computer,PC)端,PC端調用目標檢測模型對圖像進行處理,得到圖像類別與位置信息;然后通過相機標定與手眼標定得到坐標變換關系,將目標零件進行像素坐標系到機器人世界坐標系之間轉換,完成目標零件空間定位;最后將目標零件位置信息傳送到機器人運動控制端驅動機器人完成分揀抓取任務。
圖1 識別與抓取系統流程Fig. 1 Flowchart of detection and grasping system
本文綜合比較了當下主流目標識別算法,最終選取SSD算法為基礎算法。SSD 算法網絡額外層尺寸較小,包含小目標信息有限,且額外層只有一種類型卷積內核,即3×3 內核,存在目標細節(jié)特征遺漏的情況。故SSD算法面對工業(yè)中一些視覺干擾、表面特征不明顯的小零件、零件堆疊以及不同類別零件外形相似等復雜情況時,會發(fā)生漏檢和誤檢,而在實際的工廠生產環(huán)境中,以上的復雜情況往往不可避免。想要提升網絡性能,一般采取的方法是增加網絡寬度與深度,然而,這將導致網絡參數數量增加,進而造成計算量增加和過度擬合的問題。
Inception 結構具有密集矩陣高性能特點,同時還保持著網絡稀疏結構,稀疏連接神經網絡可以通過分析激活值的統計特征,對高度相關的輸出進行聚類并以此構建出一個最優(yōu)的網絡。把稀疏矩陣分解為多個子密集矩陣運算,可以加快收斂。在優(yōu)化神經網絡過程中,隨著神經網絡深度的增加,提取的特征會逐漸變得抽象,每個特征涉及到更大的感受區(qū)域,故Inception 結構中加入了5×5 的大尺寸卷積核;但大尺寸卷積核的加入也會導致計算量的劇增,故Inception 模塊使用了1×1 的卷積核來進行降維。如圖2 所示為降維后的Inception結構,選擇1×1 的卷積核對不同卷積核提取的特征圖進行融合,控制特征圖通道尺寸,增加網絡非線性,以此減少網絡計算量。GoogLeNet Inception V1[11]證明,將完整連接層中至少一半卷積層轉換為稀疏結構,能夠有效解決因參數增加引起的計算量增加和過度擬合問題。
圖2 Inception結構Fig. 2 Inception structure diagram
SSD 的額外層尺寸較小,包含特征信息有限,這些額外層的特征圖將通過卷積運算方式產生目標零件位置和置信度信息。在目標檢測過程中,尺寸較大卷積核用于大尺度目標特征的學習與預測,而小尺寸的卷積核用于小尺度目標特征的學習與預測。因此,額外層頂部特征圖存在目標細節(jié)特征遺漏的情況。因此采用Inception 網絡結構來替換原SSD 網絡中額外層,為了能夠保留更多目標原始細節(jié)特征,還對Inception網絡結構進行了改善,將5×5 卷積核替換成了兩個3×3 卷積核,同時減少Inception網絡中每層特征圖數量,保持特征圖總和與原SSD 網絡額外層特征圖總數相同。在Inception 模塊中的每個卷積層之后都使用批量標準化(Batch Normalization,BN)操作,在靠近輸出端添加了兩個1×1conv 卷積層,以此來降低參數數量,提高計算速度,圖3 為修改后的Inception 網絡結構。
圖3 改進Inception結構Fig. 3 Improved Inception structure diagram
將 Inception 網絡結構替換 conv6、conv7 和 conv8,它們中的每一個都被三個卷積組代替。但隨著神經網絡的加深,特征融合的難度會加大。為了解決這個問題,在額外層中引入了殘差結構,將conv6_2 的輸入和輸出作為conv7_1 的輸入。如圖4 即為整個改進SSD 算法的實現過程:在目標檢測階段,首先將圖像尺寸調整為300×300,然后輸入改進SSD 網絡;先通過VGG16 conv5_3 特征提取網絡,輸出大小為38×38 尺度的特征圖,再經過兩個3×3conv 特征提取網絡,輸出10×10 尺度特征圖,然后進入Inception 特征提取網絡,得到尺度為3×3的特征圖;最后再經過一個卷積層輸出1×1 尺度為特征圖。各種尺度的特征圖分別經過卷積、BN 及激活函數等一系列操作,分別實現對輸入圖像大、中、小三種尺寸目標的檢測。輸出的特征圖通道數包含三類信息,分別是:位置信息、網格單元的置信度和類別信息。然后將得到的特征圖集合,生成8 732 個默認框(default box)。最后,通過對三種尺度的檢測結果進行非極大值抑制(Non-Maximum Suppression ,NMW),輸出對輸入圖像的最終檢測結果。
圖4 改進SSD算法實現過程Fig. 4 Implementation process diagram of improved SSD algorithm
為了提高目標識別算法在遮擋情況下檢測精度,在原損失函數基礎上增加排斥損失[12],改進后損失函數如下:
式中:L(x,c,l,g)表示原損失函數。假設G + = {G}表示所有真實目標框的集合,P + ={P}表示與真實目標框匹配且交并比(Intersection over Union,IoU)大于0.5 的候選框集合,對于候選框P(P ∈P + )而言,指定一個IoU 值最大的目標框作為真實目標,公式如下:
對于P ∈P +而言,因為排斥損失,指定目標之外的相鄰真實目標框與區(qū)域候選框產生排斥,排斥目標即為除其本身之外與其IoU值最大的真實目標:
設BP為候選框P 回歸后產生的預測框為IoG。與的IoG計算如下:
因此排斥損失計算如下:
為了增加該算法在復雜環(huán)境中的適應性,對原網絡結構的非極大值抑制進行了加權,在原非極大值抑制結果中,可能會包含特征的最大值,因此直接調用非極大值抑制結果不夠嚴謹。假設所有邊界框都來自于同一個對象,如果只考慮最大值結果,就會忽略掉通過保持邊界框最高置信度來充分利用對象信息的問題。針對以上問題,在原來非極大值抑制的基礎上進行加權,稱之為非極大值加權
式中:B 表示邊界框集;Ci表示第i 個邊界框置信度;n 表示邊界框的數量表示第i 個具有最大置信度的邊界框;wi則表示每個邊界框的權重。
在第2 章中,目標檢測模型會將目標零件以一個矩形框的形式標注,矩形框幾何中心則為機器人抓取點,以標注框幾何中心為基礎,Kinect 相機采用眼在手外安裝方式,通過彩色幀與深度信息映射函數(MapDepthFrameToColorSpace)得到其深度信息Zc,而此時目標檢測框的幾何中心的深度信息Z0則可以求出,然后通過相機標定和手眼標定坐標系轉換,最后得到零件在機器人世界坐標系下的抓取中心(X0,Y0,Z0)。
相機標定實則為求解幾個坐標系之間轉換關系,如圖5所示,從第2 節(jié)的目標檢測中可以得到零件的像素坐標,通過相機標定,將像素坐標系通過伸縮平移轉換到圖像坐標系下,然后通過透視投影轉換到相機坐標系下,再通過剛體變換轉換到世界坐標系下的過程。通過Matlab標定工具箱進行標定可以獲得相機的內參矩陣M,如式(8)所示。
圖5 相機標定各坐標系關聯圖Fig. 5 Correlation diagram of camera calibration coordinate systems
手眼標定的目的在于求解相機坐標系與機器人世界坐標系之間的轉換關系,如圖6 所示,將標定板固定于機械手末端執(zhí)行器上,相機固定安裝于其他位置,然后對標定板進行拍照。根據圖6 所示,Crobot表示機器人世界坐標系,Ccamera表示相機坐標系,Cg表示機器人末端執(zhí)行器坐標系,Ccal表示標定板表面像素坐標系,表示機器人世界坐標系相對于末端執(zhí)行器的位姿,Tcalg表示末端執(zhí)行器坐標系相對于標定板的位姿,表示相機坐標系相對于標定板的位姿表示機器人世界坐標系相對于相機坐標系的位姿。
圖6 手眼標定各坐標系關聯圖Fig. 6 Correlation diagram of eye to hand calibration coordinate systems
因為Tcal g 是一個常量矩陣保持不變,假設機器人末端執(zhí)行器移動到空間任意兩個點P1,P2,則有以下位姿關系成立:
機器人是整個識別與抓取系統的執(zhí)行機構,考慮到本實驗抓取任務屬于小型零件,因此選用了NACHI 小型高速機器人MZ04 來完成對零件的抓取工作。首先根據機器人DH 參數表(表1)建立桿件坐標系,如圖7所示。
表1 NACHI機器人D-H參數表Tab. 1 D-H parameter table of NACHI robot
圖7 機器人連桿坐標系建立Fig. 7 Construction of robot link coordinate system
機器人正運動學即根據已知的各關節(jié)變量求解末端執(zhí)行器在空間笛卡爾坐標系下的位姿。根據D-H方法建立起連桿坐標系之后,根據D-H 法則即可得到連桿l到連桿l- 1 的坐標系的齊次變換矩陣A1~A6,最終可求得機器人末端執(zhí)行器相對于世界坐標系的位姿矩陣T6:
式中:
機器人逆運動學分析是機器人運動學方程的逆解,即根據已知的末端執(zhí)行器在空間笛卡爾坐標系下的位姿參數求解各個關節(jié)變量的過程,逆運動學的求解方法分為數值法和代數法兩大類。本文采用的NACHI-MZ04型六自由度機器人結構滿足Pieper 準則,所以本節(jié)逆運動學建模采用代數法[14]進行求解。
由正運動學建??傻媚┒藞?zhí)行器位姿,首先對其左乘A-11可得:
然后將式(15)展開,使矩陣兩邊對應元素相等,可求得θ1、θ3:
然后以同樣的方式在式(15)基礎上依次左乘,并將矩陣式展開,使矩陣兩邊對應元素相等可求得
在進行機器人逆運動學建模過程中,會出現多種解,但由于機器人關節(jié)與連桿之間的連接形成的多軸聯動結構限制了某些關節(jié)的轉動變量的范圍,故某些解并不滿足實際情況,應根據機器人空間范圍和具體關節(jié)變量限位選取其中一組最優(yōu)解作為逆運動學建模結果。
六自由度串聯機器人常用的軌跡規(guī)劃表示方法一般有關節(jié)空間軌跡規(guī)劃和笛卡爾空間軌跡規(guī)劃兩種[15],關節(jié)空間軌跡規(guī)劃是基于逆運動學,用曲線進行插值運算得到路徑點,將各關節(jié)變量用時間來表示,整個過程計算簡單且可避免出現機構奇異性的問題。笛卡爾空間軌跡規(guī)劃需要通過逆運動學求得關節(jié)位移,用雅克比矩陣及其導數求得各關節(jié)速度與加速度,計算過程繁雜,對末端執(zhí)行器形狀要求較高,且容易出現速度失控問題。綜上所述,本文選擇關節(jié)空間軌跡規(guī)劃表示方法。根據項目需求,采用了三次B 樣條曲線軌跡規(guī)劃方法。
三次B 樣條曲線軌跡規(guī)劃方法實為通過B 樣條函數反算獲得關節(jié)變量關于時間的函數表達式,假設某時間段三次B樣條曲線函數表達式為:
式中:θ表示各關節(jié)變量;t表示時間且(0 ≤t≤ 1),F(t)表示三次 B 樣條曲線基函數;Vi-1、Vi、Vi+1、Vi+2表示三次 B 樣條曲線控制點。根據關節(jié)軌跡的連續(xù)性原則對上述函數進行求導推算[16],求解結果可用以下矩陣形式表示式(24):
在實際工業(yè)應用中,為了求得更加具體的B 樣條函數表達式,則需要更多的控制點Vi的支撐。在后續(xù)的驗證實驗中,根據相關運動參數和機構參數,進行路徑點已知的軌跡規(guī)劃。運用Matlab 樣條工具箱進行編程,對各關節(jié)變量插值運算得到機器人運動軌跡,驗證結果符合實驗要求。
在目標識別模型訓練實驗中,為了驗證本次對SSD 網絡的改進是否有效,在數據集制作上,針對性地選擇了如圖8 所示的五類零件用于測試改進SSD 網絡的檢測效果,并拍攝了5 000 張零件圖作為數據集,其中隨機選擇4 000 張圖像用于訓練模型,剩下1 000 張圖像作為測試集。圖中bolt 表示M8鍍鋅十字大扁頭螺釘,nut1表示M10尼龍防松螺母,nut2表示M8 鍍鎳滾花大頭螺母,capnut1 表示 M8 鍍鋅螺帽,capnut2 表示M6鍍鋅蓋型螺帽。
目標檢測模型訓練實驗平臺操作系統為Ubuntu16.04,基于CAFFE 框架,學習率為0.001,權重衰減系數為0.000 5,最大迭代次數為60 000,訓練完成后對模型進行召回率測試得到最優(yōu)迭代次數為15 000,最后選取該批次訓練模型為最終模型,部分檢測效果如圖9 所示。在零件檢測效果測試中,特意模擬了實際生產中工作臺多類零件堆疊遮擋、零件裝配、無關雜物堆疊干擾、變換相機角度等復雜情況下,根據檢測效果可得,實驗得到改進SSD模型檢測效果可觀,能夠滿足實際生產環(huán)境對零件的檢測要求。
為了對比改進SSD 算法與原SSD 算法檢測效果,引入測試集圖像進行檢測驗證,檢測對比數據如表2 所示,數據對比結果表明:正常情況下,檢測準確率相差不大;復雜情況下,本文方法檢測準確率達到97.8%,相比原SSD 算法提升11.7 個百分點,在提高復雜情況檢測精度同時還保證了實時性,對復雜情況下的零件識別效果顯著。
表2 改進SSD與SSD在不同環(huán)境下的檢測準確率與檢測時間對比Tab. 2 Comparison of detection accuracy and time of improved SSD and original SSD under different eviroments
根據實際情況,多種零件相互堆疊最貼近生產實際,故分別隨機采取了500 張正常和復雜情況下多種零件相互堆疊的圖像,用于測試SSD 算法和本文改進的SSD 算法的誤檢、漏檢的比率,結果如表3 所示。從表3 可以看出,改進SSD 算法模型性能有所提升,在改進網絡結構中,將三種尺度卷積核配合BN 操作分布式提取更多細節(jié)特征,在訓練過程中,更加細化對特征的提取,能提升模型在遮擋情況下的檢測準確率,使得改進模型得到的坐標框更加貼近真實零件邊緣,減小定位坐標和真實坐標之間的誤差,為后續(xù)的抓取提供更加精確的定位。在非極大值抑制中,為了能夠充分利用高置信度候選框的目標信息,增加非極大值抑制加權改進以提高該模型在光線不足或過曝環(huán)境下的魯棒性。
表3 改進SSD與SSD的誤檢、漏檢數和檢測準確率對比Tab. 3 Comparison of numbers of false and missed detection and detection accuracy of improved SSD and original SSD
通過改進SSD 模型可得到目標零件類別與位置信息,如圖9(c)所示,邊框的位置信息表示幾何中心像素坐標(u0,v0),通過相機標定與手眼標定即可得到目標零件在機器人空間坐標系下的坐標(X0,Y0),通過 Kinect for Windows SDK 中彩色幀與深度信息映射函數可得到目標零件的深度坐標信息Z0。
圖8 零件數據集Fig.8 Part dataset
如圖10 所示為集成實驗臺示意簡圖,可以看到所有識別抓取過程都在圓盤工作臺上實現,在工作臺上共有三個抓取區(qū)A、B、C,在每個抓取區(qū)域隨機選擇三個點,分別是Q1(260,50)、Q2(350,- 240)、Q3(600,- 80),將五種零件分別放置于這三個位置,將計算得到的理論值與實際定位空間坐標的平均值進行對比,如表3所示。
目標零件X軸坐標平均絕對誤差為3.4 mm,Y 軸坐標平均絕對誤差為2.8 mm,目標零件實際深度信息(Hr)與測量深度信息平均值(Hm)之間比對如表4 所示。由比對結果可知,目標零件定位信息比較準確,誤差較小,滿足目標零件定位要求。
目標零件抓取過程如圖11 所示,首先機器人關節(jié)復位,工件伴隨著圓臺轉動,達到識別區(qū)之后,工業(yè)相機檢測到零件,圓盤停止轉動,檢測完成之后將位置信息傳送給PC 控制端,圓盤繼續(xù)轉動,PC 端可以選擇在A、B、C三個抓取區(qū)進行抓取操作,到達選定抓取點之后圓盤停止轉動,機器人進行抓取操作,完成抓取后將零件放置待裝配區(qū)域,然后再回到零點。
圖9 零件檢測效果Fig.9 Effect of part detection
圖10 機器人實驗平臺簡圖Fig. 10 Diagram of robot experiment platform
表4 目標零件定位誤差值比對Tab. 4 Comparison of positioning error values of target parts
表5 零件深度信息比對Tab. 5 Comparison of part depth information
在實驗過程中,對三個區(qū)域進行抓取成功率測試,每個區(qū)域每個零件隨機定點抓取10 次,共五類零件,即共抓取150次。如圖12 所示為每個區(qū)域的平均抓取成功率,從圖中可以看出,A和B區(qū)域抓取效果較好,C區(qū)域因為處于機器人極限抓取位置邊緣且抓取位姿要求較高,故抓取效果不及A、B區(qū)域。Bolt 零件抓取效果不及其他零件,因為Bolt 零件形狀比較不規(guī)則,對裝配機器人的末端執(zhí)行器形狀及抓取位姿要求較高,故抓取效果不佳。
圖11 機器人抓取過程Fig.11 Robot grasping process
圖12 抓取實驗平均抓取成功率Fig. 12 Average grasping success rate in grasping experiment
針對汽車零部件回收工廠在實際復雜工況下,零件檢測效果不佳導致不能實現精準抓取從而影響生產效率的問題,本文設計了一個基于深度學習目標識別模型的機器人識別與抓取集成系統。通過該系統,可以對復雜環(huán)境下雜亂零件進行識別分類,準確計算出零件空間位置信息,并完成分揀工作。同時對該系統進行識別、定位到抓取等實驗,實驗結果表明,目標零件抓取平均成功率達95.2%,本文所構建的機器人抓取系統能夠針對不同零件實現實時、準確、可靠的分揀任務。在接下來的研究中,將增加抓取障礙,在軌跡規(guī)劃中添加避障規(guī)劃,使其工作狀態(tài)更貼近生產實際。