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