韓團軍,張晶,黃朝軍,王桂寶
(陜西理工大學物理與電信工程學院,陜西漢中 723000)
隨著科學技術的進步,人們對機器設備的依賴逐漸增多,可以通過各種指令與機器完成基本的交互[1-3]。從人體結構上看,雙手是人類最熟悉并且常用的部位,可以靈敏地感知外界的信息并且將觸摸到的信息反饋給上一級神經網絡中樞,大腦及時給出精準的控制信號,手臂通過大腦給的控制信號迅速做出反應。但是手臂殘疾或缺少的人無法進行復雜的工作,甚至少數人連最基本的生活都是問題[4]。所以設計一款智能假肢或者能人體行為控制的機械臂顯得尤為重要。
本文作者提出一種基于表面肌電信號的機械手控制系統。系統通過肌電信號傳感器對肌電信號進行采集和軟硬濾波,再通過時頻域結合的方法進行特征提取,最后通過BPNN算法進行訓練,訓練結果通過無線模塊發送指令控制。信號處理系統發出控制命令經過無線傳輸到機械手臂,來控制6舵機自由度的機械手臂,實現6個動作的展示。
基于sEMG信號和BPNN算法的機械臂控制系統可分為兩部分:一部分是Cortex-M4系列的微處理器為主的sEMG信號處理系統,另一部分是Cortex-M3系列的微處理器為主的機械手臂控制系統。整個系統用傳感器采集肌電信號,采集的信號結合時頻域特點進行特征提取,再分類通過BPNN算法進行訓練。整個設計系統設計思路如圖1所示。

圖1 整個系統的設計思路
數據采集條件:測試者需要正坐,手臂懸空,用計算機進行提示,實驗者依據提示信息來完成對應的動作。實驗每一個動作都分為3個部分:起始部分是放松半握手狀態,時間為5 s;執行部分是在模仿計算機給出的動作,保持動作持續時間為5 s;結束部分是恢復到起始狀態,時間保持5 s。每組有6個手勢動作,需要采集20組數據。實驗中總共選取6種手部動作做待采集動作,有握拳、伸掌、手腕左轉、手腕右轉、手掌彎向前、手掌彎向后。這些手部動作引起的肌肉運動比較強烈,使采集到的數據更準確,進而可以使分類更準確。6種動作的手勢如圖2所示。

圖2 6種手勢動作圖
采用貼在皮膚表面的濕電極采集肌電數據,采集到的數據含有較多的雜波,需要進行濾波處理。采用硬件和軟件兼容進行濾波,濾波降噪處理采用小波變換降噪和巴特沃斯濾波器。從經過預處理的數據里面提取一些時域特征值和頻域特征值。提取的數據可作為BPNN算法訓練模型的輸入數據。巴特沃斯低通濾波器的設計函數如式(1)所示:
(1)

巴特沃斯濾波器的特點是通頻帶內的頻率響應曲線最大限度平坦,沒有起伏,而在阻頻帶則逐漸下降為零[5-7]。在振幅的對數對角頻率的Bode圖上,從某一邊界角頻率開始,振幅隨著角頻率的增加而逐漸減少,趨向負無窮大。設計利用MATLAB對采集信號進行仿真濾波處理,原始信號是模擬肌電信號的一個數字信號,通過低通濾波處理,更加平滑。濾波效果如圖3所示。

圖3 原始信號(a)和巴特沃斯低通濾波后的信號(b)
采集到的肌電信號經過預處理后信號比較微弱,所以要對于肌電信號進行特征提取。由于不同動作在時域和頻域識別率大小不一樣,設計中結合這兩種方法進行處理,左轉和握拳動作在時域分析比較明顯同時計算簡單,采用時域提取方法,其他動作在頻域進行特征提取較好。時域提取時,由于sEMG信號處理中,表面肌電信號是一種微弱的非線性時變信號,一般采用時域特征提取法就是對信號進行時域上的統計處理。表面肌電信號可以理解成一種類似高斯分布的隨機信號,將式(2)—(6)處理將所得到的結果作為信號的時域特征[8-12]。
式(2)為平均絕對值(MAV),反映了信號曲線函數偏離的程度。
(2)
式(3)為均方根(RMS),反映了肌肉活動產生的肌電信號能量的強弱。
(3)
式(4)為積分肌電值(IEMG),反映了肌肉運動時的活動強度。
(4)
式(5)為標準偏差(STD),反映了肌電信號數據間的離散程度。
(5)
式(6)為Willison 振幅(WA),反映了肌肉運動時的收縮能力。
(6)
根據上面的公式可以直接對肌電信號進行處理,可以提取到肌電信號對應的時域特征值。
頻域的特征提取是在頻域上進行的,所以需要將采集到的數據經過傅里葉變換變成頻域信號才能進行處理。這是為了彌補時域信號特征值的不足,頻域里面也有隱藏的肌電信息。
平均功率頻率(MPF)表示功率譜平均值的頻率,反映了肌肉活動強度。具體計算公式見式(7):
(7)
中值頻率(MF)表示sEMG功率譜的中值頻率,反映了肌肉在一定時間內的平均功率。
(8)
模型建立。輸入數據為x,輸入層到隱藏層的參數為w、b1,隱藏層到輸出層的參數為v、b2,激活函數為g1、g2。輸入層到隱藏層算法如式(9)所示:
n1=wTx+b1,h=g1(n1)
(9)
隱藏層到輸出層算法如式(10)所示:
(10)
模型函數如式(11)所示:
(11)
損失函數如式(12)所示:
(12)
過程計算。輸出層的誤差項:輸出層的參數v與損失函數E沒有直接的相關關系,而是通過復數的方式關聯,如式(13)所示:
(13)
根據鏈式法則,輸出層的參數v與損失函數E的誤差項見式(14):
(14)
輸出層的誤差項如式(15)所示:
(15)
模型參數優化。隱藏層的誤差項,即計算損失函數關于隱藏單元的偏導函數值和梯度值,見式(16):
(16)
輸出層的誤差項,即計算損失函數關于輸出層的梯度值和偏導函數值見式(17):
(17)
輸出層參數更新見式(18):
(18)
隱藏層參數更新見式(19):
(19)
整個系統建模完成后使用3D打印機打印出每一部分,把打印的分離模塊進行組裝,控制模塊選擇舵機做牽引動力,手臂一共使用了6個舵機,其中一個控制手腕左轉和右轉,其余5個分別獨立控制一個手指頭。控制方式是通過舵機牽引鋼絲繩拉動手指完成動作,舵機的左右轉會控制手指的彎曲和伸直,鏈接部分應用鋼絲打印。組裝的實物如圖4所示。

圖4 實物(a)和內部結構(b)
對系統進行了測試。通過對肌電信號的采集與處理,可以看到在時域下,各類肌電信號幅值差異性較小,通過傅里葉變換將時域信號變成頻域信號,在頻域明顯可以看到每種手勢之間的區別。為了提高識別率,需要將時域信號和頻域信號結合起來。6種手勢肌電信號的時、頻域圖如圖5所示。
根據此次肌電信號特征,為了減少計算復雜度,設計選擇7個輸入節、6個輸出節點的三層神經網絡模型。根據相關文獻、經驗得知,隱藏層節點個數從3個開始為最佳,依次加1,最大到8個節點。訓練識別結果如表1所示。
根據表1的統計結果可知,隱藏層節點的個數6個為最佳,所以這次實驗選擇7個輸入節點、6個隱藏層節點、6個輸出層節點的BP網絡模型。因為時域特征和頻域特征合在一起共有7個特征值,有6種手勢需要分辨。該模型訓練結果如圖6所示:此次神經網絡學習訓練了10 000次,可以明顯看出前期訓練次數較少的時候,效果比較明顯,到了大概8 000次左右,曲線呈水平狀。經修改,最終機器學習次數為8 000次,一方面可以減少訓練時間,另一方面防止出現過擬合。

圖6 BP神經網絡模型訓練結果誤差
按照之前的采集數據操作過程進行模型驗證。圖7所示為6種手勢所對應的機械手動作。6種手勢分別對應的機械手臂的動作如表2所示。

表2 手勢動作對應
實驗中通過手部的動作和機械手的動作進行對比,來判斷識別是否準確。如果機械手的動作和對應手部動作相同,則認為識別成功,反之則識別失敗。一共實驗了600次,每個動作識別100次,表3為每個動作的成功次數統計。

表3 實驗結果
從統計結果可以看到:伸掌和握拳這兩種手勢識別的準確率高達90%多,相對于其他手勢來說識別效果較好,其他手勢的識別率平均也達到了80%。那兩個手勢識別率高的原因應該是選取的測試肌肉區域對這兩種手勢反應比較強烈,其他的手勢就沒有那么大的反應。數據可以證明設計的正確性。
設計了基于sEMG信號和BPNN算法的機械臂控制系統,對肌電信號的采集、識別和機械手臂的控制等工作進行了深入研究。通過對實時控制機械手臂的結果分析,6種手勢平均識別率在80%以上,可以證明設計的正確性。