鄭海鵬,李玉榕
(福州大學 電氣工程與自動化學院,福建 福州 350108)
手勢是人們日常溝通交流的重要方式,人們可以通過幾個簡單的手勢表達出十分復雜的信息,而對于一部分信息通過語言文字去表達則要復雜許多。表面肌電信號包含了生物運動的各種信息并且它還超前于生物的運動行為。這一特性使得表面肌電信號在人機交互、假肢控制、手勢識別等領域得到了廣泛應用。
通過分析手前臂肌肉的表面肌電信號,可以預測人的手勢動作,再將識別出的手勢動作作為計算機系統的輸入,從而實現人與計算機的交互。上海理工大學的劉萬陽等人基于尺側腕伸肌和尺側腕屈肌上的表面肌電信號對受試者的手勢進行識別,并將識別的結果作為虛擬廚房的控制指令輸入虛擬廚房系統中,從而實現對虛擬廚房的控制。
表面肌電信號是生物運動時產生的生物電信號。它僅與生物運動有關,而與外界光和聲音等因素無關,這使得基于表面肌電信號的手勢識別的應用場景十分廣泛。針對提高系統的魯棒性方法,葡萄牙科英不拉大學系統和機器人研究所的Mahmoud等人提出了利用支持向量機閾值法和設置鎖定手勢的方式來防止系統在人運動時的誤識別,從而使得基于表面肌電的手勢識別系統有了更大的應用空間。
表面肌電信號采集十分簡單且無創,使得表面肌電信號的采集實驗十分容易被受試者接受。從肌電信號到手勢識別、再從手勢識別到計算機系統的人機交互方式是一種便捷且實用的人機交互方式?;诖耍疚拈_展了健康人群的表面肌電信號的采集和分析,并對目標動作進行識別,最后通過GUI界面實時顯示系統識別結果。
本文選取的目標動作為握拳、伸掌、伸腕和屈腕四個動作。本文通過由肌電傳感器和Arduino UNO開發板組成的雙通道表面肌電信號采集系統實時采集手前臂的尺側腕屈肌和尺側腕伸肌的表面肌電信號,并在上位機中搭建模式識別系統對采集到的信號進行預處理、活動段提取、特征值提取和目標動作識別等,最后通過GUI界面實時顯示分類識別的結果。在實現在線識別的過程中,本文首先通過了多組離線實驗來確定系統各個環節的方法和參數,然后再根據離線實驗確定的參數搭建在線識別系統。整體的系統框圖如圖1所示。
圖1 系統框圖
如圖2所示,本文所搭建的雙通道表面肌電信號采集系統主要包括DFROBOT Gravity肌電傳感器和Arduino UNO開發板,實驗實物圖如圖3所示。通過在Arduino UNO開發板編寫程序,實現該雙通道表面肌電信號采集系統以475 Hz的采樣頻率采集受試者尺側腕伸肌和尺側腕屈肌上的表面肌電信號,并將采集到的信號通過串口傳輸到上位機。
圖2 表面肌電信號采集系統設計框圖
圖3 實驗實物圖
在采集實驗中本文選擇了4名男性和1名女性共5名健康受試者作為實驗對象,受試者詳細信息見表1所列。實驗前,用酒精擦拭受試者皮膚表面,并待其自然風干。采集過程中,首先要求受試者保持手臂完全放松,直至MATLAB打印“靜息段采集結束,實驗開始”。本文要求受試者依次做握拳、伸掌、屈腕和伸腕四個動作,每個動作重復四次,每次動作保持4 s,每次動作中間休息3 s。四種目標動作如圖4所示。
表1 受試者信息
圖4 四種目標動作
(1)串口助手
本文最終目的是為了實現手勢的在線識別,故要求MATLAB(R2018b)能夠實時讀取下位機通過串口傳輸至上位機的數據。本文利用MATLAB(R2018b)自帶的函數編寫一個串口工具,從而實現MATLAB(R2018b)對下位機傳輸的數據進行實時顯示和保存。
(2)肌電信號預處理
表面肌電信號十分微弱,并且十分容易受到環境噪聲、工頻干擾和個人身體差異的影響,使得表面肌電信號的信噪比較低。為了獲得高信噪比并使在線系統具有良好的實時性,本文采用了工頻陷波器、絕對值整流和2階巴特沃茲低通濾波器的組合去噪方法對采集到的信號進行預處理。
本文所采用的工頻陷波器傳遞函數如下:
其中:=-2cos(2π),=50 Hz,為采樣周期;=0.75。
本文所采用的2階巴特沃茲濾波器的傳遞函數如下:
其中:=[1-1.984 0.984];=10×[3.322 6.644 3.322]。
(3)去除基線
由于DFROBOT Gravity肌電傳感器和Arduino UNO開發板組成的信號采集系統采集到的信號中存在著較大的基線,并且MATLAB(R2018b)串口讀取函數與Arduino的串口通信函數存在版本不兼容問題,因此本文采用了兩段去基線的方法。首先在下位機中降低基線,然后在上位機中去除基線。而在下位機中降低基線的方法與在上位機中去除基線的思路相同,即通過采集一段靜息信號,并依據該段靜息信號求出一個預估基線,最后再用靜息段后的信號減去該預估基線。本文主要通過去除基線、去除工頻干擾、絕對值整流和巴特沃茲低通濾波等4個流程,對采集到的表面肌電信號進行預處理。
(4)滑動窗口設置
由于表面肌電信號采集實驗是一個連續的過程,為了能夠劃分出活動段和特征提取段,需要將采集到的信號劃分為一個個的小窗口。依據表面肌電信號超前于人行為動作約300 ms的特性、在線手勢識別系統的實時性要求和表面肌電信號前后的關聯性,本文選擇了277 ms為一個窗口,并且每次滑動139 ms。因為本文所采用的雙通道表面肌電信號采樣系統的采樣頻率為475 Hz,所以每個窗口包含132個點,每次滑動66個點,如圖5所示。
圖5 滑動重疊窗
(5)活動段檢測
人的表面肌電信號可分為活動信號和靜息信號兩類?;顒有盘柺侨梭w做出動作時肌肉收縮產生的信號變化,該部分的信號具有能量大和變化快的特點;而靜息信號與活動信號相反,其能量小且變化緩慢。依據該特點,本文設置兩個能量閾值并計算每個窗口信號的絕對平均值;再將計算的每個窗口信號的絕對平均值與預先設置的開始和結束閾值進行比較。當該絕對平均值大于開始閾值時,認為信號進入活動段;而當絕對平均值小于結束閾值時,認為活動段結束。
(6)特征值提取
表面肌電信號的特征值可分為時域、頻域和時頻域三類,本文依據在線系統的實時性要求,選擇了計算量較小的絕對平均值、均方根和方差等三個時域特征值。以上三種特征值計算方法如下。
絕對平均值(MAV):反映了表面肌電信號在肌肉運動過程中的能量平均變化。
均方根(RMS):反映了肌電信號在運動過程中的能量有效值的變化。
方差(VAR):反映了肌電信號在運動過程中的能量變化速度。
本文在CPU主頻為2.5 GHz的上位機和MATLAB(R2018b)軟件平臺上通過兩組對照實驗對比了支持向量機、隨機森林和KNN三種分類算法。
實驗一:將受試者的數據分為訓練集和測試集,再用訓練集分別訓練三種分類器,最后將測試集送進訓練集屬于同一受試者的分類器進行預測。實驗結果見表2所列。
表2 實驗一:識別準確率(單位:%)
實驗二:用受試者1的數據訓練三種分類器模型,再將剩余受試者的數據送進訓練好的三種分類器進行預測。實驗結果見表3所列。
表3 實驗二:識別準確率(單位:%)
從表2可以發現,三種分類器的平均識別準確率都達到了90%以上,其中KNN和支持向量機的最高識別率達到了97%。從分類器計算時間來看,KNN、隨機森林和支持向量機三種分類器的計算時間分別為0.041 s、0.135 s和0.002 s。支持向量機分類器計算時間要遠小于其他兩種分類算法。從表3可以看到,相較于實驗一,實驗二中三種分類器模型的識別率都大大降低了,故可推測個人的身體差異對于分類器的識別準確率有較大的影響。
根據三種分類算法的識別準確率、算法的計算量和分類器模型的普適性,最終選擇了支持向量機作為本文的分類算法。
本文利用MATLAB(R2018b)的GUIE編輯器搭建了兩個GUI界面,分別用于實時顯示采集到的尺側腕屈肌和尺側腕伸肌的表面肌電信號和實時顯示分類識別結果,如圖6所示。
圖6 人機交互界面
本文通過GUI界面中開始按鈕的回調函數將前文介紹的串口助手、數據預處理、活動段的檢測、特征提取和分類識別整合到一起,即首先通過串口助手接收下位機傳輸來的數據,獲得的數據經過信號預處理流程,然后選取最新窗口的數據進行特征提取和分類識別,最后根據分類器識別結果將對應動作的圖片更新至GUI界面中,從而實現實時采集表面肌電信號和實時進行動作識別。
采用Arduino UNO和肌電傳感器組成的雙通道表面肌電信號采集系統采集受試者1的尺側腕屈肌和尺側腕伸肌表面肌電信號,并通過MATLAB(R2018b)觀測采集到的表面肌電信號,如圖7和圖8所示。
圖7 尺側腕屈肌上的表面肌電信號
圖8 尺側腕伸肌上的表面肌電信號
本文對串口助手接收到的受試者1的尺側腕屈肌和尺側腕伸肌的表面肌電信號分別進行去除基線、去除工頻干擾、絕對值整流和巴特沃茲低通濾波等四個步驟,其輸出結果如圖9和圖10所示。
圖9 尺側腕屈肌肌電信號的信號處理后波形
圖10 尺側腕伸肌肌電信號的信號處理后波形
將利用受試者1的數據訓練好的支持向量機分類器模型導入在線系統,再由受試者1進行在線手勢識別實驗。以握拳手勢動作為例,在線顯示結果如圖11所示。
圖11 受試者1在線實驗結果
本文經過多組離線實驗測試,最終選出了最佳的參數和方法,并且本文提出的四種手勢的識別正確率最高達到97%。在上位機CPU主頻為2.5 GHz以及軟件平臺采用MATLAB(R2018b)的條件下進行在線測試。當受試者做出動作,上位機GUI界面可以刷新肌電信號波形,并實時顯示識別出的動作。