楊建華,李 正,趙 妤,王少文
(西安工業(yè)大學(xué) 電子信息工程學(xué)院,西安 710021)
表面肌電信號(surface electromyography signal,SEMG)是通過肌肉收縮而產(chǎn)生的一種生物電信號。SEMG 是一種非平穩(wěn)的微電信號[1-2],其幅值在0~5 mV 之間,信號頻率在20 Hz~500 Hz 之間[3],大部分信號在50 Hz~150 Hz 之間[4]。由于該信號微弱、易受到外界環(huán)境以及工頻的干擾[5-6]、且具有很強的隨機性等特點使得對其進行實時采集、處理和識別困難較大。同時通常針對表面肌電信號的研究一般通過專用硬件采集設(shè)備采集信號,然后將數(shù)據(jù)上傳到PC 機上進行分析運算處理,停留在實驗室研究范圍,難以滿足便攜性和實用性要求?;谶@樣的背景,本文設(shè)計了一款基于STM32F103 處理器的嵌入式肌電信號手勢識別系統(tǒng)。處理器中增加了FreeRTOS 操作系統(tǒng)實現(xiàn)多任務(wù)運行,可以根據(jù)任務(wù)優(yōu)先級進行數(shù)據(jù)采集、數(shù)據(jù)處理、數(shù)據(jù)傳輸和屏幕顯示等操作,提高了系統(tǒng)的實時性。
本系統(tǒng)的整體結(jié)構(gòu)框架如圖1所示,肌電傳感器采集人體胳膊的肌電信號,前端調(diào)理電路,經(jīng)一級放大、高通低通濾波、50 Hz 陷波、二級放大和全波整流后獲得適合微處理器采集的信號,然后經(jīng)過AD 轉(zhuǎn)化器轉(zhuǎn)化為數(shù)字信號,輸入到STM32 處理器中,在微處理器部分完成特征提取、數(shù)據(jù)訓(xùn)練和動作識別并輸出顯示。與此同時通過串口將不同的手勢數(shù)據(jù)發(fā)送到有LabVIEW 編寫的上位機軟件中,在LabVIEW 軟件平臺進行相關(guān)手勢波形的顯示。整個系統(tǒng)采用多線程處理,大幅度提高了系統(tǒng)的處理效率,各個線程之間通過消息隊列進行相互通信。
圖1 系統(tǒng)結(jié)構(gòu)框圖Fig.1 System structure block diagram
由于肌電表面信號幅值非常微弱,一般在0~5 mV之間,外界環(huán)境的噪聲對其干擾特別大,所以前端調(diào)理電路特別重要。本次設(shè)計的前端調(diào)理電路如圖2和圖3所示,采用AD8236 儀表放大器為前級放大,它有著高輸入阻抗和高共模抑制比(CMRR):110 dB(G=100),輸入偏置電流1 pA,輸入失調(diào)電流0.5 pA,軌到軌輸出。
圖2 前級放大調(diào)理電路Fig.2 Front stage amplifier conditioning circuit
AD8236 芯片的輸出電壓VOUT為
由公式(2)可以得到增益為
由公式(3)可知通過改變RG可以實現(xiàn)前端放大電路的倍數(shù)調(diào)整。
肌電信號頻率集中在20 Hz~500 Hz 之間,所以在設(shè)計濾波電路的時候需要將信號頻率保持在這個區(qū)間,其截止頻率的計算公式如下:
在圖2和圖3中,C6,R7和運算放大器構(gòu)成了有源高通濾波器和有源低通濾波器。取C6=1 μF,R7=8.2 kΩ;R23=330 Ω,C7=1 μF 由式(4)可以得到高通濾波的截至頻率為19.41 Hz;低通濾波的截至頻率為482.53 Hz。由于該肌電頻率段包含了50 Hz頻率,而50 Hz 工頻對肌電表面采集有很大的影響,在硬件采集電路[7]設(shè)計中將噪聲做到最大化的抑制[8-9],所以設(shè)計了50 Hz 陷波電路,在圖2中由U1B,R1,R2,R3,R4,R5,C1,C2,C3組成了陷波電路。
圖3 后級放大調(diào)理電路Fig.3 Post amplifier conditioning circuit
前級放大的信號是差分輸入,其信號會在0 mV上下波動,要實現(xiàn)A/D 轉(zhuǎn)換所以需要將信號整體抬升到0 mV 以上,調(diào)理電路采用了全波精密整流電路,將0 mV 以下的信號反轉(zhuǎn)到0 mV 以上[10]。該前端調(diào)理電路采用±5 V 雙電源供電,+5 V 轉(zhuǎn)化為-5 V使用TP7660H 電荷泵電壓反轉(zhuǎn)器,電壓轉(zhuǎn)換精度為99.9%,電源轉(zhuǎn)換效率為98%。實現(xiàn)輸出-5 V 電壓,只需在該芯片的Pin8 引腳VIN 接入+5 V 電壓即可。
本系統(tǒng)采用STM32F103 單片機為處理器,它的外設(shè)資源豐富,包含了3 個通道16 位定時器、2 個12 位的ADC,其中ADC1 具有DMA 通道,通過DMA 可以實現(xiàn)多個通道同時高速采集并快速存儲。將STM32F103 的采樣頻率設(shè)定為1 kHz,能夠很好的滿足實際需求。每次A/D 轉(zhuǎn)換結(jié)束后,使用DMA方式將轉(zhuǎn)換后的數(shù)據(jù)依次存入到設(shè)定好的緩存區(qū),并進行實時處理,采用DMA 可以緩解CPU 資源。
STM32 處理器將接收到的肌電信號通過串口發(fā)送到由LabVIEW 編寫的上位機上進行顯示[11],在顯示控件上將不同的手勢波形顯示出來,如圖4和圖5所示。
圖4 一級放大肌電信號波形Fig.4 Waveform of primary EMG signal
圖5 二級放大及整流后的波形Fig.5 Waveform after secondary amplification and rectification
對于實時處理采集的肌電信號,活動段檢測是很重要的,只有準確的獲取到手勢動作的起始與終止數(shù)據(jù)才能為后面的特征提取和分類識別打下良好的基礎(chǔ)。本文采用移動平均法與閾值相比較的方法來確定活動段的信號數(shù)據(jù)[12],由于硬件電路中將信號整流了,所以在計算時不需要加絕對值。
式中:y(i)是平均值;N 為第i 個數(shù)據(jù)點右側(cè)位置的數(shù)據(jù)點個數(shù),一共N+1 個數(shù)據(jù)點。在系統(tǒng)訓(xùn)練開始時,讓手臂靜止5 s 左右,獲取N 個數(shù)據(jù)點,根據(jù)公式(5)求出靜止時的平均值記為δ。
式中:θ 為閾值;α 為系數(shù),取值為3。
當(dāng)y(i)>θ,為活動段起始值,開始保存數(shù)據(jù);當(dāng)y(i)<θ,為活動段終止值,停止保存數(shù)據(jù)。
數(shù)據(jù)是實時發(fā)送的,所以在接收數(shù)據(jù)方面也很重要,本文通過軟件程序編寫循環(huán)接收隊列可以很好的進行數(shù)據(jù)緩存和后續(xù)數(shù)據(jù)的讀取,也防止了數(shù)據(jù)的遺漏問題。
嵌入式系統(tǒng)的資源非常有限,所以將采集到的肌電信號全部輸入到模式識別分類器中,很難進行存儲與運算,同時也不能很好的進行分類。所以肌電信號的特征提取對后面進行分類識別就特別重要。本系統(tǒng)選擇時域特征提取的方法[13],采用計算標準差作為不同手勢的特征。
如何能夠準確的識別出不同的手勢,肌電信號識別分類是核心,本系統(tǒng)采用了貝葉斯分類器,該分類器訓(xùn)練簡單、識別率高,具有很廣泛的應(yīng)用。貝葉斯分類算法是一種概率分類算法[14],其原理就是根據(jù)先驗概率計算出后驗概率,根據(jù)后驗概率的大小來確定具體類別,多類別的貝葉斯公式為
式中:P(ai│b)為后驗概率;P(ai)為先驗概率;P(b│ai)為條件概率密度函數(shù);為非條件概率密度函數(shù)。根據(jù)貝葉斯決策理論如果P(ai│b)的值最大,則被測樣本分類為ai。在同一模式識別中對于不同類的貝葉斯公式中的全概率是相同的,在分類決策中不起作用,所以可以定義判別函數(shù)為
多維正態(tài)分布是樣本在更高維上的正態(tài)分布,其中一個協(xié)方差矩陣代替了方差,反映了各個維度之間存在的關(guān)聯(lián),先驗概率是與特征向量無關(guān)的常量,設(shè)條件概率密度函數(shù)P(b│ai)服從多維正態(tài)分布,則判別函數(shù)可以表示為
根據(jù)訓(xùn)練樣本b 可以得到μ,Σ 如下:
對于訓(xùn)練樣本的動作類別一般都是相等的,故而先驗概率P(ai)對于不同的動作也相同,考慮到嵌入式系統(tǒng)的運算能力,忽略掉相同的常數(shù)項,只計算如下:
將要測試的樣本bj代入,得到后驗概率P(ai│bj),根據(jù)后驗概率值最大[15]的原則,ai即是當(dāng)前判別出來的分類結(jié)果。
嵌入式軟件部分增加了FreeRTOS 操作系統(tǒng)[16],這樣能夠很好的實現(xiàn)多任務(wù)處理。采用FreeRTOS對各個任務(wù)之間進行調(diào)度和時間管理,使得整個系統(tǒng)的開發(fā)更加趨于模塊化,便于系統(tǒng)的維護和穩(wěn)定運行。系統(tǒng)主要包括數(shù)據(jù)采集線程、數(shù)據(jù)處理線程及串口屏幕顯示線程。數(shù)據(jù)采集線程通過DMA 的方式直接讀取ADC 轉(zhuǎn)換的結(jié)果,最大程度的節(jié)約了CPU 資源,將讀取到的數(shù)據(jù)通過消息隊列發(fā)送給數(shù)據(jù)處理線程進行相關(guān)的識別后,將結(jié)果在串口屏上顯示。
3.3.1 任務(wù)通信調(diào)度
系統(tǒng)采用USART HMI 串口屏來實現(xiàn)人機交互,通過屏幕設(shè)計觸摸按鍵進行具體功能操作。系統(tǒng)中設(shè)計了數(shù)據(jù)采集任務(wù)、數(shù)據(jù)處理任務(wù)、屏幕顯示任務(wù),任務(wù)之間的優(yōu)先級由高到低運行,優(yōu)先級相同時會合理的分配資源,各個任務(wù)之間的調(diào)度如圖6所示。
對于沒有增加操作系統(tǒng)的處理,CPU 不能被搶占,程序只能從上而下運行,即使是優(yōu)先級高的任務(wù)也要等到優(yōu)先級低的任務(wù)運行完成才能進行,這樣對信號的處理、用戶體驗以及系統(tǒng)的穩(wěn)定運行都有一定的弊端。在STM32 處理器中增加了操作系統(tǒng)后進行數(shù)據(jù)的采集與處理有著更強的實時性。將屏幕顯示任務(wù)設(shè)定為最低優(yōu)先級,當(dāng)按下屏幕上的按鍵后,通過消息隊列將按鍵的結(jié)果發(fā)送到較高優(yōu)先級的數(shù)據(jù)處理任務(wù)中,根據(jù)不同的按鍵結(jié)果進行訓(xùn)練或者識別,當(dāng)再次按下屏幕上的返回按鍵時,打斷高優(yōu)先級進入到低優(yōu)先級的主界面。
3.3.2 系統(tǒng)程序流程
首先按下訓(xùn)練按鍵,獲取各個通道的數(shù)據(jù)并且提取3 個特征,相同的動作重復(fù)5~10 次。訓(xùn)練結(jié)束后根據(jù)3.2 節(jié)建立的貝葉斯分類器模型,按下識別按鍵,進行手勢識別,系統(tǒng)軟件設(shè)計流程如圖7所示。
圖7 軟件流程Fig.7 Software flow chart
搭建硬件系統(tǒng),將肌電傳感器粘貼到手臂上,首先按下KEY1 鍵進入訓(xùn)練模式,對握拳、伸展手、OK這3 個動作分別執(zhí)行30 次用于訓(xùn)練,并保存訓(xùn)練后的參數(shù)。按KEY3 鍵返回系統(tǒng)主界面,然后按下KEY2 鍵進入識別模式,執(zhí)行訓(xùn)練時所做的3 種不同的手勢動作,會在界面上顯示識別的結(jié)果,測試的準確率達到了85%以上。從而驗證了該系統(tǒng)的有效性與可靠性。不同手勢的識別精度如表1所示。
表1 不同手勢的識別精度Tab.1 Recognition accuracy of different gestures
通過多次反復(fù)測試,最終得到了如表1所示的實驗結(jié)果,其中握拳手勢的識別率最高,OK 手勢的識別率最低,由于握拳動作幅度較大,產(chǎn)生的肌電信號較強,特征明顯故而識別率高,而OK 動作幅度較小,產(chǎn)生的肌電信號較弱,使得識別率較低??梢酝ㄟ^增加采集肌電信號的通道個數(shù)來更多的獲取不同手勢的數(shù)據(jù),這樣可以進一步提升手勢識別率。
本系統(tǒng)設(shè)計的前端調(diào)理硬件電路效率高、成本低、功耗低、尺寸小。能夠快速、穩(wěn)定的對肌電信號進行采集,有效抑制噪聲信號。軟件方面增加了實時操作系統(tǒng),進行了多任務(wù)處理設(shè)計,模塊之間相互協(xié)調(diào),在保證系統(tǒng)實時性的同時,系統(tǒng)的穩(wěn)定性得到了很大的提升,也為后續(xù)代碼維護,程序升級等方面提供了便利。