張文艷,曹 樂,闞 秀,汪新坤,楊 誕
(上海工程技術(shù)大學(xué) 電子電氣工程學(xué)院,上海 201620)
肌電控制假肢手臂是利用表面肌電信號(sEMG)作為控制信號的動力式假肢,是一種生物電信號控制的人機(jī)協(xié)同系統(tǒng)。肌電控制假肢手臂的原理為:將上肢殘疾者上肢殘端肌肉的表面肌電信號轉(zhuǎn)化為假肢動作的控制源信號,進(jìn)而用假肢手臂充當(dāng)失去的手臂動作。目前對于肌電控制假肢手臂的研究主要集中在不同肢體動作的模式分類。對肢體的運動狀態(tài),如:用力情況、運動速度、關(guān)節(jié)角度和關(guān)節(jié)轉(zhuǎn)動幅度的研究較少,但是在仿生假肢手臂的實際應(yīng)用中,僅靠模式分類的結(jié)果無法實現(xiàn)假肢手臂的關(guān)節(jié)像人的上肢一樣靈活。
隨著智能機(jī)器人技術(shù)的不斷發(fā)展,肌電信號控制假肢手的關(guān)鍵問題變?yōu)槭褂帽砻婕‰娦盘枌崿F(xiàn)連續(xù)運動的精確預(yù)測,實現(xiàn)假肢手臂像人的手臂一樣靈活動作。針對提高關(guān)節(jié)靈活性,深度學(xué)習(xí)和機(jī)器學(xué)習(xí)的方法已經(jīng)應(yīng)用于關(guān)節(jié)角度預(yù)測。Clancy使用非線性動力學(xué)模型建立肌電信號和關(guān)節(jié)力矩的關(guān)系,相比傳統(tǒng)關(guān)節(jié)力矩估計有了實質(zhì)性的改善;Parasuraman使用遺傳算法(GA)估計關(guān)節(jié)力矩;Mobasser和Eklund將快速正交搜索(FOS)應(yīng)用于關(guān)節(jié)角度估計,其反映了sEMG和關(guān)節(jié)角度之間的線性關(guān)系;Ding和Han使用神經(jīng)網(wǎng)絡(luò)建立sEMG和關(guān)節(jié)運動量之間的關(guān)系。
目前的研究集中于多關(guān)節(jié)估計和閉環(huán)反饋,對關(guān)節(jié)預(yù)測范圍的研究少之又少。在人機(jī)交互的過程中,假肢手臂不可避免的要做關(guān)節(jié)運動范圍較大的動作,所以大范圍關(guān)節(jié)角度的預(yù)測準(zhǔn)確性對于假肢手臂精確控制至關(guān)重要。但角度范圍增大不可避免的會對角度擬合精度產(chǎn)生較大影響,如何對大范圍關(guān)節(jié)角度進(jìn)行精確預(yù)測是目前研究的熱點和難點。
基于上述問題,本文提出了連續(xù)關(guān)節(jié)角度分層方案來對大范圍關(guān)節(jié)角度進(jìn)行預(yù)測。第一層采用BPNN算法構(gòu)建分類器,將大范圍關(guān)節(jié)角度劃分為3個等級的小范圍關(guān)節(jié)信號;第二層使用SVR模型,使用PSO算法對其中高斯核函數(shù)和松弛變量自動尋參,對小范圍關(guān)節(jié)角度進(jìn)行精確預(yù)測。此方案實現(xiàn)了對大范圍關(guān)節(jié)角度的精確預(yù)測。
針對上肢關(guān)節(jié)角度預(yù)測準(zhǔn)確率不高的問題,本文提出基于肌肉激活度的分層預(yù)測方案,如圖1所示。首先,采集尺側(cè)腕屈肌、橈側(cè)腕屈肌、橈側(cè)長腕伸肌和指伸肌的表面肌電信號,并將采集到的表面肌電信號進(jìn)行預(yù)處理;其次,對處理過的表面肌電信號計算肌肉激活度,使用BPNN分層算法將大范圍角度劃分為3個小范圍角度;最后,使用3個PSOSVR模型對關(guān)節(jié)角度進(jìn)行準(zhǔn)確預(yù)測。
圖1 基于肌肉激活度的分層預(yù)測方案Fig.1 Hierarchical prediction scheme based on muscle activation
該方案適用于大范圍關(guān)節(jié)角度動態(tài)預(yù)測,結(jié)合深度學(xué)習(xí)和機(jī)器學(xué)習(xí)算法,其復(fù)雜性低、處理快速、參數(shù)少且提取特征值較少,將粒子群算法用于模型參數(shù)尋優(yōu),避免了人工調(diào)參耗時長、不準(zhǔn)確的缺點。
本文使用小波變換的方法進(jìn)行表面肌電信號的降噪處理。小波變換對信號的時頻域特征同時進(jìn)行局部分析,其特點為分辨率分析。小波變換法對肌電信號進(jìn)行降噪處理的原理為:通過丟棄高斯白噪聲(WGN)()來抑制信號()中的噪聲部分,并恢復(fù)去噪后的信號(),基本模型表示為公式(1)。
本文選用db4小波進(jìn)行5層分解,如圖2所示。首先,通過執(zhí)行小波變換分解原始信號;其次,對得到的細(xì)節(jié)系數(shù)應(yīng)用適合的閾值,并將所有系數(shù)歸0到其相關(guān)閾值之下;最后,基于修改后的細(xì)節(jié)系數(shù)重構(gòu)去噪后的表面肌電信號。
圖2 基于小波變換的肌電信號去噪Fig.2 Denoising of EMG signal based on Wavelet Transform
對去噪后的表面肌電信號,首先使用截止頻率為30 Hz的四階巴斯特沃(butter)高通濾波器去除運動偽跡;其次,對去除運動偽跡的信號進(jìn)行全波整流,將信號取絕對值;最后,將全波整流后的信號通過四階巴斯特沃低通濾波器,截止頻率為5 Hz,用于模擬肌肉低通濾波器特性。表面肌電信號預(yù)處理步驟如圖3所示。
圖3 預(yù)處理步驟Fig.3 Pretreatment steps
將采集到的手部力信號的最大值視為100%肌肉激活度的信號,最大值定義為MVC,將處理過的肌電信號除以MVC,得到歸一化后的信號()。
利用信號()建立神經(jīng)激活模型,求解神經(jīng)激活度(),信號()的長度為,的取值為1∶,、為遞歸系數(shù),為增益系數(shù),為電極延遲時間,該模型如公式(2)~公式(5):
這是一個遞歸模型,單次的神經(jīng)激活度b()和前兩次的神經(jīng)激活度b(1)、 b(2)有關(guān),05,05。
建立非線性模型,根據(jù)神經(jīng)激活度()求解肌肉激活度(),肌肉激活模型如公式(6):
其中,是非線性形狀系數(shù),代表肌肉激活強(qiáng)度()和神經(jīng)激活強(qiáng)度()的非線性程度,的取值為-1.5,()為計算出的肌肉激活強(qiáng)度。左手和右手尺側(cè)腕屈肌、橈側(cè)腕屈肌、橈側(cè)長腕伸肌和指伸肌的肌肉激活度如圖4所示。
圖4 肌肉激活度Fig.4 Muscle activation
為了能夠?qū)Υ蠓秶P(guān)節(jié)角度做到精準(zhǔn)預(yù)測,使用BPNN算法將大范圍關(guān)節(jié)角度劃分為小范圍關(guān)節(jié)角度。BPNN算法將大范圍關(guān)節(jié)角度進(jìn)行三分類,分別為0°~30°,31°~60°,61°~90°,建立3個SVR模型對小范圍關(guān)節(jié)角度預(yù)測。
BPNN是一種信號前向傳播,誤差反向傳播的多層前饋神經(jīng)網(wǎng)絡(luò)。在信號前向傳播中,施加的輸入信號從輸入層X向前傳播經(jīng)過隱含層處理,直到輸出層Y輸出信號。每一層神經(jīng)元的狀態(tài)只會影響其連接的下一層神經(jīng)元狀態(tài)。如果輸出層Y沒有得到期望輸出,就會進(jìn)入反向傳播過程,根據(jù)誤差信號調(diào)整網(wǎng)絡(luò)各層的權(quán)值和閾值,使BPNN的實際輸出不斷接近期望輸出,如圖5所示。
圖5 BPNN結(jié)構(gòu)圖Fig.5 BPNN structure diagram
BPNN在預(yù)測輸出之前要進(jìn)行網(wǎng)絡(luò)訓(xùn)練,會產(chǎn)生記憶和預(yù)測能力。隱含層輸出通過公式(7)計算。
其中,為隱含層閾值;為隱含層節(jié)點數(shù);為輸入節(jié)點數(shù);ω為輸入層和隱含層之間的連接權(quán)值;為輸入變量;為隱含層激勵函數(shù)。本文所選的激勵函數(shù)如公式(8):
BPNN的預(yù)測輸出計算公式(9):
其中,為輸出節(jié)點數(shù);為輸出層閾值;ω為隱含層和輸出層的連接權(quán)值;為隱含層輸出。網(wǎng)絡(luò)預(yù)測誤差的計算如公式(10):
其中,Y為期望輸出;N為網(wǎng)絡(luò)預(yù)測輸出;error為網(wǎng)絡(luò)預(yù)測誤差。
網(wǎng)絡(luò)連接權(quán)值ω和ω更新的計算為公式(11)和公式(12):
其中,為輸入層節(jié)點數(shù),為學(xué)習(xí)速率。
根據(jù)預(yù)測誤差error更新隱含層節(jié)點閾值和輸出層節(jié)點閾值的計算公式為公式(13)和公式(14):
BPNN網(wǎng)絡(luò)的訓(xùn)練過程,見表1。
表1 BPNN訓(xùn)練過程Tab.1 BPNN training process
BPNN搭建根據(jù)系統(tǒng)輸入輸出數(shù)據(jù)的特點確定其結(jié)構(gòu),由于以肌肉激活度為輸入信號的維數(shù)為8,待分類的角度信號共有3類,所以搭建的BP神經(jīng)網(wǎng)絡(luò)輸入層為8個節(jié)點,輸出層為3個節(jié)點。BPNN的隱含層節(jié)點數(shù)會影響網(wǎng)絡(luò)的分類準(zhǔn)確率,隱含層節(jié)點數(shù)太少會造成網(wǎng)絡(luò)學(xué)習(xí)不充分,影響分類精度;隱含層節(jié)點數(shù)太多會增加訓(xùn)練時間造成過擬合。隱含層節(jié)點數(shù)的選擇如公式(15):
其中,為隱含層節(jié)點數(shù);為輸入層節(jié)點數(shù);為輸出層節(jié)點數(shù);為0~10之間的常數(shù)。
本文使用SVR算法對小范圍關(guān)節(jié)角度進(jìn)行精確預(yù)測。為進(jìn)行小范圍預(yù)測,訓(xùn)練3個SVR模型即0°~30°、31°~60°和61°~90°,且訓(xùn)練數(shù)據(jù)對應(yīng)的關(guān)節(jié)角度范圍與BPNN相同。SVR模型中有需要手動確定參數(shù),但是人工調(diào)參需要大量的先驗經(jīng)驗,容易造成訓(xùn)練模型結(jié)果不佳。為了解決人工調(diào)參的缺點,本文引入PSO算法自動尋優(yōu)SVR模型參數(shù)。
3.2.1 SVR模型原理及訓(xùn)練
SVR是一種擬合算法,通過非線性變換將樣本映射到高維線性特征空間,并利用原始空間的核函數(shù)代替高維空間的點積運算,最終構(gòu)造變量的擬合函數(shù)。假設(shè)數(shù)據(jù)樣本空間為{(,),…,(x,y)}?,其中,為輸入;為輸出;為訓(xùn)練樣本數(shù);為訓(xùn)練樣本空間。
SVR的研究目的是用一個函數(shù)來表示和之間的關(guān)系,即對于給定的可以通過函數(shù)來預(yù)測相應(yīng)的值。本文構(gòu)造的擬合函數(shù)如公式(16):
其中,為法向量;為截距;()為的非線性映射,當(dāng)和之間的關(guān)系為非線性時,()可以將映射到一個新的空間。在公式(13)中確定回歸系數(shù)和,這個問題可以轉(zhuǎn)化為一個凸優(yōu)化問題,計算如公式(17):
其中,、為松弛因子;()為非線性映射函數(shù);為懲罰系數(shù);為函數(shù)的擬合精度。
引入拉格朗日乘子α,α,η和η,相應(yīng)的拉格朗日方程為公式(18):
根據(jù)對偶原理將原問題轉(zhuǎn)化為公式(19):
約束條件:
其中,(x,x)(x)φ(x),本文中使用的(·,·)為核函數(shù)。
SVR的最終預(yù)測模型為公式(20):
SVR中懲罰系數(shù)和核函數(shù)的參數(shù)會對最終的擬合效果產(chǎn)生較大的影響,其原因為:懲罰系數(shù)用來全衡損失和分類間隔的權(quán)重,如果選擇錯誤會造成硬間隔或是過擬合的情況;參數(shù)影響高斯函數(shù)的幅寬,進(jìn)而影響數(shù)據(jù)在高維空間的映射。懲罰系數(shù)和核函數(shù)參數(shù)的選取非常重要,但是對于如何選取這兩個參數(shù)卻沒有明確的理論依據(jù)。
3.2.2 PSO模型原理及訓(xùn)練
基于SVR參數(shù)選擇不確定性的問題,本文提出使用PSO算法選取參數(shù)來改進(jìn)SVR模型。PSO是一種基于種群的隨機(jī)搜索算法,用于解決無約束優(yōu)化問題。在粒子生成過程中,粒子根據(jù)自身的經(jīng)驗以及相鄰粒子的經(jīng)驗改變其位置。PSO系統(tǒng)將局部搜索方法與全局搜索策略相結(jié)合,以達(dá)到開發(fā)與探索的平衡。粒子的新位置和速度將用公式(21)和(22)更新。
其中,和是加速度系數(shù),分別調(diào)整最大步徑,以達(dá)到全局最佳粒子和單個最佳粒子;是隨機(jī)數(shù)均勻分布在[0,1];是慣性重量,保持全局和局部搜索能力的平衡;表示粒子數(shù);表示當(dāng)前迭代的次數(shù);v指定粒子速度;x指定位置;pbest是粒子局部最佳位置;gbest是所有粒子的全局最佳位置。
使用表2中的參數(shù)構(gòu)建PSO優(yōu)化算法,將懲罰系數(shù)和核函數(shù)參數(shù)作為PSO的兩類鳥群,每次迭代后重新更新鳥群位置,直到達(dá)到迭代次數(shù)時停止。使用PSO優(yōu)化SVR的步驟見表3。
表2 PSO算法參數(shù)說明Tab.2 PSO algorithm parameter description
表3 PSO優(yōu)化SVR步驟Tab.3 PSO optimization SVR steps
本實驗選用5名男性受試者,年齡在22~26歲之間,且無肌肉或神經(jīng)系統(tǒng)疾病。為保證實驗的正確性,5名受試者在正式采集數(shù)據(jù)前進(jìn)行2 h的動作訓(xùn)練,以保證受試者的動作標(biāo)準(zhǔn),并確認(rèn)MYO臂環(huán)及慣性傳導(dǎo)單元(IMU)佩戴于手臂正確位置。采集實驗前,使用酒精擦拭受試者手臂對應(yīng)肌肉,受試者身體放松坐于實驗臺前,手肘置于實驗臺表面。針對手臂關(guān)節(jié)角度實驗,本實驗選取了4塊肌肉進(jìn)行分析,所選肌肉分別為尺側(cè)腕屈肌、橈側(cè)腕屈肌、橈側(cè)長腕伸肌和指伸肌。圖6為受試者執(zhí)行關(guān)節(jié)角度測量的動作,每名受試者循環(huán)執(zhí)行角度測試動作20次(包括10次0°~90°和10次90°~0°),持續(xù)時間為1 min。為避免持續(xù)動作造成肌肉疲勞,受試者執(zhí)行一次動作后休息4 min,休息結(jié)束后開始下一次動作。圖7為受試者關(guān)節(jié)角度測量系統(tǒng),本系統(tǒng)包括采集表面肌電信號的MYO臂環(huán)、采集上肢關(guān)節(jié)角度信息的IMU、上位機(jī)、3D打印的圓柱體、FSR傳感器、采集卡。
圖6 角度采集動作Fig.6 Angle collection action
圖7 角度采集系統(tǒng)Fig.7 Angle collection system
在第一層BPNN關(guān)節(jié)角度分級算法中,使用肌肉激活度作為特征矩陣輸入進(jìn)BP神經(jīng)網(wǎng)絡(luò),在3個角度級別(0°~30°,31°~60°,61°~90°)中選取25%的數(shù)據(jù)作為訓(xùn)練集,另外75%的數(shù)據(jù)作為測試集,查看測試集的分類成功率,并進(jìn)行BPNN關(guān)節(jié)角度分級算法的性能測試。為比較肌肉激活度與傳統(tǒng)的肌電特征值之間的差異,選用肌電信號處理中廣泛使用的時域信號均方根值()做對比實驗,以肌肉激活度為特征和以為特征的BPNN算法分類對比圖如圖8所示。肌肉激活度和在BPNN分層算法中的性能表現(xiàn)見表4。
圖8 BPNN算法分類對比圖Fig.8 Classification comparison diagram of BPNN algorithm
表4 肌肉激活度和RMS在BPNN分層算法中的性能表現(xiàn)Tab.4 Performance of muscle activation and RMS in BPNN hierarchical algorithm
在第二層使用SVR模型對小范圍關(guān)節(jié)角度進(jìn)行準(zhǔn)確的擬合,并使用PSO算法對SVR模型的懲罰參數(shù)和核函數(shù)參數(shù)進(jìn)行自動尋,以此來完成對大范圍關(guān)節(jié)角度的預(yù)測。使用3個PSO-SVR模型對小范圍關(guān)節(jié)角度進(jìn)行精確預(yù)測,直接對大范圍關(guān)節(jié)預(yù)測的結(jié)果和小范圍關(guān)節(jié)角度預(yù)測結(jié)果及兩種處理方法的對比結(jié)果如圖9所示。從圖9(a)可以看出直接進(jìn)行大范圍的關(guān)節(jié)預(yù)測時,在波谷處的擬合效果較好,但是在較大范圍中可以看出有很多采樣點預(yù)測效果于實際值相差較大;從圖9(b)~(c)可以看出相比于直接對大范圍關(guān)節(jié)角度進(jìn)行擬合,將大范圍關(guān)節(jié)先進(jìn)行分類再進(jìn)行小范圍預(yù)測的擬合結(jié)果較好,其預(yù)測關(guān)節(jié)角度與真實關(guān)節(jié)角度的一致性更高,誤差不超過7°。
圖9 預(yù)測結(jié)果圖Fig.9 Forecast result charts
五位受試者未分層預(yù)測和分層預(yù)測的平均性能表現(xiàn)見表5。從表5中可以看出,分層預(yù)測方案的均方根誤差、平均絕對誤差、平均絕對百分比誤差均小于未分層預(yù)測的結(jié)果,說明分層預(yù)測方案對于角度擬合擁有更好的精確度。
表5 未分層預(yù)測和分層預(yù)測的性能表現(xiàn)Tab.5 Performance of non-stratified prediction and stratified prediction
表面肌電信號的獲取安全快捷,正在成為仿生假肢手重要的控制源信號。對于假手運動控制需要的關(guān)節(jié)角度范圍大、精度高的問題,計算表面肌電信號的肌肉激活度作為特征值,使用BPNN構(gòu)建分類器,并與PSO-SVR預(yù)測模型共同組成分層預(yù)測方案。經(jīng)過實驗分析,得到以下結(jié)論:基于肌肉激活度的分層角度預(yù)測均方根誤差為0.098 73、平均絕對誤差0.001 92、平均絕對百分比誤差0.59%,說明使用肌肉激活度的分層角度預(yù)測方案在關(guān)節(jié)角度范圍較大的情況下仍能保證較高的預(yù)測準(zhǔn)確度,使用本方案計算能夠滿足對假肢手臂控制的準(zhǔn)確性和穩(wěn)定性要求。