孫 昊,馬興錄,豐 艷,李曉旭
(青島科技大學 信息科學技術學院,山東 青島 266061)
當前,人工智能科技發展如火如荼,智能控制作為當今關鍵核心技術,其有效促進了新型控制體系的高速發展[1-3]。化工實驗是在化工產業進行研究、學習和生產過程中的一個不可或缺的環節[4]。目前來看,化學實驗的智能化水平不高,利用機器人機械臂等智能化的機械設備去進行化學實驗所能夠完成的實驗過程較為單一而且編程較為復雜。并且化工實驗中會使用各種各樣的化學試劑,這些試劑在實驗過程中相互作用會產生各種有害物質, 甚至當實驗出現失誤時還可能出現不可預知的危險。所以,利用更加智能化的機械臂等設備代替實驗員去完成相關的化學實驗是非常有必要的。
機器學習和機器視覺技術的發展,使得機械臂演繹編程為人機交互提供了新的解決辦法,是降低機械臂技能獲取難度的重要途徑[5-7]。機械臂示教編程是通過對人的示教動作進行觀看學習,從而自動習得運動軌跡的過程,具有難度低、人機交互便捷、操作靈活等優點[8]。本文將手臂動作檢測與語音識別結合,同時借助信息融合和位姿識別,設計了一個機械臂的示教控制系統[9],讓機械臂能夠看懂、聽懂實驗工作人員教授的技能,并能夠更準確、快捷地完成人機交互,進而代替實驗員完成實驗工作。
本設計中的示教控制系統是以桌面型實驗機械臂為物理載體,以樹莓派操作系統為平臺。主要針對在化學分析實驗場景下,通過實驗員的示教去教會實驗機械臂學習模仿人手臂的實驗動作,再結合一定的實驗儀器的抓取位姿識別算法來輔助控制,示教與運動控制兩者相結合來完成一套實驗流程組合。
如圖1所示,本設計的整體邏輯架構可以分為3個層面:自下而上來看分別是硬件組成、設備驅動以及應用軟件層:

圖1 系統邏輯架構
其中硬件組成為桌面型機械臂(擁有3個基礎自由度,類似人類手臂)、樹莓派4B核心板、電機及電機控制板、高清單目相機、麥克風以及機械爪。
設備驅動部分包括對麥克風的音頻驅動、USB_Cam相機驅動、電機驅動以及其他相關的可編程邏輯等。
應用軟件層為在樹莓派桌面型操作系統中運行的軟件程序和構建的機械臂動作參數集合,該操作系統與Linux操作系統類似。其中軟件程序部分包括:一個可視化的界面程序用于電機控制和示教流程把握、語音識別[10]功能模塊、動作檢測模塊以及動作信息的融合匹配部分。
示教控制系統的整體工作業務流程如圖2所示。在這一整套實驗流程的示教過程中,一套完整實驗流程是由許多個簡單實驗動作組成,叫做動作基元。實驗員需要在一邊做動作的過程中一邊口述其動作,機械臂通過聽和看獲取信息并進行融合驗證,進而能夠理解需要去完成的動作。即語音識別模塊和動作識別模塊分別將對該一整套實驗流程動作識別出來的動作基元按順序組合放入集合中,然后與本地動作庫中存儲的機械臂動作集中的動作組進行匹配,得出動作信息。過程中的識別信息通過信息融合算法得出最終確定的一套動作組,保存或交給機械臂去運行復現。

圖2 系統功能流程
系統可視化界面如圖3所示,可兼容Windows和Linux操作系統。如圖中右側所示,其中動作參數使用xml文件存儲,其格式規整簡單,便于讀取和存儲動作參數。可視化界面中設置3個Scale和Radiobutton分別控制3個電機{x、y、z}的步數和方向,通過滑動、添加動作以此來定義動作組并存儲。點擊開始現場示教開啟攝像頭,則開始執行示教功能。

圖3 系統界面
如圖4所示,本設計中的桌面型機械臂擁有3個基礎自由度,可在桌面上方的空間內轉動。機械臂以樹莓派4B為核心控制板,電機驅動擴展板、步進電機驅動模塊、3個步進電機、一個 12 V 電源適配器以及帶麥克風的攝像頭等組成。抓取與放置操作,使用機械臂通用夾具、夾爪等。

圖4 機械臂結構圖
如圖5所示,樹莓派4B實質上是一臺微小的嵌入式PC,類似于身份證大小,其系統基于Linux操作系統(本文燒錄桌面型的RasBian System),擁有64位、1.5 GHz的四核CPU,內存可選擇使用1 GB,2 GB或4 GB的RAM,帶有全吞吐量千兆以太網,還可實現雙頻802.11ac的無線網絡,藍牙為5.0版本,且擁有兩個USB 3.0和兩個USB 2.0通信端口[11]。

圖5 樹莓派4B
控制機械臂進行運動的關鍵部位就是電機,本機械臂使用的步進電機有3個,實現了3個基礎自由度的運動控制。機械臂采用大扭矩42行星減速式的步進電機,其水平運動的電機其理論減速比為1:5.18,實際測量為11:57接近理論值;兩個手臂部分的步進伸縮電機的減速比均為1:19(實際測量得到187:3591)。電機的電流為1.7 A,步距角度為1.8°,其步距精度為5%。
如圖6所示,電機驅動器采用A4988驅動器,可驅動電機電壓8~35 V。本機械臂采用12 V電源給電機供電。其中,每個步進電機驅動模塊輸出2個控制信號,分別為STEP和DIR,與樹莓派引腳相接來分別實現步進脈沖和方向的控制;其中MS1-3引腳在本設計中均接高電平,接口電平及步數對應參數如表1所示,將電機每一步(1.8°)細分為16步,實現了更加精細的控制。

表1 MS接口對應參數

圖6 步進電機驅動模塊
本文動作檢測部分主要基于改進的雙流卷積網絡,該部分將預處理過的圖像信息輸入網絡,分別使用EfficientNetv2[12]算法計算RGB圖像和光流圖像特征,然后將提取得到的特征信息使用線性分類器SVM[13-16]進行行為分類,得到動作的識別信息。
如圖7所示,雙流卷積網絡是將輸入的視頻分為兩路來進行處理,其中一個是由卷積神經網絡提取RGB圖像中任務手臂和場景相關信息,另外一部分是處理光流圖像信息,最后由Softmax函數分別進行歸一化融合處理。

圖7 雙流卷積網絡結構
網絡中光流圖像的提取(動作視頻預處理)部分是由基于梯度的運算得到,算法關鍵原理如下:首先設定圖像數列I(x,y,t),向量X=[x,y],數列是由一段演示視頻中的前后幀提取得到,即當視頻局部的光流圖像基本恒定時,對于任意的Y∈N(x),有:
H(I)·d+(▽I)t=0
(1)
其中:X為x矢量,H(I)為圖像數列I的Hesse矩陣,引入X與偏移量d的關系:
(2)
令導數等于0可以求得:
d=-(HT(I)H(I))-1(HT(I)(▽I)t)
(3)
上述過程,可以總結為依據視頻圖像中的像素點在時間線上的變化和相鄰幀圖像之間的關聯性來進行分析,找到上一幀和當前一幀的對應關系,計算出運動信息(偏移量即為一種運動信息),進而繪制出光流圖像。
在計算特征部分,如圖8所示,EfficientNetv2相較于前期的EfficientNet[17]算法部分使用Fused-MBConv替換MBConv結構,即使用常規的3*3卷積替換MBConv中的3*3深度卷積和1*1卷積,提高網絡的計算速度。

圖8 EfficientNetv2結構改進示意
得到RGB圖像和光流圖像的特征信息,需要對其進行分類驗證。支持向量機SVM是一種二分類模型,是用來求解能夠正確劃分訓練數據集并且幾何間隔最大的分離超平面。如圖9所示,w*x+b=0即分離超平面,這樣的超平面一般數量很多,但是幾個間隔最大的分離超平面確是僅有唯一的一個。對于其中的最優值,其求解的公式如下:

圖9 SVM原理
(4)
整體結構表示如圖10所示,即將雙流卷積網絡中的RGB和光流特征提取部分使用輕量級的Efficientnetv2分別進行卷積和池化處理,再結合SVM分類器對兩個分支給出的動作信息進行分類,最終給出一個識別到的動作信息。

圖10 動作檢測網絡結構
當獲得一套完整動作的識別信息之后,需要去確定該模塊機械臂動作的執行序列,獲得機械臂的可執行動作。
首先設計機械臂的動作基元并命名,將所有設計動作基元存儲到庫。上文中檢測到的動作信息按順序存儲、匹配目錄下的動作基元用來確定當前時間內的動作基元序列。程序在每次的示教過程中都會匹配出由多個動作基元組成的順序組合,然后在機械臂動作組庫中搜索關聯動作。識別到的動作編號串聯得到一個序列,用這個序列去找到一個完整匹配或者最接近的一個動作組(動作基元及其編號情況如圖11所示),則認定其為識別到的實驗動作,并且給出一個覆蓋度(Coverage)。

圖11 部分動作基元
當程序找到最匹配的一個動作組之后,繼續與庫中動作組進行匹配,存儲其匹配過程中動作組覆蓋度高于50%的相關信息。
示教是一個邊做邊說的過程,實驗員在手臂運動的過程中口述當前動作,這就需要語音技術的加成。語音技術的關鍵是對自然語言進行處理,對語音進行識別及文本生成,從而使機器具備能聽會說、能理解會思考的能力[18]。本文使用百度的實時語音識別,其基于Deep Peak2端到端建模,將接收到的音頻流實時識別成文字字符,進而使用正則表達式去提取動作關鍵字。該部分偽代碼如下:
Function:openvoc(blist)線程用于開啟語音模塊功能。
Function1(Function):GetAIvocworld用于實時獲取語音接口返回的識別結果。
Input1:APP_ID,API_KEY,SECERT_KEY,VOC控制臺注冊的應用ID、Key和輸入的音頻信息。
Process1:首先與控制臺建立websocket協議連接。
If:websocket_is_ok(),無錯誤碼。
Do:Process2:邊上傳音頻邊獲取識別結果。
Output1:result = client.asr(get_voccontent)識別結果還包括voctxt=result[‘result’][0]、begin time result[‘result’][1]和end time result[‘result’][2]。
Process3:Function:getRegularword(OutPut1(result))使用正則表達式提取上述輸出的文字信息,按照順序進行存儲。
OutPut2:action關鍵詞列表。
在這個過程中,由于是在化學實驗中的語音識別,所以需要將針對化學實驗中的許多術語以及當前實驗流程所需要的語音數據對訓練集文本語料進行補充,語料數據包括對語音文件的格式命名以及文本信息。語料數據集總結了約55 min的相關識別內容,其音頻文件經過模數轉換形成直接的二進制序列PCM文件格式存儲,實現聲音數字化的同時刪減了不同于其他文件格式的文件頭和結束標志,便于文件的串接。經過對該語料數據集的補充,能有效提升實驗業務場景下語音識別準確率7%~15%。
在上文中語音識別過程中,程序需提前在文本中讀取前期人為設定好的動作文件關鍵字,寫入到內存變量中。在每次示教過程中將語音識別到的關鍵字進行匹配文本,如正確匹配則立即記錄其標志編號IdentNumber并進行存儲。
將一整個示教過程中的所有匹配到的語音關鍵字編號按順序匯總,同動作檢測與匹配部分相似,查找機械臂的動作組,搜索到一個完整匹配或者最接近的一個動作組,暫認定其為語音識別到動作組,保留覆蓋度信息,并記錄其他覆蓋度高于50%的相關動作組信息。
由于本文機械臂示教程序主要在嵌入式設備中運行,某些場景中移動端、嵌入式設備相比于服務器或PC機,其配置、運算能力以及設備性能等會遜色許多[19]。在如此限制條件下,想要實現高速、準確的識別算法、示教方式難度較高。而且,示教是一個動態的過程,需要連續性的進行語音和動作的識別,這個過程難免會出現識別失效等情況影響準確率。所以本文借鑒傳感器的信息融合[20-22],編寫具有強針對性的算法將動作檢測以及語音識別兩個單獨模塊得到的關鍵信息進行結合,以此來提高技能獲取準確度,同時節約性能。
機械臂示教過程中得到的視頻識別信息和語音識別信息為一個動作組以及其覆蓋率。在運行效果最理想的情況下,視頻和語音給出的動作組長度是相等的,其數據如表2為例。表2中兩個模塊列出的是當前示教過程產生的最高覆蓋度的信息ACT_G0以及其他大于50%覆蓋度的動作覆蓋信息。

表2 匹配度分布表
如果在這一次的示教過程中,兩個模塊最大的覆蓋度動作組相同,即視頻和語音部分都選定了匹配度最高的相同的動作組,那么可以認定該動作為示教動作,不需要經歷融合的算法過程,而在這種低概率的情況之外則需要。
算法思路:定義Video Module部分的ACT_G0為VG0,后續依次定義為VGn,Audio Module部分同理定義為AG0、AG1……AGn。用AG0同VG部分的1-n進行比較,按照正序找到一個VGx同AG0的相似度為100%,即VG存在50%以上部分同AG0匹配,則記錄存儲AG0與VGx的覆蓋度積(AG0*VGx,0 FG=Mag[(AG0×VGx),(VG0×AGy)]x,y∈[0,n] (5) 其中:Mag為求最大值動作組的函數,FG為覆蓋率相乘之后取得最大值的機械臂動作組。 當上述過程中與ACT_G0相似度為100%的動作組為空時,則進入以下搜尋算法:任意兩套動作之間均有相似度(<100%),用原始的覆蓋度之積同這兩者之間的相似度,得出兩者的關聯值,將所有的關聯值匯總輸出最大值動作,即這個最大值是由兩個不同覆蓋度的動作融合得出的,然后在這兩個動作組中選擇與原始的一套動作基元序列最接近(覆蓋度最大)的動作組,即為最終確定的示教動作,上述過程如公式(6)、(7)所示: FQ(x,y)=AGx×VGy×Fit(AGx,VGy)x,y∈[0,n] (6) FFG=MAX_G{MAX[FQ(x,y)]}x,y∈[0,n] (7) 其中:Fit為兩套動作組之間的相似度,FQ為一對覆蓋度之積再乘上兩者相似度的動作相關值,式(7)中將兩個模塊所有的動作信息融合,輸出擁有最優相關值的一對動作,然后再選出與原始動作基元序列覆蓋度最高的動作組,即FFG。以此,完成對視頻模塊以及音頻模塊相關動作信息的驗證融合,機械臂確定最終的運動技能。 示教完成之后,程序加載最終確定的XML動作參數文件,其內容大致如圖3右側所示。程序按照順序讀取其中X、Y、Z電機的對應的方向以及步數參數,依次執行,控制樹莓派相關引腳的高低電平輸出,來控制電機的運轉。其中,步數參數1 024對應的機械臂轉動角度為18°,最高為10 240。 機械臂在運動中,安裝在機械臂前端夾爪附近的相機可以接收到實時圖像數據并通過USB端口傳輸到樹莓派,系統將其結合抓取位姿識別[23]算法進行抓取,算法使用了5個變量:{x,y,θ,h,w}來描述機械臂抓取物體時夾爪的抓取位置和夾爪方向。如圖12中的矩形框所示,其中(x,y)被用來表示矩形框的中心位置,用θ來表示圖像中的水平橫軸與當前矩形框傾斜位置的夾角,h即Heigh表示高度,w即Width用來表示寬度。 圖12 抓取位姿 當機械臂到達物體附近,需根據矩形框的位置對機械臂的前端位置進行細微的調整。即設置了6個基礎調整動作:左移和右移、上移和下移、順/逆時針旋轉移動,利用上述動作對機械臂調整以到達所預設的位置實現物體抓取。 該抓取位姿算法基于Cornell Grasping Dataset數據集,并在該數據集的基礎上繼續補充訓練了化學器材相關的抓取位置,補償性的提高了抓取位姿識別的準確度。 在信息融合部分對兩個模塊是否產生同樣數量的動作基元會有要求,因此針對該要求設置實驗來記錄每個模塊的動作基元個數。 測試實驗:實驗過程為在固定的試驗臺上,實驗員模擬整套實驗動作,并且同時口述動作。由于該過程不需要讓機械臂運動,只是觀察其示教過程,所以實驗程序在Windows10操作系統中運行,旨在記錄其產生的動作組中動作基元的個數,過程共進行了12次不同種實驗的示教測試,其每次示教過程中得到的語音部分和動作部分檢測的一整套動作的動作基元個數如表3所示。 表3 動作基元個數 可以看出,在動作基于少的動作組示教過程中,兩個模塊產生的動作基元個數基本一致,隨著動作基元個數增多,會出現少數不一致情況,總體結果效果良好。 在上述一致情況的基礎下,其最終動作組的覆蓋率如表4所示。 表4 動作組覆蓋率 % 記錄表中所示結果,再次補充了28次示教實驗:本次在樹莓派Rasbian桌面操作系統中運行示教程序,分為4個實驗員完成4種不同的化學實驗,每人重復7次實驗過程,記錄其過程中的識別覆蓋率。根據測試任務中動作基元的個數以及其動作組覆蓋率,最終計算出其整體示教準確率約為81.4%。該結果在化學機械臂不使用支撐設備的無接觸技能獲取領域取得了較好的成績。 目前系統對于出現不一致情況下還沒有明確的解決辦法,后續的研究內容還需要針對不一致情況下的相關算法進行完善和修改。 在準確率方面,該機械臂示教系統的穩定性與準確性取決于其動作行為識別以及語音識別部分的準確率。由于是在嵌入式設備中運行,其動作識別匹配部分算法需要保證輕量級,所以在提升識別速度的情況下犧牲了部分準確率。語音識別部分的近場中文普通話識別準確率達95%,其進一步進行的關鍵字匹配正確率相比簡單識別來說要求更高。兩個模塊在示教的過程中連續識別,難免會存在丟失識別的情況,這樣準確率就會降低,但基于信息融合之后,將兩者的優勢結合起來,其得出的最終動作覆蓋率可基本穩定在81%以上,這個結果目前來看是令人滿意的。 性能速度方面,在2 GB RAM的樹莓派系統中運行程序,其單個動作基元的擊中時間(識別出所耗費的時間)兩個模塊均在1 s以內(動作檢測程序段跳出時間約0.59 s,語音識別約0.82 s)。另外語音部分其后期需要執行多次循環驗證時時,可以改為使用機器碼編譯的語言來專門運行循環部分,創建針對該部分的dll動態鏈接庫,利用外部函數庫Ctypes去調用,可顯著提高循環速度。 對于位姿抓取部分,因試管等器材為透明材料,對識別效果有較大影響,嘗試改用標簽識別夾取(如圖13所示),或者將標簽的識別作為彌補性的措施,以此來提高識別效率。 圖13 標簽位置抓取 實驗員在化學實驗室中需要進行各種各樣的化學實驗,這些實驗繁瑣且有些實驗對人體有害。所以要利用機械臂代替實驗員進行實驗。但是目前所用到的實驗機械臂需要專業的機械臂控制人員去編程實現,這對于化學實驗員來說是有難度的。所以為了解決上述問題,本文基于動作檢測和語音識別提出了一個編程簡單高效的機械臂示教系統。 實驗員在邊做實驗的過程中邊口述其動作,系統利用動作檢測檢測實驗員手臂運動、搭配語音識別、使用信息融合相關的算法進行機械臂示教控制,教給機械臂應該執行的運動技能,機械臂在執行過程中結合位姿識別進行物體的抓取,完成一套實驗任務。該系統在運動技能獲取部分的準確率能達到81%以上,在運動控制部分將步進電機的每一步(1.8°)細分成16步的同時結合物體抓取位姿識別,實現了更精細的控制和抓取。4 機械臂運動控制

5 系統性能測試與分析
5.1 測試實驗及結果


5.2 測試效果及問題分析

6 結束語