燕 碩,李建松,唐昌松
(徐州工業(yè)職業(yè)技術學院 機電工程學院,江蘇 徐州 221140)
在智能化要求越來越高的情況下,傳統(tǒng)的示教編程規(guī)劃機器人路徑的方法已經(jīng)不能滿足多樣化的生產(chǎn)需求[1-2]。具備視覺檢測功能的工業(yè)機器人替代傳統(tǒng)的示教方法,一定程度上發(fā)揮人眼檢測的功能?;谏窠?jīng)網(wǎng)絡的視覺識別系統(tǒng)調(diào)用攝像頭后,將圖像信號傳送給訓練好的神經(jīng)網(wǎng)絡識別模型,該模型將圖像信息轉變成數(shù)字信號[3],再利用特征提取方法提取目標物體的特征[4],從而實現(xiàn)目標檢測和定位,進而控制現(xiàn)場的機器人實施抓取動作。
引導系統(tǒng)如圖1所示,首先由攝像頭采集物體的圖像信息,將此圖像信息傳送至PC中的神經(jīng)網(wǎng)絡模型,神經(jīng)網(wǎng)絡模型開始識別圖像信息,包括種類、建議框位置等,然后將該圖像信息傳輸至機器人端的位置寄存器PR[i],機器人端讀取位置寄存器中的位置信息并執(zhí)行抓取程序,實施抓取動作。在機器人視覺[5]系統(tǒng)引導方案中,為了能夠實現(xiàn)準確而快速地執(zhí)行完整個流程,需要對攝像頭進行正確的選型并進行相機標定[6-7],同時為了統(tǒng)一相機的坐標系和機器人的坐標系還需對兩者進行手眼標定[8-10],在下文中將介紹這些內(nèi)容。
圖1 引導方案示意圖
2.1.1 卷積和池化
(1)
圖2 卷積過程
其中:P為填充(在特征平面邊緣部分增加空白填充以適應卷積核的大小),s為步長,f為卷積核尺寸。神經(jīng)網(wǎng)絡學習時,會更新卷積核內(nèi)的參數(shù)。
卷積提取特征時,卷積窗口從左至右、從上至下滑動,物體特征由具體到抽象、由淺層到深層依次提取,如圖3所示,圖像經(jīng)過卷積后,物體的特征逐漸抽象。卷積神經(jīng)網(wǎng)絡的另一個優(yōu)點是可以降低參數(shù)量[13],如圖4所示,假設圖像有1 000×1 000像素,網(wǎng)絡有100萬個隱含層的神經(jīng)元,若將它們?nèi)B接會產(chǎn)生1 000×1 000×1 000 000共計1012的權值參數(shù)。由于該卷積核進行卷積時的參數(shù)相同,所以只提取了一種特征,此時可以增加不同卷積核的數(shù)量來提取多種特征,如顏色、邊緣形狀等,若有100個不同的卷積核,進行卷積操作后就會得到100個特征平面(Feature Map),此時的參數(shù)量只有100×100=10 000個,相比全連接方式有了較大程度的下降。
圖3 卷積特征提取過程
圖4 不同連接方式的參數(shù)量
池化作為一種降維的方法,一般跟在卷積層之后用來減小特征平面(Feature Map)的尺寸,從而減少計算量,和卷積一樣通過感受野在特征平面上滑動逐步掃描全局。如圖5所示,最大池化是選取感受野中的最大值,可獲取局部信息。池化后的特征平面尺寸依據(jù)式(2)得到:
(2)
圖5 最大池化
其中:n為池化前(輸入到池化層中的特征平面)的特征平面的尺寸,f為池化窗口的尺寸,s為池化操作的步長(每次池化窗口移動的距離)。經(jīng)最大池化后圖像尺寸減小,但保留了主要的特征信息,實際效果如圖6所示。
圖6 池化的實際效果
2.1.2 特征融合方法
YOLOV5中采用一種基于切片[14]操作(Slice)用來降低特征平面(Feature Map)尺寸的下采樣方法,切片可將特征平面切割成較小的尺寸,把高分辨率的特征平面隔列切割成低分辨率的特征平面,再進行拼接,如圖7所示,不同于池化操作單純縮小尺寸,而是將原始圖像按照橫縱坐標方向各做二倍間隔采樣得到的特征平面,再經(jīng)過路由(Concat)連接形成新的特征圖。此操作能將二維平面特征向通道維度轉換,可減少下采樣(如池化操作)帶來的信息損失。
圖7 切片操作
2.1.3 激活函數(shù)
卷積的操作是通過參數(shù)的矩陣乘法來實現(xiàn)的,所以純卷積運算的本質(zhì)是線性操作,不具備非線性分類能力。激活函數(shù)的輸入是神經(jīng)網(wǎng)絡的輸入與權值的加權,激活函數(shù)的作用是給神經(jīng)網(wǎng)絡帶來非線性的特征,特別是深層神經(jīng)網(wǎng)絡,如圖8所示,激活函數(shù)可以實現(xiàn)復雜的非線性分類任務。
圖8 激活函數(shù)提供非線性分類能力
2.1.4 損失函數(shù)
損失函數(shù)用來描述真實值和預測值之間的差異,香農(nóng)(Shannon)認為信息量[15]與事件發(fā)生的概率成反比,信息量越小則發(fā)生的概率越大,反之亦然。假設某一事件發(fā)生的概率為p(x),則信息量表示為:
I(x)=-log(P(x))
(3)
信息熵又可稱之為熵,用所有信息量的期望來表示,設隨機變量X,則信息熵可以表示為:
(4)
若X有兩個獨立的概率分布P(x)、Q(x),那么可使用相對熵(KL散度)來描述P(x)、Q(x)之間的差異,相對熵(KL散度)可表示為:
(5)
實際上,若相對熵(KL散度)越小,則P(x)、Q(x)的分布便更接近,因此可以通過訓練Q(x)的分布使其逼近P(x)的分布。將相對熵的表達式可拆解為:
(6)
其中:H[p(x)]表示信息熵,后者為交叉熵,交叉熵相比相對熵更加容易計算,所以常使用交叉熵計算損失函數(shù)。
2.2.1 YOLOV5檢測模型
(7)
圖9 B1和B2的交集、并集與差集
IOU的值越大,說明B1、B2兩框越接近,所以定義損失函數(shù)IOU_Loss為[22]:
(8)
進一步使用CIOU_Loss[23]作為預測框的損失函數(shù)[24],C代表矩形B1、B2的最小外接矩形,那么差集為并集減去交集,則CIOU_Loss可表示為:
(9)
其中:
ρ2(b,bgt)為預測框和真實框的中心點的歐式距離;c外接矩形C的對角線距離;w為外接矩形框的寬度;h為外接矩形框的高度。
目標檢測的時候,由于預測框采用滑動窗口的方式在原始圖像上做檢測,所以一個被檢測物體上會出現(xiàn)多個預測框重復的情況。如圖10所示,為了得到被檢測目標上正確的預測框,使用非極大值抑制(NMS,non maximum suppression)[25]的方法抑制冗余的預測框,首先將所有的預測框根據(jù)得分(得分代表該框正確框出目標的概率)排序,將最高分對應的框保留,并與其他所有框依次計算IOU,若IOU大于設定的閾值,則刪除此框,將剩余的框(不含最高分對應的框)繼續(xù)重復上述步驟即可得到被檢測目標正確的預測框。
圖10 非極大值抑制
2.2.2 模型訓練及評價指標
為實現(xiàn)對4種物體(書、盤子、手機、盒子)分類并檢測,首先獲取4種物體的相應圖片共3 200張,將獲取到的圖片命名為:類別+編號的形式存放在數(shù)據(jù)集images中,采用精靈標注對圖片標注,此步驟主要獲取物體的目標框在圖片中的位置坐標,精靈標注后將獲得目標框的左上、右下頂點的像素坐標、類別、圖像的尺寸、圖片通道深度等,把所有的圖像標注好后生成標簽文件,與原圖名稱對應。將所有圖像按照8∶1∶1的比例劃分為訓練集、驗證集與測試集。本次模型訓練在Python3.7,Pytorch1.6.0,cuda10.0環(huán)境上進行。設置訓練的參數(shù)中,‘--weights’:加載預訓練的模型權重文件yolov5m.pt;‘--cfg’:選擇yolov5m.yaml模型配置;‘--data’:選擇制作好的數(shù)據(jù)集;‘--epochs’:訓練總輪次,本次訓練300輪。‘--batch-size’:一次訓練選取的圖片數(shù),這里設置16。
本次訓練過程中,在訓練至0~50輪之間準確率(Precision)快速上升,50~100輪之間準確率(Precision)上升緩慢,100輪后準確率達到0.97后開始小幅震蕩。召回率在訓練的0~50輪之間快速上升,達到0.98保持不變。目標框損失下降過程較緩慢,在訓練250輪之后的損失為0.015左右,分類損失下降較快最終接近0,可見分類比目標框損失更易收斂,驗證集上也保持了相同的趨勢。
2.2.3 目標檢測實驗
分別在亮光、暗光條件下拍攝手機、書、盤子、盒子4種物體的照片送入檢測網(wǎng)絡,網(wǎng)絡調(diào)用訓練好的權重文件進行檢測,其檢測結果如圖11所示:對4種物體在亮光和暗光條件下各進行50次識別實驗,結果如表1所示,在亮光條件下,YOLOV5網(wǎng)絡對4種物體的識別成功率高于暗光,對手機的識別成功率最高。(由于排版的原因圖11的照片經(jīng)過裁剪縮放等操作,故顯示像素坐標與檢測框大小不成比例)。
表1 視覺識別成功率統(tǒng)計結果
圖11 視覺檢測結果
為使機器人能順利抓取物體,需將像素坐標轉換成機器人坐標,這個過程為機器人手眼標定。工業(yè)機器人包括用戶、工具、關節(jié)等在內(nèi)的多個坐標系,如圖12所示,不同類型的機器人坐標系有著不同的適用場景,在自動識別抓取機器人系統(tǒng)中選用用戶坐標系建立實驗平臺,且攝像頭的視野可覆蓋整個坐標系。
圖12 機器人坐標系
“手眼標定”中,“手”代表機械手,“眼”代表攝像頭,根據(jù)相機的不同搭載方式可分為“eye in hand”、“eye to hand”兩種,如圖13所示,“eye in hand”方式中,攝像頭跟隨機器人的移動而移動,“eye to hand”方式中,攝像頭固定不動,在本文自動識別抓取機器人的實驗中,將采用“eye to hand”方式。
圖13 eye in hand和eye to hand
手眼標定有幾種不同的方法,本文抓取實驗中由于被抓取物體的高度是一定的,且采取同一種自上而下的抓取姿勢,這里提出簡單的六點標定法。其思想為假設有一個變換矩陣T,能將像素坐標系中的點X=[x,y,1]T轉換為機器人用戶坐標系中的點Y=[x′,y′,1]T,即TX=Y,可以表示為:
(10)
固定好相機確保視野覆蓋工作臺,將標定針固定在機器人六軸法蘭盤上,并保持標定針的末端與被抓取物體的高度持平;將標定板置于相機下方,調(diào)整相機焦距確保拍攝清晰,記錄標定點在像素坐標系中的坐標;將標定針移動到標定點上,記錄在機器人坐標系中的坐標。在本次實驗中,分別記錄了相機像素坐標系中的6個隨機點和其對應的機器人坐標系中的點,本次實驗記錄的坐標如表2所示。得到轉換矩陣后,拍攝一組照片,經(jīng)轉換矩陣轉換后與機器人坐標系中的坐標對比,結果如表3所示。
表2 六點采集坐標
表3 手眼標定結果
計算可得轉換矩陣:
(11)
將轉換后的橫、縱坐標與機器人實際測量的橫、縱坐標做均方誤差,可以得到橫坐標的均方誤差約為MSE(x)=0.18 mm,縱坐標的均方誤差約為MSE(y)=0.60 mm,標定精度能夠滿足要求。
對于工業(yè)機器人來說若想準確抓取物體,則需要被檢測物體上的一個目標點與機器人的TCP點對應,這里提出一種簡便的目標定位方法,可使神經(jīng)網(wǎng)絡識別坐標(像素坐標)轉換為機器人坐標系中的定位坐標。3.2節(jié)中將圖像的像素坐標系和機器人的用戶坐標系統(tǒng)一起來,本節(jié)探索目標定位的方法。
在2.2節(jié)中,物體經(jīng)YOLOV5算法識別后會得到其在像素坐標系中的位置坐標信息,即物體的最大外接矩形左上、右下頂點坐標,圖14為像素坐標系u-v中的兩個像素坐標點(401,205)、(455,261),在一般情況下將其表示為(x1,y1)、(x2,y2),將手眼標定得到的變換矩陣與該坐標相乘,可把兩坐標轉換至機器人的用戶坐標系中,表示為:
(12)
圖14 抓取點
在式(12)中,(x1′,y1′)、(x2′,y2′)為轉換后的機器人用戶坐標系中的坐標,機器人用戶坐標系user_xy中物體檢測框如圖15所示,本文中工業(yè)機器人抓取實驗對象為盤子,由于盤子形狀基本上為圓形,所以抓取點可以定位為盤子中心點,將該點表示為[(x1′+x2′)/2,(y1′+y2′)],該點即為定位抓取點。FANUC工業(yè)機器人的位置、位姿表示有6個參數(shù),分別為(x,y,z,w,p,r)其中x,y,z為位置信息,用來描述物體在機器人坐標系中的位置;w,p,r為位姿信息,用來描述機器人抓取時末端姿態(tài),包括旋轉、傾斜角度等。前文說到被抓取物體的高度是一定的,且采取同一種自上而下的抓取姿勢,所以將z,w,p,r設置為固定值。由于定位坐標由轉換后的機器人坐標計算而來,因此定位點的實際偏差可參考表3,其誤差較低,能夠獲得較高的定位精度。
圖15 抓取點表示
如圖16所示,獲取到定位點坐標后,該坐標經(jīng)手眼標定矩陣計算后得到機器人坐標系坐標,并將該坐標實時保存至指定路徑,上位機從該指定的路徑中采集坐標,將其傳輸至機器人的PR[i]位置寄存器。為了能夠順利實現(xiàn)坐標的采集與發(fā)送,設計了數(shù)據(jù)傳輸模塊上位機FanucTransTool。
圖16 數(shù)據(jù)傳輸過程
4.2.1 工作方案
數(shù)據(jù)傳輸模塊是將PC端上位機視覺定位數(shù)據(jù)傳輸至機器人控制柜,并通過機器人編程執(zhí)行相關動作。
基于FANUC Robot Interface接口通信可以直接調(diào)用API接口將數(shù)據(jù)寫入機器人DO信號、PR寄存器、R寄存器等。根據(jù)實際系統(tǒng)設計的需要,數(shù)據(jù)傳輸模塊分為幾部分,分別是:機器人通信設置模塊、實時數(shù)據(jù)顯示模塊、日志模塊、讀取文件數(shù)據(jù)模塊以及實時傳輸模塊。
4.2.2 讀寫控制流程
基于FANUC Robot Interface接口讀取FANUC機器人IO數(shù)據(jù)流程如圖17所示,PC端和FANUC機器人進行通信前,需創(chuàng)建FRRJIF.Core object對象,并設置讀寫IO的索引范圍,連接通信后才可讀寫IO數(shù)據(jù),程序執(zhí)行結束后需斷開連接并釋放創(chuàng)建的對象。
圖17 讀寫控制流程
4.2.3 開發(fā)與運行環(huán)境
數(shù)據(jù)傳輸模塊的開發(fā)與運行環(huán)境如表4所示,Visual Studio 2015作為開發(fā)環(huán)境,C++編寫程序代碼。數(shù)據(jù)傳輸模塊上位機FanucTransTool如圖18所示。
表4 開發(fā)與運行環(huán)境
圖18 數(shù)據(jù)傳輸模塊界面
本文的機器人視覺抓取系統(tǒng)如圖19所示,選用深圳祺云公司的FA0420C型號4 mm定焦鏡頭,成像尺寸7.2 mm×5.3 mm,靶面尺寸1/1.8″,相機選擇顯微精工的XW500型工業(yè)相機,像元尺寸2.2 mm×2.2 μm,工業(yè)機器人選擇FANUC-M10IA-12六軸工業(yè)機器人,在機器人末端固定兩個吸盤,工業(yè)相機固定在工作臺上,視野可以覆蓋整個工作臺面,相機通過USB接口和PC連接。機器人連同底座固定在地面上,機器人的用戶坐標系建立在工作臺面上,其x與相機像素坐標系的u方向相同,y與相機像素坐標系的v方向相同,圖中的工業(yè)機器人和工業(yè)相機構成了一個典型的eye to hand結構。除了上述設備外還有PC機、氣泵、真空發(fā)生器、相機支架、工作臺以及其他輔助設備。
圖19 機器人視覺抓取系統(tǒng)
軟件邏輯流程如圖20所示,數(shù)據(jù)傳輸模塊界面如圖21所示,通信建立之后,數(shù)據(jù)傳輸模塊會將FANUC機器人上線信號置1,會定時讀取位姿數(shù)據(jù),若位姿數(shù)據(jù)變化,則將數(shù)據(jù)發(fā)送至機器人,完成后將機器人坐標完成信號置1,機器人執(zhí)行動后將坐標完成信號DO置0,完成整個數(shù)據(jù)傳輸流程。
圖20 軟件邏輯流程圖
圖21 抓取控制流程
機器人抓取控制步驟如圖21所示,分為單目標抓取和多目標抓取。當工作臺上只有一個物體時為單目標抓取,此時工業(yè)相機實時獲取圖像信息,將其送入識別算法,視覺識別算法會實時刷新并輸出定位坐標(刷新周期可設置,這里設置為0.1 s),輸出坐標若與上一輸出坐標相同,或在給定的誤差范圍內(nèi)(誤差范圍可根據(jù)抓取精度要求而設定),則判斷為重復識別,本次不抓取,當輸出坐標與上一輸出坐標不同時則判定為新物體,此時FanucTransTool會輸出信號至工業(yè)機器人,執(zhí)行抓取指令,當機器人執(zhí)行抓取動作時,視覺識別算法停止識別,直至機器人完成當前物體的抓取并回歸原點等待。當工作臺上一次出現(xiàn)多個物體時,為多目標抓取,此時與獲取單目標物體的定位坐標原理相同,獲取多個被抓取物體的定位坐標,將這些坐標按照機器人用戶坐標系中x的值從大到小將若干坐標點排序,將最大坐標點傳輸至機器人端并抓取該物體,抓取完成后再重復上一步驟,在抓取執(zhí)行過程中,視覺識別算法將不再重復識別,直到當前抓取動作完成后,再進行下一輪的識別。
編寫好數(shù)據(jù)傳輸界面后進行數(shù)據(jù)的收發(fā)實驗,在數(shù)據(jù)傳輸界面中輸入機器人端的IP地址,設置定時間隔(數(shù)據(jù)傳輸間隔時間),并指定機器人端的輸出信號DO[i]為連接成功及數(shù)據(jù)傳輸完成的標志信號,如圖22所示,指定一組坐標[84,85,86,87,88,89],數(shù)據(jù)傳輸界面根據(jù)指定路徑至該TXT文檔中采集該坐標值,并將其傳輸至工業(yè)機器人的PR[1]位置寄存器之中,數(shù)據(jù)傳輸成功時機器人端的DO[1]會變成打開狀態(tài),以便于調(diào)用機器人抓取程序。
圖22 機器人端PR[i]接收數(shù)據(jù)
實驗任務是實現(xiàn)對工作臺上單一物體、多目標物體的識別抓取,并在指定位置碼垛,搭建好所有的軟硬件環(huán)境開始實驗,啟動識別算法、工業(yè)機器人原位等待,神經(jīng)網(wǎng)絡完成定位點坐標求解后,機器人計算各軸關節(jié)角進行軌跡規(guī)劃,對物體實施抓取、搬運并碼垛。當攝像機視野中出現(xiàn)多個物體時,會根據(jù)定位點橫坐標大小排序,優(yōu)先抓取橫坐標小的目標,然后依次抓取。單一物體的識別與抓取效果如圖23所示。
圖23 單一目標識別與抓取
多目標時物體的識別與抓取效果如圖24所示,機器人首先移向第一個物體對其抓取并放置在指定位置,隨后再依次抓取第二個、第三個、第N個物體,并在指定位置碼垛。
圖24 多目標識別與抓取
表5列出了本次實驗的針對3種物體(盤子、手機、紙盒),在單一目標和多目標檢測、定位、抓取中共180次的實驗數(shù)據(jù)(正確識別物體的種類與定位坐標前提下),實驗的綜合平均抓取成功率約為92.8%。
表5 抓取實驗統(tǒng)計結果
在三類物體的抓取實驗中,盤子的成功率最高,原因是盤子的特殊形狀對機器人末端氣動吸盤的位姿角度沒有要求,但是由于手機和紙盒表面是矩形形狀,對機器人末端吸盤的位姿有要求,因此導致實驗的成功率略低于盤子的成功率。
在建立了機器人視覺引導方案的基礎上,針對機器人抓取準確率低、反應速度慢的問題,提出了將YOLOV5為基礎的神經(jīng)網(wǎng)絡模型應用于視覺識別。針對俯視圓形或長方形被抓取物體,提出了目標定位方法,可使神經(jīng)網(wǎng)絡識別坐標轉換為機器人坐標系中的定位坐標。提出了六點手眼標定原理,通過六點標定法統(tǒng)一了機器人的用戶坐標系與相機的像素坐標系,實驗結果顯示在X,Y方向上的抓取精度均滿足工作要求,驗證了神經(jīng)網(wǎng)絡工業(yè)機器人視覺抓取系統(tǒng)的準確性。