王如斌 竇全禮,2 張 淇 周 誠
(1.華中科技大學 土木與水利工程學院,武漢 430074;2.濰柴動力股份有限公司,濰坊 261061)
挖掘機是普遍應用于土石方工程施工的工程機械之一,傳統(tǒng)的人工操作挖掘機的方式有其局限性:一方面,挖掘機操作員在執(zhí)行重復任務時處在噪聲與振動環(huán)境中,需要時刻保持專注,以便進行高效的工作[6-7]; 另一方面,挖掘機通常在比較惡劣的環(huán)境下作業(yè),有時被應用于污染土壤修復、搶險救災等危險工況,此類情況下如采用人工現(xiàn)場操作挖掘機的作業(yè)方式,會對操作者的人身安全構成威脅[3],因此需要找尋一種遠程、無人的作業(yè)方式。挖掘機的機器人化是現(xiàn)在急需解決的問題,在全自動智能挖掘機研制出來之前,通過遙操作控制挖掘機在未來相當長的一段時間內(nèi)都會占有重要的地位,其中基于人機交互的遙操作方式的設計與研究也受到了廣泛的關注[4]。
手勢交互是一種重要的自然交互方式,因而手勢識別成為人機交互的一個重要分支領域[5]。近些年來,國內(nèi)外的研究機構曾成功開發(fā)了大量能夠?qū)崿F(xiàn)遙操作的設備和算法,目前存在一些將手勢識別和遙操作結合的相關研究,大致可分為基于穿戴設備的手勢識別[1-2]和基于視覺的手勢識別[8]兩大類。后者又可分為靜態(tài)手勢識別和動態(tài)手勢識別兩類,靜態(tài)研究時間節(jié)點上的圖像,動態(tài)識別時序圖像[9]。
本文針對傳統(tǒng)的人工現(xiàn)場操作挖掘機的方式與現(xiàn)存的挖掘機遙控方式中存在的控制精度低、復合作業(yè)程度低等缺點,提出一種基于MediaPipe機器視覺的手勢識別用于挖掘機遙操作控制的方案。該遙操作方式能較好地滿足挖掘機作業(yè)的需求,為挖掘機的遠程控制提供了一種更人性化的人機交互形式,具有實際的應用價值和研究價值。
反鏟挖掘機器人遙操作系統(tǒng)由單目相機、挖掘機、遠程操作硬件系統(tǒng)和遠程操作軟件系統(tǒng)構成,如圖1所示。在整個人機交互系統(tǒng)當中,單目相機是主要的外界信息輸入設備,其通過采集數(shù)據(jù)圖像并實時傳輸給手勢識別模塊,通過MediaPipe算法生成控制指令; 挖掘機作為被控制的對象,操作人員可以在工作場地或者通過外設監(jiān)視器觀察挖掘機的工作情況,操作挖掘機,進而對挖掘機的運動狀態(tài)進行調(diào)整。
圖1 交互系統(tǒng)示意圖
主端(操作人員+單目相機+計算機)通過改變手勢,能夠?qū)崿F(xiàn)控制從端(挖掘機)完成各種工作所需的動作。從端做出與預期不符的動作時,操作者能夠及時調(diào)整。在熟悉數(shù)據(jù)手套操作后,挖掘機操作人員能夠通過相對省力、簡便的動作實現(xiàn)與使用操作桿同樣的控制水平。
反鏟液壓挖掘機的工作裝置由鏟斗、鏟斗液壓油缸、斗桿、斗桿液壓油缸、動臂、動臂液壓缸和連桿機構組成,且均被鉸接,通過缸體的膨脹和收縮來驅(qū)動桿,以執(zhí)行挖掘過程中所需的各種動作,如圖2所示。動臂、斗桿和鏟斗的動作可分別進行,也可同時進行,挖掘時動作靈活、效率較高。正常挖掘機液壓挖掘機在正常排氣運動工作時,機體通常通過依靠三組液壓缸的動力支持而分別移動。
圖2 挖掘機整體結構簡化圖
(1)基本原理
采用D-H(Denavit-Hartenberg)坐標變換法[10]對實驗用挖掘機模型進行運動學分析,通過對工作裝置的齊次坐標變換建立工作裝置運動方程。如圖3,平行于關節(jié)軸建立兩個標準坐標系xi-1yi-1zi-1和xiyizi,在運用D-H法建模時,有嚴格的固定的定義變量、參數(shù)和表示字符的方式。
圖3 標準D-H法連桿坐標系
連桿參數(shù)作定義如下:
ai-1:沿著xi-1軸測量的從zi-1軸到zi軸的距離
αi-1:zi-1軸和zi軸繞xi-1軸的角
di:zi軸測量的從xi-1軸到xi軸的距離
θi:xi-1軸和xi軸繞zi軸的角
兩相鄰坐標變換時矩陣為:
(2-1)
右乘坐標變換矩陣的幾何意義即是相鄰坐標系之間的轉(zhuǎn)換,故重復右乘的操作可完成多個相鄰坐標系之間的轉(zhuǎn)換。
(2)連桿坐標系
根據(jù)D-H坐標變換法建立挖掘機模型工作裝置連桿坐標系如圖4所示:
圖4 挖掘機工作裝置連桿坐標系簡圖
其中,O0為旋轉(zhuǎn)中心,O1為動臂鉸接點,O2為斗桿鉸接點,O3為鏟斗鉸接點,O4為工作裝置末端。
由D-H法確立各個桿件的參數(shù)如表1所示。
表1 工作裝置D-H參數(shù)表
(3)運動學正解
根據(jù)坐標系變換原則,可以求出由旋轉(zhuǎn)中心O0的基礎坐標系表示對工作裝置末端O4的位姿矩陣:
(2-2)
其中,
si=sinθi,sij=sin(θi+θj),sijk=sin(θi+θj+θk),
ci=cosθi,cij=cos(θi+θj),cijk=cos(θi+θj+θk)
Google基于 MediaPipe框架實現(xiàn)了一種全新的手部感知方法,該方法利用機器學習(ML)推斷出單幀內(nèi)的21 個3D 手部關鍵點,如圖5所示,從而提供手部與手指的高保真追蹤軌跡[11]。
圖5 手部關鍵點
基于手勢識別系統(tǒng)的搭建需要經(jīng)過三步:手勢檢測、手勢跟蹤、手勢識別[12],基于MediaPipe的手勢識別同樣包含手掌檢測模型、手部關鍵部位模型、手勢識別器三個部分。其中,手掌檢測模型,用于從圖像中識別手掌,定義手部邊界區(qū)域; 手部關鍵部位模型,用于對手部邊界區(qū)域檢測并返回3D 手部關鍵點; 手勢識別器,則用根據(jù)手部關鍵點定義并識別各種手勢。手勢識別系統(tǒng)的架構示意圖如圖6所示。
圖6 交互系統(tǒng)示意圖
手勢識別和遙操作實驗是在實驗室中進行的,對鐳速AC360型號的1∶14仿真合金液壓挖掘機進行了模擬沙土挖掘的實驗。挖掘機模型的幾何尺寸如圖7所示(單位:毫米),其可通過直流電源驅(qū)動電機與油泵,實現(xiàn)對實際反鏟挖掘機的高度仿真。
圖7 LESU AC360挖掘機模型幾何尺寸
本文提出的方法是在AMD Ryzen 5 3600X 6-Core 六核CPU和Nvidia GeForce GTX 760(2 GB)的臺式電腦上利用Python實現(xiàn)的,當然也可以在任何其他安裝了Python的PC上執(zhí)行,需要注意的是要有一個錄像規(guī)格在1080×720、25FPS以上的攝像頭。此外為定義操作指令、控制具體運行程序從而實現(xiàn)對挖掘機的控制,如圖8、圖9所示,選用主芯片為AT Mega328P(Uno)單片機的Arduino舵機控制器,其有六個可以用于PWM信號輸出的接口。
圖8 ATmega328P單片機
圖9 Arduino舵機控制器接口
實驗在兩個鋼制沙盤中進行,挖掘機放入右側(cè)沙盤中間,其前方設置高于沙土面的沙土堆,以供挖掘機挖掘,示意圖和實物圖如圖10所示。實驗過程分為兩個主要部分:手勢識別和挖掘機控制器。
圖10 沙盤示意圖和實物圖
(1)手勢交互設計
本系統(tǒng)手勢交互由一只手和單目相機完成,通過單手手勢的變化,可以對挖掘機器人的行走裝置、工作裝置進行控制。比如呈豎起大拇指狀時,油泵啟動; 呈大拇指和食指張開的手勢“八”狀時,車體前進。具體的手勢設計如圖11所示。
圖11 手勢交互設計
(2)映射過程建立
映射過程如圖12所示,單目相機采集視頻圖像數(shù)據(jù),連接至計算機,打開計算機應用程序上位機,就可以從中實時讀取圖像中包含的手勢信息。由于獲取的手勢信息不是所需的標準輸出,因此需要由servo庫函數(shù)轉(zhuǎn)化后變化為舵機轉(zhuǎn)動指令,將所對應的控制指令發(fā)送到單片機的舵機上,控制挖掘機行走裝置和工作裝置的動作變換,實現(xiàn)機器人的姿態(tài)檢測和相應的動作反應。
表2 檢測置信度為0.8時各手勢識別準確率
圖12 手勢映射過程示意圖
(3)靜態(tài)手勢識別
為了對手勢識別的準確率進行測試,首先針對靜態(tài)圖片進行手勢識別。作者邀請5位同學表演不同的手勢,記錄手勢時,使一只手掌處于屏幕中心,約占屏幕1/4-1/3,以確保手掌大小相似可識別。根據(jù)設計的15種手勢,每位同學每種手勢表演3次,得到225張手勢圖像。首先將圖像壓縮到600×600分辨率,然后利用數(shù)據(jù)增強代碼,通過翻轉(zhuǎn)、旋轉(zhuǎn)、平移、模糊、或調(diào)亮的形式擴充數(shù)據(jù)集,最終得到4 500張手勢圖像。
如圖13依次輸入每張手勢圖像,輸出手勢識別結果并將結果和手部關鍵點繪制在圖像上,最終統(tǒng)計得到檢測置信度為0.8時各手勢識別的混淆矩陣,如表2所示。
圖13 部分靜態(tài)手勢圖像識別輸出圖像
采用精確率、召回率和F1綜合評價指標來評估手勢識別的算法性能,得到表3,其中
TP(TruePositive):真正例,即預測為正,真實為正的部分;
FP(FalsePositive):假正例,即預測為正,真實為負的部分;
FN(FalseNegative):假負例,即預測為負,真實為正。
表3 各手勢預測模型的精確率、召回率以及 F1綜合評價指標
此外,為判斷手部動作能否被正常識別與顯示,驗證手勢與控制指令能否正確對應,檢測并調(diào)整手指動作對應數(shù)據(jù)的上下邊界,還需要對視頻流下手勢識別的準確度進行試驗測試。在實驗中依次做出圖11所示的15個手勢,記錄計算機中的上位機顯示的數(shù)據(jù),判斷是否對應了正確的識別手勢名稱,實驗過程中靜態(tài)手勢識別圖如圖14所示。
表4 Arduino舵機串口指令
圖14 靜態(tài)手勢識別
挖掘機行走裝置與工作裝置的運動以及單目相機識別到的手勢變化之間的映射關系是本課題的核心內(nèi)容。為驗證本文所設計的基于手勢識別控制挖掘機的系統(tǒng)能否正常運行,設計了基于手勢識別的主從操控實驗。
(1)主控端設計
在主控端,首先會由單目相機輸入視頻流,取每秒25幀圖像進行靜態(tài)手勢識別,將手勢信息轉(zhuǎn)換為單片機的串口指令。
在靜態(tài)手勢識別的實驗中,可以得到較為穩(wěn)定的識別結果,但是,仍然存在識別錯誤的情況。為了消除這種偶現(xiàn)的錯誤對主從操控實驗穩(wěn)定性的影響,創(chuàng)建了一個手勢緩沖器。當手勢識別結果達到一定的閾值(≥0.5s),再傳輸?shù)酱谥噶钌蓡卧?,輸出控制指令?/p>
(2)從控端設計
在挖掘機從控端,利用Arduino IDE寫入Arduino程序,包含setup和loop兩個主函數(shù)。在setup函數(shù)中對系統(tǒng)進行初始化操作后,loop函數(shù)會循環(huán)檢測串口,接收并解析串口指令,控制舵機等執(zhí)行對應操作驅(qū)動液壓缸,實現(xiàn)動臂落下等動作,表4給出了部分舵機操作串口指令。
(3)通信設計
在挖掘機從控端與計算機主控端,采用藍牙串口的形式實現(xiàn)雙端通信。在計算機端,通過藍牙模擬串口將手勢識別得到的控制指令發(fā)送到單片機的藍牙模塊,繼而控制挖掘機各部件。
(4)主從操控實驗
實驗時首先需要調(diào)試軟硬件系統(tǒng),隨后在沙盤中進行了單動作控制與挖掘沙土的模擬,實驗過程部分圖像如圖15所示。根據(jù)運動學分析,通過獲取三個液壓缸的行程能解算出鏟斗相對于挖掘機車體的位置。因此,可以存儲一個動作序列,讓液壓缸以一定速率伸縮一定的時間,使得鏟斗依次達到不同的位置,完成的沙土挖卸動作。將某一手勢映射到該動作序列指令,即可實現(xiàn)單手勢對挖卸沙土的實現(xiàn)。
圖15 實驗過程部分圖像
結果顯示控制挖掘機的軟件與硬件系統(tǒng)都能夠正常運行,對于單動作控制手勢識別準確、控制響應迅速,也可以采用此方法實現(xiàn)一個完整的沙土挖掘動作序列。
本文的主要研究課題是基于MediaPipe的手勢識別用于反鏟挖掘機的遙操作控制系統(tǒng),最終實現(xiàn)的功能是通過識別的手勢控制挖掘機,能夠通過手勢操作使挖掘機實現(xiàn)一個完整的挖掘沙土的動作序列。本文設計了15種不同的手勢,通過兩個實驗,使該系統(tǒng)的可行性和魯棒性得到了驗證,能夠較準確地識別手勢并遠程控制挖掘機,為其遙操作提供了一種新型的人機交互思路。
本研究的局限在于沒有在手勢識別上進行更深層次的研究,手勢P-ON和FORWARD的識別綜合評價指標分別為90.69%和89.75%,并不理想。本研究的算法中,主要是通過判別手指的開合來分類識別手勢的,在以手背面向攝像頭時,就難以實現(xiàn)個別手勢的識別。然而,通過這些手勢也不能非常流暢地控制挖掘機,無法在挖掘機實際所處的復雜環(huán)境下高效施工。
未來研究的目的在于更流暢便捷地通過手勢實現(xiàn)對挖掘機的遙操作,并實現(xiàn)部分自動化。本文中使用的手勢識別算法、數(shù)據(jù)集、通信協(xié)議都需要做出相應的改進。雖然MediaPipe可以準確地識別出手部關鍵點,減小了對數(shù)據(jù)集的需求,但仍應覆蓋較多的人和較復雜的手部識別背景。最好能夠?qū)崿F(xiàn)雙手協(xié)作和動態(tài)的手勢識別,將行走裝置與工作裝置的控制剝離,并對一定時序內(nèi)的動態(tài)手勢進行識別。