張浩,陳成軍,潘勇
(青島理工大學機械與汽車工程學院,山東青島 266520)
工業(yè)機器人在自動化生產(chǎn)中具有廣泛的應用前景,然而機器人編程效率已經(jīng)成為影響其生產(chǎn)效率的關鍵因素之一,因此提高機器人編程效率已成為工業(yè)機器人應用的關鍵。演示示教編程是指機器人理解人類演示行為,并將人類行為映射成機器人控制命令的過程[1]。
演示示教編程的關鍵是人類(演示者)如何向機器人(學習者)傳遞相關的行為信息,即演示方法。按照演示方法,目前演示示教編程主要包括動覺教學[2]、動作捕捉[3]和視覺演示編程[4]。視覺演示編程目前主要有基于物體位置變化的演示學習[5]、基于動作任務的演示學習[6]和基于規(guī)則約束的演示學習[7]。
基于動作任務的演示學習編程中,如何理解人類行為是國內外研究的熱點,目前主要方法有視頻字幕任務[8]。視頻字幕任務輸出自然語句以描述視頻中發(fā)生的內容,同時可以將輸出的自然語言句子轉換為機器人動作指令。NGUYEN等[9]將視頻字幕任務研究應用于機器人演示示教,設計了一個將人類演示視頻轉換為機器人動作命令的框架,該框架由CNN(Convolutional Neural Network)和RNN(Recurrent Neural Network)組成,首先利用CNN提取人類演示視頻中的視覺特征,然后利用RNN輸出機器人動作指令,并在一臺仿人機器人上進行了各種操作實驗,驗證了該系統(tǒng)的有效性。然而該方法只關注RGB視頻中的全局特征(全幀),忽略了局部特征(目標物體);其次通過視頻字幕方法將人類演示視頻轉換為機器人連續(xù)控制指令,會存在部分動作視頻幀分類錯誤導致控制指令異常的問題。
為實現(xiàn)全局特征(全幀)和局部特征(目標物體)的融合并解決機器人控制指令異常的問題,本文作者提出基于視覺的工業(yè)機器人裝配演示示教系統(tǒng),用于機器人軸孔裝配演示示教。首先,使用MaskRCNN網(wǎng)絡模型[10]從RGB視頻幀中檢測和分割目標物體,輸出物體類別信息和目標物體的像素掩碼,并利用均值化方法處理目標物體像素掩碼,確定目標物體的中心點像素坐標;通過RGB-D相機的三維定位原理將中心點像素坐標轉化為相機坐標系下的三維坐標。然后,建立動作分類識別模型提取出演示視頻中的視覺特征并輸出動作分類標簽(機器人控制指令);為了消除異常的動作分類標簽,提出數(shù)據(jù)清洗濾波算法,對動作分類標簽清洗和整理,得到期望的標簽數(shù)據(jù),提高動作分類的精度。最后,機器人根據(jù)動作分類標簽、中心點坐標和物體類別等信息執(zhí)行軸孔裝配演示動作。
圖1所示為文中提出的基于視覺的工業(yè)機器人裝配演示示教系統(tǒng),包括目標識別與中心點定位模塊、裝配動作分類識別模塊、機器人動作執(zhí)行模塊。
圖1 裝配演示示教系統(tǒng)結構示意
目標識別與中心點定位模塊包括實例分割功能單元、目標中心點定位功能單元;裝配動作分類識別模塊包括動作識別單元、動作標簽清洗單元;動作執(zhí)行模塊接收目標物體的中心點坐標及其物體類別、動作分類標簽等,規(guī)劃UR5機器人的路徑動作,控制機器人運動。文中使用ROS平臺[11]搭建機器人動作執(zhí)行模塊。
目標識別與中心點定位模塊的功能是從演示視頻幀中識別定位圓軸、圓孔和機器人夾爪,為機器人執(zhí)行軸孔裝配演示任務提供輸入信息。此研究選用MaskRCNN網(wǎng)絡模型對RGB視頻幀進行實例分割。MaskRCNN網(wǎng)絡是基于卷積神經(jīng)網(wǎng)絡的實例分割算法,包括目標檢測和語義分割2個模塊。目標檢測模塊判斷物體類別,并用檢測框框選出目標物體;語義分割模塊分割檢測框中的背景和物體類別,并輸出像素掩碼。隨后對輸出的像素掩碼進行均值化處理,定位出圓軸、圓孔和機器人夾爪的中心點像素坐標,并通過matplotlib函數(shù)庫[12]標記出像素中心點,同時根據(jù)圓軸像素中心點對應的深度值z和RGB-D相機的內參計算圓軸、圓孔和機器人夾爪在相機坐標系下的實際中心點坐標。
1.1.1 實例分割功能單元
準確識別定位圓軸、圓孔和機器人夾爪是機器人演示示教的前提和關鍵??紤]到實例分割的精度和實時性需求,MaskRCNN網(wǎng)絡的輸入為RGB-D相機獲取的RGB視頻幀,圖2(a)為RGB視頻幀中的圓軸、圓孔和機器人夾爪。圖2(b)為MaskRCNN的輸出結果,包括每個預測的名稱、置信度得分、像素掩碼。
圖2 圓軸、圓孔和機器人夾爪展示
1.1.2 目標中心點定位功能單元
目標中心點定位功能單元對輸出的掩碼進行均值化處理,計算出圓軸、圓孔和機器人夾爪的中心點像素坐標。機器人執(zhí)行裝配模仿動作旨在找到一種穩(wěn)定實現(xiàn)軸孔裝配的方法,文中將軸孔裝配的解決方法定義如下:
g={x,y,o}
(1)
其中:(x,y)為掩碼的中心坐標;o表示物體類別標簽。確定圓軸、圓孔和機器人夾爪的像素中心點后,通過matplotlib函數(shù)庫標記出其中心點,并輸出圓軸、圓孔和機器人夾爪的中心點像素坐標Oi(ui,vi)。圖3表示了目標物體像素掩碼與中心點定位的表示方法。
圖3 目標物體像素掩碼與中心點定位
為了將圓軸、圓孔和機器人夾爪的中心點像素坐標轉換為相機坐標系下的三維坐標,首先需要將目標物體的深度圖像和RGB圖像的坐標系原點對齊,然后利用RGB-D相機提供的SDK獲取相機的內參和相機的光心距離圓軸像素中心點O1(u1,v1)所對應的實際深度值z。根據(jù)RGB-D相機的三維定位原理,計算圓軸、圓孔和機器人夾爪在相機坐標系下的三維坐標Pi(xi,yi,zi)。三維定位原理如公式(2)、(3)和圖4所示:
圖4 RGB-D相機的三維定位原理
(2)
(3)
其中:px和py為相機視野中心的像素坐標;fx、fy為相機的焦距;(0,0)表示相機坐標系x軸和y軸方向的原點坐標;δt_xy_p[0]、δt_xy_p[1]分別表示檢測物體在圖像中的像素x、y坐標值;δt_xy_t[0]、δt_xy_t[1]分別表示檢測物體在相機坐標系下的x、y坐標值;ht為實際深度值。
確定目標物體的類別和中心點坐標后,需要識別出人體裝配演示視頻中的動作行為信息,進行機器人的裝配演示示教。裝配動作分類識別模塊包括動作識別功能單元和動作標簽清洗功能單元。動作識別單元提取出裝配演示視頻中視覺特征,結合視覺特征的時間序列,識別并輸出動作行為信息。動作標簽清洗單元檢測并清理動作行為信息,得到期望的動作行為信息。
1.2.1 動作識別單元
動作識別單元建立了基于深度學習網(wǎng)絡的動作分類識別模型,識別人體的裝配動作,隨后輸出動作分類標簽命令。與視頻字幕任務輸出的自然語言形式有所不同,文中使用自制的詞匯語言描述輸出的命令?;谏疃葘W習網(wǎng)絡的人體動作識別流程具體步驟如圖5所示。
圖5 基于深度學習網(wǎng)絡的人體動作識別流程
此研究的人體動作分類識別模型由卷積神經(jīng)網(wǎng)絡(CNN)和長短期記憶網(wǎng)絡(Long Short-Term Memory,LSTM)[13]組成。其中CNN網(wǎng)絡能夠有效提取視頻幀的圖像特征,LSTM網(wǎng)絡可以編碼視頻幀的圖像特征并依次按照視頻幀的順序解碼。此研究選用ResNet50[14]作為主干網(wǎng)絡,用于提取裝配演示視頻幀的圖像特征,將CNN網(wǎng)絡提取到的圖像特征輸入到LSTM網(wǎng)絡,LSTM網(wǎng)絡會在每個時間步長t獲取輸入的圖像特征xt,并計算隱藏狀態(tài)ht和記憶細胞狀態(tài)ct,如公式(4)所示:
(4)
其中:⊙表示逐元素乘法;函數(shù)σ是sigmod非線性,而φ是雙曲正切非線性;權重矩陣Wij和偏差bj是訓練參數(shù)。
文中首先使用預訓練的CNN網(wǎng)絡對裝配演示視頻中的每一幀提取出圖像特征xt,連同前一個時間步長的隱藏狀態(tài)ht-1和記憶細胞狀態(tài)ct-1,一起輸送到LSTM網(wǎng)絡中進行編碼,并計算出此次時間步長的隱藏狀態(tài)ht和記憶細胞狀態(tài)ct,最后解碼視覺特征,以生成相關的單詞列表,用于輸出命令。即給定輸入的視覺特征序列X={x1,x2,...,xt},計算隱藏狀態(tài)序列H={h1,h2,...,ht}和記憶細胞狀態(tài)序列C={c1,c2,...,ct},輸出字序列Z={z1,z2,...,zt}。
動作分類識別模型對裝配演示視頻中人體的動作分類識別,視頻中的每幀將生成相關的動作分類標簽,并將動作分類標簽保存至csv文件中,將輸出的動作分類標簽發(fā)送至動作標簽清洗單元。
1.2.2 動作標簽清洗單元
數(shù)據(jù)清洗可以剔除數(shù)據(jù)中的干擾項,將原始數(shù)據(jù)處理為有價值的數(shù)據(jù)。此研究動作識別單元生成了n個動作分類樣本(其中n是視頻幀數(shù)),由于LSTM網(wǎng)絡輸出的動作分類標簽會存在部分異常,因此查找、剔除并替換異常的動作分類標簽至關重要,其直接決定了機器人執(zhí)行裝配模仿動作的準確性。因此,此研究提出了一種數(shù)據(jù)清洗濾波算法,對裝配動作分類標簽按照視頻幀的順序清洗和整理,利用統(tǒng)計分析識別產(chǎn)生的錯誤值或異常值。圖6所示為數(shù)據(jù)清洗濾波算法的原理。
圖6 數(shù)據(jù)清洗濾波算法的原理
標簽值按照視頻幀順序排列,此研究選用單位長度為5的清洗濾波窗口,從初始標簽值開始依次向下滑動,每滑動一次,分析所框選的清洗濾波窗口內部的數(shù)據(jù),清洗濾波窗口內部的中間數(shù)據(jù)分別與上方的2個數(shù)據(jù)和下方的2個數(shù)據(jù)比較,在這個區(qū)間內,利用公式(5)對清洗濾波窗口內的5個標簽分析,得到相關動作分類標簽數(shù)量的最大值C,ci表示清洗濾波窗口內對應的動作分類標簽。
C=max{ci,ci+1,ci+2,ci+3,ci+4}
(5)
圖7所示為數(shù)據(jù)清洗濾波算法的流程,文中僅考慮每個清洗濾波窗口內出現(xiàn)的3種動作分類標簽(如果產(chǎn)生3種以上的標簽,證明網(wǎng)絡初始生成的動作分類標簽出現(xiàn)錯誤)。(1)如果清洗濾波窗口內都是相同的動作分類標簽,該動作的標簽數(shù)量則為最大值5,直接提取出相關的動作分類標簽;(2)如果清洗濾波窗口內產(chǎn)生2個不同的動作分類標簽x1、x2,則取對應的數(shù)量為最大值的動作分類標簽;(3)如果清洗濾波窗口內產(chǎn)生3種不同的動作分類標簽x1、x2、x3,如果有1類標簽數(shù)量大于另2類標簽數(shù)量,即x1>x2>x3,則取對應的數(shù)量為最大值的動作分類標簽x1;如果有2種標簽值數(shù)量都達到同等最大值,即x1=x2>x3,則此次標簽值選擇與上方清洗濾波窗口生成的標簽值結果。同時每個清洗濾波窗口產(chǎn)生的動作分類標簽如果連續(xù)相同,則視為相同的動作分類,如果不同,則依次按照動作分類排序。
圖7 數(shù)據(jù)清洗濾波算法流程
此研究ROS的通信機制選用話題通信機制和服務通信機制,通過通信機制機器人動作執(zhí)行模塊與目標識別與中心點定位模塊、裝配動作分類識別模塊實現(xiàn)信息融合。
在示教系統(tǒng)開始工作時,首先初始化系統(tǒng),RGB-D相機與目標識別與中心點定位模塊、裝配動作分類識別模塊分別建立聯(lián)系,同時ROS與UR5機器人通過TCP/IP協(xié)議建立通信連接,隨后執(zhí)行裝配演示示教動作。
如圖8所示,此研究設計了3個功能單元:(1)人體運動和物體運動狀態(tài)觀察單元;(2)人體動作行為規(guī)劃單元;(3)機器人動作執(zhí)行單元。人體運動和物體運動狀態(tài)觀察單元為感知數(shù)據(jù)(見圖8),通過裝配動作分類識別模塊,將人體動作狀態(tài)分割為空閑狀態(tài)和人體手臂運動;從物理場景中存在的對象及其屬性獲取2種主要類型的信息:物體靜止狀態(tài)和物體運動狀態(tài)。人體動作行為規(guī)劃單元按照動作狀態(tài)(空閑狀態(tài)和人體手臂運動)和對象屬性(物體靜止狀態(tài)和物體運動狀態(tài))定義了4類動作行為庫,動作行為庫用編程語言編寫了此研究所提到的軸孔裝配操作任務以及一系列常見的機器人操作任務(例如抓取物體、推拉物體、旋轉物體等)。動作行為庫的設定是后續(xù)如果進行更多的人類活動任務,只需要將相關的動作分類標簽對應于動作行為庫,因為此研究所提到的人類動作行為(例如抓取孔、將孔移向軸)都是特定且單一的。
圖8 裝配動作執(zhí)行框架
動作分類標簽按照動作狀態(tài)和對象屬性進行分類(見圖8),然后根據(jù)目標識別與中心點定位模塊輸出的中心點坐標和物體類別,結合動作分類標簽信息執(zhí)行動作行為庫中所對應的機器人操作任務。隨后MoveIt!進行動作規(guī)劃,人為設定規(guī)劃次數(shù)為10,如果規(guī)劃未成功,則重新規(guī)劃。規(guī)劃成功后利用ROS提供的3D可視化工具rviz,通過導入UR5機器人的URDF樹形結構模型,可以觀察到機器人3D模型的運動狀態(tài)。機器人的動作執(zhí)行單元為機器人的動作執(zhí)行(見圖8),功能模塊MoveIt!把計算的結果通過ROS Action的方式發(fā)送給Driver,Driver調用通信模塊Modbus/TCP的Modbus_write Server節(jié)點發(fā)送各個控制指令到UR5機器人控制器,機器人執(zhí)行與人體裝配動作相關的模仿運動。
為了驗證上述演示示教系統(tǒng)結構的可行性,文中設計了圖9所示的演示示教原型系統(tǒng)。該系統(tǒng)包括:配備MHZ2-40D平行氣爪的UR5機器人、RealSense D435i相機[15]、相機支架、計算機(CPU:i7-9700、RAM:16 GB、graphics card:RTX2060)、工作臺、圓軸、圓孔。RealSense相機固定于工作臺正前方處,機器人的整個工作空間在相機視野內。
圖9 實驗系統(tǒng)
為了獲取目標識別與中心點定位模塊的數(shù)據(jù)集,文中利用RealSense相機拍攝了300張圓軸、圓孔和機器人夾爪的RGB圖像,圖像的分辨率為1 280像素×720像素。利用LabelMe軟件標注RGB圖像,數(shù)據(jù)集由訓練集和驗證集兩部分組成。此研究使用TensorFlow1.3開發(fā)框架搭建MaskRCNN網(wǎng)絡模型,在配備Intel Xeon E5-2630 CPU處理器、以及4個NVIDIA TITAN Xp GPU的服務器上進行了訓練。
圖10所示為訓練過程中產(chǎn)生的總損失曲線,MaskRCNN的多任務損失函數(shù)由分類損失Lclass、回歸框損失Lbbox和mask損失Lmask組成:
圖10 訓練過程中的損失變化
L=Lclass+Lbbox+Lmask
(6)
模型共經(jīng)過30個epoch,在15 個epoch訓練后損失趨于穩(wěn)定。
為了獲取裝配動作分類識別模塊的數(shù)據(jù)集,文中進行了數(shù)據(jù)采集:選用RGB-D相機,將相機固定于圓軸、圓孔正前方70 cm處,錄制100段人體軸孔裝配的動作視頻,分辨率為960像素× 544像素。針對軸孔裝配動作任務,此研究將人體的動作劃分為6種類別,每段動作視頻都用人體的6種動作類別進行注釋,文中使用數(shù)據(jù)集的80%進行訓練,剩余數(shù)據(jù)集的20%用于測試。動作分類識別模型基于Tensorflow1.15開發(fā)框架,在配備Intel Xeon E5-2630 CPU處理器以及4個NVIDIA TITAN Xp GPU的服務器上進行了訓練,訓練時長為12 h。
為了驗證提出的示教系統(tǒng)的可行性,文中開展了實驗研究。操作員通過軸孔裝配動作演示視頻對機器人進行示教,驗證機器人動作模仿的可行性。
操作者執(zhí)行的軸孔裝配動作任務的視頻圖片如圖11所示,由人類演示一次相關的軸孔裝配動作,然后機器人執(zhí)行20次模仿軸孔裝配動作的實驗,實驗的總體成功率達到了80%,圖12顯示了機器人執(zhí)行模仿實驗的示例視頻圖片。
圖11 人體執(zhí)行軸孔裝配動作任務的視頻畫面
圖12 機器人執(zhí)行模仿實驗的示例視頻畫面
文中提出了基于視覺的工業(yè)機器人裝配演示示教系統(tǒng),利用該系統(tǒng),機器人通過視覺觀察從人體裝配演示視頻中學習機器人裝配控制指令。該系統(tǒng)包含了3大模塊:目標識別與中心點定位模塊通過MaskRCNN網(wǎng)絡識別物體類別和輸出目標物體的像素掩碼,利用均值化方法處理目標物體像素掩碼,確定目標物體的中心點像素坐標,并通過RGB-D相機的三維定位原理將中心點像素坐標轉化為相機坐標系下的三維坐標;裝配動作分類識別模塊基于CNN和LSTM的動作分類識別模型,識別人體裝配動作視頻中的動作行為,輸出描述動作行為信息的動作分類標簽,并通過數(shù)據(jù)清洗濾波算法對動作分類標簽清洗和整理,獲得期望的動作分類標簽;機器人動作執(zhí)行模塊根據(jù)物體類別、中心點坐標和相關的動作分類標簽等信息,規(guī)劃機器人運動,控制機器人執(zhí)行裝配任務。此研究建立實驗系統(tǒng),通過實驗驗證了基于視覺的工業(yè)機器人裝配演示示教系統(tǒng)可以完成軸孔裝配任務實現(xiàn)演示示教。