孫 昊,馬興錄,豐 艷,李曉旭
(青島科技大學 信息科學技術(shù)學院,山東 青島 266061)
當前,人工智能科技發(fā)展如火如荼,智能控制作為當今關(guān)鍵核心技術(shù),其有效促進了新型控制體系的高速發(fā)展[1-3]?;嶒炇窃诨ぎa(chǎn)業(yè)進行研究、學習和生產(chǎn)過程中的一個不可或缺的環(huán)節(jié)[4]。目前來看,化學實驗的智能化水平不高,利用機器人機械臂等智能化的機械設(shè)備去進行化學實驗所能夠完成的實驗過程較為單一而且編程較為復雜。并且化工實驗中會使用各種各樣的化學試劑,這些試劑在實驗過程中相互作用會產(chǎn)生各種有害物質(zhì), 甚至當實驗出現(xiàn)失誤時還可能出現(xiàn)不可預知的危險。所以,利用更加智能化的機械臂等設(shè)備代替實驗員去完成相關(guān)的化學實驗是非常有必要的。
機器學習和機器視覺技術(shù)的發(fā)展,使得機械臂演繹編程為人機交互提供了新的解決辦法,是降低機械臂技能獲取難度的重要途徑[5-7]。機械臂示教編程是通過對人的示教動作進行觀看學習,從而自動習得運動軌跡的過程,具有難度低、人機交互便捷、操作靈活等優(yōu)點[8]。本文將手臂動作檢測與語音識別結(jié)合,同時借助信息融合和位姿識別,設(shè)計了一個機械臂的示教控制系統(tǒng)[9],讓機械臂能夠看懂、聽懂實驗工作人員教授的技能,并能夠更準確、快捷地完成人機交互,進而代替實驗員完成實驗工作。
本設(shè)計中的示教控制系統(tǒng)是以桌面型實驗機械臂為物理載體,以樹莓派操作系統(tǒng)為平臺。主要針對在化學分析實驗場景下,通過實驗員的示教去教會實驗機械臂學習模仿人手臂的實驗動作,再結(jié)合一定的實驗儀器的抓取位姿識別算法來輔助控制,示教與運動控制兩者相結(jié)合來完成一套實驗流程組合。
如圖1所示,本設(shè)計的整體邏輯架構(gòu)可以分為3個層面:自下而上來看分別是硬件組成、設(shè)備驅(qū)動以及應(yīng)用軟件層:
圖1 系統(tǒng)邏輯架構(gòu)
其中硬件組成為桌面型機械臂(擁有3個基礎(chǔ)自由度,類似人類手臂)、樹莓派4B核心板、電機及電機控制板、高清單目相機、麥克風以及機械爪。
設(shè)備驅(qū)動部分包括對麥克風的音頻驅(qū)動、USB_Cam相機驅(qū)動、電機驅(qū)動以及其他相關(guān)的可編程邏輯等。
應(yīng)用軟件層為在樹莓派桌面型操作系統(tǒng)中運行的軟件程序和構(gòu)建的機械臂動作參數(shù)集合,該操作系統(tǒng)與Linux操作系統(tǒng)類似。其中軟件程序部分包括:一個可視化的界面程序用于電機控制和示教流程把握、語音識別[10]功能模塊、動作檢測模塊以及動作信息的融合匹配部分。
示教控制系統(tǒng)的整體工作業(yè)務(wù)流程如圖2所示。在這一整套實驗流程的示教過程中,一套完整實驗流程是由許多個簡單實驗動作組成,叫做動作基元。實驗員需要在一邊做動作的過程中一邊口述其動作,機械臂通過聽和看獲取信息并進行融合驗證,進而能夠理解需要去完成的動作。即語音識別模塊和動作識別模塊分別將對該一整套實驗流程動作識別出來的動作基元按順序組合放入集合中,然后與本地動作庫中存儲的機械臂動作集中的動作組進行匹配,得出動作信息。過程中的識別信息通過信息融合算法得出最終確定的一套動作組,保存或交給機械臂去運行復現(xiàn)。
圖2 系統(tǒng)功能流程
系統(tǒng)可視化界面如圖3所示,可兼容Windows和Linux操作系統(tǒng)。如圖中右側(cè)所示,其中動作參數(shù)使用xml文件存儲,其格式規(guī)整簡單,便于讀取和存儲動作參數(shù)??梢暬缑嬷性O(shè)置3個Scale和Radiobutton分別控制3個電機{x、y、z}的步數(shù)和方向,通過滑動、添加動作以此來定義動作組并存儲。點擊開始現(xiàn)場示教開啟攝像頭,則開始執(zhí)行示教功能。
圖3 系統(tǒng)界面
如圖4所示,本設(shè)計中的桌面型機械臂擁有3個基礎(chǔ)自由度,可在桌面上方的空間內(nèi)轉(zhuǎn)動。機械臂以樹莓派4B為核心控制板,電機驅(qū)動擴展板、步進電機驅(qū)動模塊、3個步進電機、一個 12 V 電源適配器以及帶麥克風的攝像頭等組成。抓取與放置操作,使用機械臂通用夾具、夾爪等。
圖4 機械臂結(jié)構(gòu)圖
如圖5所示,樹莓派4B實質(zhì)上是一臺微小的嵌入式PC,類似于身份證大小,其系統(tǒng)基于Linux操作系統(tǒng)(本文燒錄桌面型的RasBian System),擁有64位、1.5 GHz的四核CPU,內(nèi)存可選擇使用1 GB,2 GB或4 GB的RAM,帶有全吞吐量千兆以太網(wǎng),還可實現(xiàn)雙頻802.11ac的無線網(wǎng)絡(luò),藍牙為5.0版本,且擁有兩個USB 3.0和兩個USB 2.0通信端口[11]。
圖5 樹莓派4B
控制機械臂進行運動的關(guān)鍵部位就是電機,本機械臂使用的步進電機有3個,實現(xiàn)了3個基礎(chǔ)自由度的運動控制。機械臂采用大扭矩42行星減速式的步進電機,其水平運動的電機其理論減速比為1:5.18,實際測量為11:57接近理論值;兩個手臂部分的步進伸縮電機的減速比均為1:19(實際測量得到187:3591)。電機的電流為1.7 A,步距角度為1.8°,其步距精度為5%。
如圖6所示,電機驅(qū)動器采用A4988驅(qū)動器,可驅(qū)動電機電壓8~35 V。本機械臂采用12 V電源給電機供電。其中,每個步進電機驅(qū)動模塊輸出2個控制信號,分別為STEP和DIR,與樹莓派引腳相接來分別實現(xiàn)步進脈沖和方向的控制;其中MS1-3引腳在本設(shè)計中均接高電平,接口電平及步數(shù)對應(yīng)參數(shù)如表1所示,將電機每一步(1.8°)細分為16步,實現(xiàn)了更加精細的控制。
表1 MS接口對應(yīng)參數(shù)
圖6 步進電機驅(qū)動模塊
本文動作檢測部分主要基于改進的雙流卷積網(wǎng)絡(luò),該部分將預處理過的圖像信息輸入網(wǎng)絡(luò),分別使用EfficientNetv2[12]算法計算RGB圖像和光流圖像特征,然后將提取得到的特征信息使用線性分類器SVM[13-16]進行行為分類,得到動作的識別信息。
如圖7所示,雙流卷積網(wǎng)絡(luò)是將輸入的視頻分為兩路來進行處理,其中一個是由卷積神經(jīng)網(wǎng)絡(luò)提取RGB圖像中任務(wù)手臂和場景相關(guān)信息,另外一部分是處理光流圖像信息,最后由Softmax函數(shù)分別進行歸一化融合處理。
圖7 雙流卷積網(wǎng)絡(luò)結(jié)構(gòu)
網(wǎng)絡(luò)中光流圖像的提取(動作視頻預處理)部分是由基于梯度的運算得到,算法關(guān)鍵原理如下:首先設(shè)定圖像數(shù)列I(x,y,t),向量X=[x,y],數(shù)列是由一段演示視頻中的前后幀提取得到,即當視頻局部的光流圖像基本恒定時,對于任意的Y∈N(x),有:
H(I)·d+(▽I)t=0
(1)
其中:X為x矢量,H(I)為圖像數(shù)列I的Hesse矩陣,引入X與偏移量d的關(guān)系:
(2)
令導數(shù)等于0可以求得:
d=-(HT(I)H(I))-1(HT(I)(▽I)t)
(3)
上述過程,可以總結(jié)為依據(jù)視頻圖像中的像素點在時間線上的變化和相鄰幀圖像之間的關(guān)聯(lián)性來進行分析,找到上一幀和當前一幀的對應(yīng)關(guān)系,計算出運動信息(偏移量即為一種運動信息),進而繪制出光流圖像。
在計算特征部分,如圖8所示,EfficientNetv2相較于前期的EfficientNet[17]算法部分使用Fused-MBConv替換MBConv結(jié)構(gòu),即使用常規(guī)的3*3卷積替換MBConv中的3*3深度卷積和1*1卷積,提高網(wǎng)絡(luò)的計算速度。
圖8 EfficientNetv2結(jié)構(gòu)改進示意
得到RGB圖像和光流圖像的特征信息,需要對其進行分類驗證。支持向量機SVM是一種二分類模型,是用來求解能夠正確劃分訓練數(shù)據(jù)集并且?guī)缀伍g隔最大的分離超平面。如圖9所示,w*x+b=0即分離超平面,這樣的超平面一般數(shù)量很多,但是幾個間隔最大的分離超平面確是僅有唯一的一個。對于其中的最優(yōu)值,其求解的公式如下:
圖9 SVM原理
(4)
整體結(jié)構(gòu)表示如圖10所示,即將雙流卷積網(wǎng)絡(luò)中的RGB和光流特征提取部分使用輕量級的Efficientnetv2分別進行卷積和池化處理,再結(jié)合SVM分類器對兩個分支給出的動作信息進行分類,最終給出一個識別到的動作信息。
圖10 動作檢測網(wǎng)絡(luò)結(jié)構(gòu)
當獲得一套完整動作的識別信息之后,需要去確定該模塊機械臂動作的執(zhí)行序列,獲得機械臂的可執(zhí)行動作。
首先設(shè)計機械臂的動作基元并命名,將所有設(shè)計動作基元存儲到庫。上文中檢測到的動作信息按順序存儲、匹配目錄下的動作基元用來確定當前時間內(nèi)的動作基元序列。程序在每次的示教過程中都會匹配出由多個動作基元組成的順序組合,然后在機械臂動作組庫中搜索關(guān)聯(lián)動作。識別到的動作編號串聯(lián)得到一個序列,用這個序列去找到一個完整匹配或者最接近的一個動作組(動作基元及其編號情況如圖11所示),則認定其為識別到的實驗動作,并且給出一個覆蓋度(Coverage)。
圖11 部分動作基元
當程序找到最匹配的一個動作組之后,繼續(xù)與庫中動作組進行匹配,存儲其匹配過程中動作組覆蓋度高于50%的相關(guān)信息。
示教是一個邊做邊說的過程,實驗員在手臂運動的過程中口述當前動作,這就需要語音技術(shù)的加成。語音技術(shù)的關(guān)鍵是對自然語言進行處理,對語音進行識別及文本生成,從而使機器具備能聽會說、能理解會思考的能力[18]。本文使用百度的實時語音識別,其基于Deep Peak2端到端建模,將接收到的音頻流實時識別成文字字符,進而使用正則表達式去提取動作關(guān)鍵字。該部分偽代碼如下:
Function:openvoc(blist)線程用于開啟語音模塊功能。
Function1(Function):GetAIvocworld用于實時獲取語音接口返回的識別結(jié)果。
Input1:APP_ID,API_KEY,SECERT_KEY,VOC控制臺注冊的應(yīng)用ID、Key和輸入的音頻信息。
Process1:首先與控制臺建立websocket協(xié)議連接。
If:websocket_is_ok(),無錯誤碼。
Do:Process2:邊上傳音頻邊獲取識別結(jié)果。
Output1:result = client.asr(get_voccontent)識別結(jié)果還包括voctxt=result[‘result’][0]、begin time result[‘result’][1]和end time result[‘result’][2]。
Process3:Function:getRegularword(OutPut1(result))使用正則表達式提取上述輸出的文字信息,按照順序進行存儲。
OutPut2:action關(guān)鍵詞列表。
在這個過程中,由于是在化學實驗中的語音識別,所以需要將針對化學實驗中的許多術(shù)語以及當前實驗流程所需要的語音數(shù)據(jù)對訓練集文本語料進行補充,語料數(shù)據(jù)包括對語音文件的格式命名以及文本信息。語料數(shù)據(jù)集總結(jié)了約55 min的相關(guān)識別內(nèi)容,其音頻文件經(jīng)過模數(shù)轉(zhuǎn)換形成直接的二進制序列PCM文件格式存儲,實現(xiàn)聲音數(shù)字化的同時刪減了不同于其他文件格式的文件頭和結(jié)束標志,便于文件的串接。經(jīng)過對該語料數(shù)據(jù)集的補充,能有效提升實驗業(yè)務(wù)場景下語音識別準確率7%~15%。
在上文中語音識別過程中,程序需提前在文本中讀取前期人為設(shè)定好的動作文件關(guān)鍵字,寫入到內(nèi)存變量中。在每次示教過程中將語音識別到的關(guān)鍵字進行匹配文本,如正確匹配則立即記錄其標志編號IdentNumber并進行存儲。
將一整個示教過程中的所有匹配到的語音關(guān)鍵字編號按順序匯總,同動作檢測與匹配部分相似,查找機械臂的動作組,搜索到一個完整匹配或者最接近的一個動作組,暫認定其為語音識別到動作組,保留覆蓋度信息,并記錄其他覆蓋度高于50%的相關(guān)動作組信息。
由于本文機械臂示教程序主要在嵌入式設(shè)備中運行,某些場景中移動端、嵌入式設(shè)備相比于服務(wù)器或PC機,其配置、運算能力以及設(shè)備性能等會遜色許多[19]。在如此限制條件下,想要實現(xiàn)高速、準確的識別算法、示教方式難度較高。而且,示教是一個動態(tài)的過程,需要連續(xù)性的進行語音和動作的識別,這個過程難免會出現(xiàn)識別失效等情況影響準確率。所以本文借鑒傳感器的信息融合[20-22],編寫具有強針對性的算法將動作檢測以及語音識別兩個單獨模塊得到的關(guān)鍵信息進行結(jié)合,以此來提高技能獲取準確度,同時節(jié)約性能。
機械臂示教過程中得到的視頻識別信息和語音識別信息為一個動作組以及其覆蓋率。在運行效果最理想的情況下,視頻和語音給出的動作組長度是相等的,其數(shù)據(jù)如表2為例。表2中兩個模塊列出的是當前示教過程產(chǎn)生的最高覆蓋度的信息ACT_G0以及其他大于50%覆蓋度的動作覆蓋信息。
表2 匹配度分布表
如果在這一次的示教過程中,兩個模塊最大的覆蓋度動作組相同,即視頻和語音部分都選定了匹配度最高的相同的動作組,那么可以認定該動作為示教動作,不需要經(jīng)歷融合的算法過程,而在這種低概率的情況之外則需要。
算法思路:定義Video Module部分的ACT_G0為VG0,后續(xù)依次定義為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為求最大值動作組的函數(shù),F(xiàn)G為覆蓋率相乘之后取得最大值的機械臂動作組。 當上述過程中與ACT_G0相似度為100%的動作組為空時,則進入以下搜尋算法:任意兩套動作之間均有相似度(<100%),用原始的覆蓋度之積同這兩者之間的相似度,得出兩者的關(guān)聯(lián)值,將所有的關(guān)聯(lián)值匯總輸出最大值動作,即這個最大值是由兩個不同覆蓋度的動作融合得出的,然后在這兩個動作組中選擇與原始的一套動作基元序列最接近(覆蓋度最大)的動作組,即為最終確定的示教動作,上述過程如公式(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為兩套動作組之間的相似度,F(xiàn)Q為一對覆蓋度之積再乘上兩者相似度的動作相關(guān)值,式(7)中將兩個模塊所有的動作信息融合,輸出擁有最優(yōu)相關(guān)值的一對動作,然后再選出與原始動作基元序列覆蓋度最高的動作組,即FFG。以此,完成對視頻模塊以及音頻模塊相關(guān)動作信息的驗證融合,機械臂確定最終的運動技能。 示教完成之后,程序加載最終確定的XML動作參數(shù)文件,其內(nèi)容大致如圖3右側(cè)所示。程序按照順序讀取其中X、Y、Z電機的對應(yīng)的方向以及步數(shù)參數(shù),依次執(zhí)行,控制樹莓派相關(guān)引腳的高低電平輸出,來控制電機的運轉(zhuǎn)。其中,步數(shù)參數(shù)1 024對應(yīng)的機械臂轉(zhuǎn)動角度為18°,最高為10 240。 機械臂在運動中,安裝在機械臂前端夾爪附近的相機可以接收到實時圖像數(shù)據(jù)并通過USB端口傳輸?shù)綐漭?,系統(tǒng)將其結(jié)合抓取位姿識別[23]算法進行抓取,算法使用了5個變量:{x,y,θ,h,w}來描述機械臂抓取物體時夾爪的抓取位置和夾爪方向。如圖12中的矩形框所示,其中(x,y)被用來表示矩形框的中心位置,用θ來表示圖像中的水平橫軸與當前矩形框傾斜位置的夾角,h即Heigh表示高度,w即Width用來表示寬度。 圖12 抓取位姿 當機械臂到達物體附近,需根據(jù)矩形框的位置對機械臂的前端位置進行細微的調(diào)整。即設(shè)置了6個基礎(chǔ)調(diào)整動作:左移和右移、上移和下移、順/逆時針旋轉(zhuǎn)移動,利用上述動作對機械臂調(diào)整以到達所預設(shè)的位置實現(xiàn)物體抓取。 該抓取位姿算法基于Cornell Grasping Dataset數(shù)據(jù)集,并在該數(shù)據(jù)集的基礎(chǔ)上繼續(xù)補充訓練了化學器材相關(guān)的抓取位置,補償性的提高了抓取位姿識別的準確度。 在信息融合部分對兩個模塊是否產(chǎn)生同樣數(shù)量的動作基元會有要求,因此針對該要求設(shè)置實驗來記錄每個模塊的動作基元個數(shù)。 測試實驗:實驗過程為在固定的試驗臺上,實驗員模擬整套實驗動作,并且同時口述動作。由于該過程不需要讓機械臂運動,只是觀察其示教過程,所以實驗程序在Windows10操作系統(tǒng)中運行,旨在記錄其產(chǎn)生的動作組中動作基元的個數(shù),過程共進行了12次不同種實驗的示教測試,其每次示教過程中得到的語音部分和動作部分檢測的一整套動作的動作基元個數(shù)如表3所示。 表3 動作基元個數(shù) 可以看出,在動作基于少的動作組示教過程中,兩個模塊產(chǎn)生的動作基元個數(shù)基本一致,隨著動作基元個數(shù)增多,會出現(xiàn)少數(shù)不一致情況,總體結(jié)果效果良好。 在上述一致情況的基礎(chǔ)下,其最終動作組的覆蓋率如表4所示。 表4 動作組覆蓋率 % 記錄表中所示結(jié)果,再次補充了28次示教實驗:本次在樹莓派Rasbian桌面操作系統(tǒng)中運行示教程序,分為4個實驗員完成4種不同的化學實驗,每人重復7次實驗過程,記錄其過程中的識別覆蓋率。根據(jù)測試任務(wù)中動作基元的個數(shù)以及其動作組覆蓋率,最終計算出其整體示教準確率約為81.4%。該結(jié)果在化學機械臂不使用支撐設(shè)備的無接觸技能獲取領(lǐng)域取得了較好的成績。 目前系統(tǒng)對于出現(xiàn)不一致情況下還沒有明確的解決辦法,后續(xù)的研究內(nèi)容還需要針對不一致情況下的相關(guān)算法進行完善和修改。 在準確率方面,該機械臂示教系統(tǒng)的穩(wěn)定性與準確性取決于其動作行為識別以及語音識別部分的準確率。由于是在嵌入式設(shè)備中運行,其動作識別匹配部分算法需要保證輕量級,所以在提升識別速度的情況下犧牲了部分準確率。語音識別部分的近場中文普通話識別準確率達95%,其進一步進行的關(guān)鍵字匹配正確率相比簡單識別來說要求更高。兩個模塊在示教的過程中連續(xù)識別,難免會存在丟失識別的情況,這樣準確率就會降低,但基于信息融合之后,將兩者的優(yōu)勢結(jié)合起來,其得出的最終動作覆蓋率可基本穩(wěn)定在81%以上,這個結(jié)果目前來看是令人滿意的。 性能速度方面,在2 GB RAM的樹莓派系統(tǒng)中運行程序,其單個動作基元的擊中時間(識別出所耗費的時間)兩個模塊均在1 s以內(nèi)(動作檢測程序段跳出時間約0.59 s,語音識別約0.82 s)。另外語音部分其后期需要執(zhí)行多次循環(huán)驗證時時,可以改為使用機器碼編譯的語言來專門運行循環(huán)部分,創(chuàng)建針對該部分的dll動態(tài)鏈接庫,利用外部函數(shù)庫Ctypes去調(diào)用,可顯著提高循環(huán)速度。 對于位姿抓取部分,因試管等器材為透明材料,對識別效果有較大影響,嘗試改用標簽識別夾取(如圖13所示),或者將標簽的識別作為彌補性的措施,以此來提高識別效率。 圖13 標簽位置抓取 實驗員在化學實驗室中需要進行各種各樣的化學實驗,這些實驗繁瑣且有些實驗對人體有害。所以要利用機械臂代替實驗員進行實驗。但是目前所用到的實驗機械臂需要專業(yè)的機械臂控制人員去編程實現(xiàn),這對于化學實驗員來說是有難度的。所以為了解決上述問題,本文基于動作檢測和語音識別提出了一個編程簡單高效的機械臂示教系統(tǒng)。 實驗員在邊做實驗的過程中邊口述其動作,系統(tǒng)利用動作檢測檢測實驗員手臂運動、搭配語音識別、使用信息融合相關(guān)的算法進行機械臂示教控制,教給機械臂應(yīng)該執(zhí)行的運動技能,機械臂在執(zhí)行過程中結(jié)合位姿識別進行物體的抓取,完成一套實驗任務(wù)。該系統(tǒng)在運動技能獲取部分的準確率能達到81%以上,在運動控制部分將步進電機的每一步(1.8°)細分成16步的同時結(jié)合物體抓取位姿識別,實現(xiàn)了更精細的控制和抓取。4 機械臂運動控制
5 系統(tǒng)性能測試與分析
5.1 測試實驗及結(jié)果
5.2 測試效果及問題分析
6 結(jié)束語