曹爾凡, 崔建偉
(東南大學 儀器科學與工程學院,江蘇 南京 210096)
手臂運動識別技術廣泛地應用于眾多領域,包括殘疾人康復、運動員的動作分析、VR應用等[1-3]。比如在助殘領域,對于失去手部的殘疾人,通過采集并分析他們手臂運動的相關信息,判斷手臂與日常活動相對應的運動狀態,將識別出的手臂動作標簽作為信號,去觸發與手臂動作相匹配的機械假手張合操作,可以幫助完成殘疾人的日常抓握行為。人的手臂動作識別常見的方法包括計算機視覺處理[4]、肌電信號處理[5]和可穿戴式MEMS傳感器等。計算機視覺識別對硬件要求高,攝像設備不便于佩戴,在本文應用的助殘場景里具有一定局限性。肌電信號識別硬件成本較低、攜帶方便,然而受肌肉狀態影響大,識別效果不穩定。
MEMS傳感器具有功耗低、成本低、便于攜帶等優點,是目前研究的熱點[6]。張俊杰等[7]通過采集手臂關鍵節點的加速度和角速度值,對數據進行時域特征計算,采用BP神經網絡和支持向量機兩種方法進行動作識別,總識別率可達90%。這種方法硬件設備用量少,便于穿戴,有一定的識別精度,但是傳感器的加速度、角速度信號存在振蕩等不穩定因素,導致從中提取的時域特征也不穩定,從而影響識別效果。基于多傳感器融合的方法能有效地提高識別的精度和可靠性,如Wang等[8]在老年人手腕部位佩戴加速度傳感器并結合環境傳感器對17種日常人體活動進行識別,總識別率達到96.82%。該方法使用環境傳感器輔助加速度傳感器對人體動作進行識別,彌補了加速度傳感器時域特征不穩定的缺陷,達到了很好的識別效果。但環境傳感器不便于穿戴,特別是在助殘應用領域并不方便。
人類在完成不同動作時有自然形成的習慣,可以設想手臂的運動軌跡有可能隱含人的動作意圖,借此可進一步提高MEMS傳感器對人手臂運動的識別率。受此啟發,基于助殘假手的應用背景,研究了將MEMS傳感器與手臂運動軌跡相結合的手臂運動識別方法。
為了彌補傳感器時域特征不穩定的缺點,本文在虛擬交互環境中建立了3D手臂模型,將傳感器角度數據映射至手臂模型,完成手臂動作復現,獲取穩定的軌跡特征。為了滿足助殘手連續精細動作的識別需求,提出了一種有效動作數據分割算法,剔除連續動作信號中的無效數據,分割出有意義的數據窗口。最后設計了支持向量機算法對預定義的5種手臂動作進行了分類識別實驗。
本文使用的數據手套包含了3個九軸MEMS傳感器和5個彎曲傳感器,其中3個MEMS傳感器分別佩戴在手臂的大臂、小臂、手背部位,5個彎曲傳感器依附于5根手指處,如圖1所示。

圖1 傳感器佩戴位置
圖1中,X0、Y0、Z0為參考坐標系方向,X0指向肩部,Y0指向手臂前方,Z0指向手背外側。X1~X3、Y1~Y3、Z1~Z3分別為3個MEMS傳感器的初始三軸方向,與參考坐標系一致。彎曲傳感器為長條形的壓阻傳感器,可測量手指的彎曲程度。
整個動作識別系統的總體框圖如圖2所示。主控單片機采集大臂、小臂、手背3個部位的三軸加速度、角速度、磁強度信號并進行四元數解算,得到俯仰角、偏航角、橫滾角的三軸姿態角度數據。再通過串口將原始數據、解算好的角度數據上傳至計算機中。計算機將數據復制為兩份,一份用于虛擬環境的手臂動作復現,獲取手臂模型軌跡數據,提取軌跡特征,另一份用于時域特征提取。最后將傳感器時域特征和軌跡特征輸入支持向量機算法模型,完成手臂動作的分類識別。

圖2 手臂動作識別系統總體設計框圖
常見的獲取手臂運動軌跡信息的方法是通過對手臂建立坐標系,基于手臂旋轉姿態角對手臂末端位置進行矩陣解算,得到運動軌跡[9-10]。采用了虛擬交互技術,通過建立3D手臂模型,綁定傳感器姿態數據,實現動作復現,并可以從虛擬環境中直接讀取手臂模型的軌跡信息。這種方法的好處在于可以減少傳統方法解算軌跡所需要的巨大計算量,同時能直觀地看到手臂運動狀態。
首先參照文獻[11]的方法,將手臂模型簡化為棍狀模型,通過建立關節層級關系、添加骨骼蒙皮、添加碰撞器組件等步驟[11],建立虛擬手臂模型,如圖3所示。

圖3 虛擬手臂模型
手臂模型在虛擬環境中的運動由四元數驅動。模型在虛擬空間中的姿態變化基于四元數在新的時刻相對于上一時刻四元數的更新,即四元數的狀態轉移。四元數的實時狀態轉移使用二階龍格-庫塔法實現[12],首先對四元數關于時間求微分方程:

(1)
計算得到
(2)
式中,ωx、ωy、ωz為角速度三軸分量。接著將四元數套用到二階龍格-庫塔方程中,形成四元數狀態轉移方程:
(3)
式中,Q為四元數;K1為t到t+T時刻四元數微分斜率初始端點;K2為斜率末尾端點。通過求T時間內的四元數微分平均斜率來估計T時刻后的四元數狀態,完成狀態轉移。
將手臂模型導入Unity虛擬平臺,將上述公式求得的實時四元數數據綁定至相應模型碰撞器,完成動作復現,效果如圖4所示。

圖4 動作復現效果圖
由圖4可以看出,手臂模型的動作與真實手臂基本一致。本文建立的虛擬手臂模型旨在能夠獲取手臂的動作意圖,勾畫出基本運動趨勢,不要求動作能夠精確復現。
完成動作復現后,手臂模型的運動狀態能夠基本代表真實手臂運動狀態,此時就可以從虛擬環境中直接獲取手臂模型的軌跡數據。常見獲取手臂運動軌跡的方法為了便于計算,大多以小臂末端作為軌跡的計算對象。本文充分發揮虛擬模型的優勢,以右手大拇指末端的坐標數據作為采集對象,軌跡范圍從手臂延伸到手指,提高了軌跡的精確度。采集部位與Unity坐標系方向如圖5所示。

圖5 軌跡數據采集部位與坐標系方向
經過一個動作周期,即可對位置坐標形成動作軌跡路線,圖6為“喝水”動作的軌跡路線。

圖6 “喝水”動作軌跡路線
加速度、角速度能反映手臂運動的幅度與劇烈程度,軌跡數據能反映手臂運動的位移趨勢,因此選用3個MEMS傳感器的加速度、角速度作為時域特征的數據源,虛擬環境中提取出的軌跡數據作為軌跡特征的數據源,數據采集頻率為50 Hz。在提取特征前需要對原始數據進行預處理。
首先使用滑動平均濾波法對原始數據濾波進行處理,去除振蕩毛刺。
(4)
式中,Yk為k時刻濾波后信號值;Xk+i為k時刻滑動窗口內第i個原始信號值。為保證濾波效果良好且原始數據損失較小,滑動窗口大小w設置為10個采樣點。
從虛擬環境中采集到的拇指末端坐標為三軸分量。為了直觀清晰地獲取軌跡特征,以手臂自然下垂于褲縫的位置為所有手臂動作的起點,讓三軸坐標值對設定的起點值計算差的平方和,得出手臂運動時拇指末端相對于起點的直線位移值,作為表示動作軌跡的物理量,以便于后續的動作分割工作和特征提取。位移值計算公式為
(5)
式中,Dk為k時刻大拇指末端相對于起點的位移值;Xk、Yk、Zk分別為k時刻拇指末端的三軸坐標值;X0、Y0、Z0分別為拇指末端的三軸起點值。圖7(a)為“喝水”動作中一個動作周期內的模型末端原始三軸坐標值,圖7(b)為式(5)計算后的位移值。

圖7 “喝水”動作位移值的獲取
由圖7(b)可以看出,計算出的手臂位移值變化趨勢明顯,且沒有振蕩波動現象,穩定性較好。
由于采集到的整段動作數據有一部分不屬于有效動作數據,需要通過分割算法提取出有效動作的片段。傳統的動作分割方法大多是通過手動標識動作起始點[13],或者是設定加速度閾值判斷有效數據段[14]。手動標識的方法操作煩瑣,對連續動作信號不適用,而判斷加速度閾值的方法由于加速度信號不夠穩定的特點,會產生很多干擾點。本文提出一種動作分割算法,基于3.1節得到的穩定的手臂位移值,通過計算差分和并聯合判斷閾值得到有效動作的起始點。
以“喝水”動作為例,觀察圖7(b),做出喝水動作之前的一段時間,手臂的位移值處于平穩狀態且接近于0。當開始做出喝水動作,手臂位移值有一個短暫且大幅度上升的趨勢,這段時間即對應著抬臂的過程。接著喝水的這段時間對應的位移值又較為平穩。最后放下手臂的時間段對應的位移值呈現一個短暫且大幅度下降的趨勢,至此一個動作周期結束。因此得出這樣的規律:在每一個有效動作片段的起始點之后和結束點之前,手臂的位移值都會有一個短時間的陡峭的上升或下降趨勢。因此可以通過判斷這兩段趨勢來確定有效動作片段的起始點和結束點。基于上述分析,本文提出了一種計算滑動窗口的差分和與波峰波谷檢測相結合的動作片段分割算法,算法流程如圖8所示。

圖8 動作分割算法流程圖
其中差分和的計算公式為
(6)
式中,Diffk為k時刻的差分和值;Xk+i為k時刻窗口內第i個點的手臂位移值;Xk+i-1為k時刻窗口內第i-1個點的位移值。滑動窗口大小w設置為10個采樣點。
對于連續的“喝水”動作位移值采用該動作片段分割算法,分割結果如圖9所示。其中l1、l2為閾值線,兩條閾值線中間的波峰波谷點均為干擾點;d1、d2為窗口長度偏移的補償值;S1、E1、S2、E2為識別出的動作起始點。

圖9 動作片段分割算法結果
為傳感器數據和軌跡數據分別選取了5種能表征手臂運動特性的特征量。
對傳感器信號提取了均值、標準差、最大值、最小值、偏度5種時域特征。其中,均值反映了信號平均強度,標準差反映了信號分散程度,最大值最小值反映了信號的幅度,偏度反映了信號的偏斜方向和程度。
對于傳感器的三軸信號計算出的特征量,采取求平方和的方式得出其綜合特征量:
(7)
式中,Fx、Fy、Fz分別為傳感器的三軸特征值分量。這種融合三軸特征值分量的方法,不僅降低了算法模型的輸入維度,同時提高了特征值的穩定性。
對軌跡位移值提取了均值、標準差、最大值、窗口寬度、差分絕對值和5種軌跡特征。其中,均值反映了動作的平均幅度大小,標準差反映了每個采樣點的位移相對于均值的偏離程度,最大值表示動作的最遠位移值,窗口寬度反映了動作的持續時間,差分絕對值和反映了位移值變化的劇烈程度。表1列出了各特征值的公式,其中,ds為樣本標準差,XS、XE分別為動作起始點的索引值。

表1 選用特征值的公式定義
經過特征量計算,得到傳感器數據的時域特征共30維,軌跡特征共5維。在實驗階段會對單時域特征和時域+軌跡特征分別測試識別效果。
定義了5種手臂動作標簽,定義規則如下。
① 選取的動作需為日常生活常見動作,與助殘的應用背景相吻合。
② 選取的動作中應當存在相似動作。相似動作的各特征值較為相近,識別難度較大。
③ 選取的有差別的動作,既作為識別目標,也作為干擾源,用以驗證識別方法是否可行。
選取的5種手臂動作標簽和說明如表2所示。

表2 手臂動作標簽選取
表2中動作類別按動作的相似程度劃分。其中,共性動作是從桌子取物,下面進行進一步細分。“喝水”動作的活動范圍從起點到頭部,為大范圍動作,劃為A類;“解衣服扣子”動作范圍從起點到胸口,為中范圍動作,劃為B類;“翻書”、“敲鍵盤”、“使用手機”3種動作范圍從起點到桌子,為小范圍動作,劃為C類。C類中的3種動作屬于相似動作,識別難度較高,本文將傳感器時域特征與運動軌跡特征相結合測試其分類效果。
尋找了4位志愿者進行數據集采集,每個人對5種動作以平穩的速度重復做15次,一次手臂動作周期約5 s。一共采集了4×5×15=300個樣本。基于5種動作標簽和300個實驗樣本,對選取的5種軌跡特征作平行坐標圖,如圖10所示。由圖得知每種軌跡特征對于每個動作類別分布較為集中,且不同動作類別的同種軌跡特征存在一定間距,易于對動作進行分類,說明5種軌跡特征選取合適。

圖10 5種軌跡特征平行坐標分布
使用Matlab中的Classification Learner工具箱對數據集進行訓練和分類。將數據集中的300個樣本隨機平均分為兩份,其中150個為訓練集,用來訓練算法模型,另外150個作為測試集,用來測試模型的識別準確度。使用能良好支持非線性分類模型的支持向量機算法(Support Vector Machines,SVM)對數據集進行訓練[15]。對SVM模型采用5折交叉熵驗證,使模型更穩定,泛化能力更強。核函數采用高斯核模型:
(8)
式中,x′為核函數中心;‖x-x′‖2為向量x到向量x′的歐氏距離;σ為帶寬,控制核函數作用范圍。高斯核函數是SVM算法常用核函數,將輸入空間映射到高維空間,再用超平面對不同類樣本進行劃分。
為了驗證提出的軌跡特征對識別結果的影響,對傳感器時域特征和傳感器時域特征+軌跡特征分別訓練算法模型,兩種模型的特征值輸入維數分別為30維和35維,輸出均為5維。經過模型訓練與測試集驗證,得到結果。表3和表4分別為傳感器時域特征和時域+軌跡特征的分類結果混淆矩陣。其中縱列為標簽,橫行為預測結果,M1~M5分別為喝水、解衣服扣子、翻書、敲鍵盤、使用手機5種動作,P為識別率。

表3 傳感器時域特征下的動作識別混淆矩陣

表4 時域+軌跡特征下的動作識別混淆矩陣
從表3可以看出,喝水、敲鍵盤、使用手機3種動作的識別率為100%,解衣服扣子的識別率為96.88%。而翻書與敲鍵盤屬于C類中的相似動作,單傳感器時域特征下,10次翻書動作被錯識別為敲鍵盤動作,識別率僅為69.70%,識別效果較差,總識別率僅為92.67%。在傳感器時域特征的基礎上加上軌跡特征訓練模型,如表4所示,喝水、敲鍵盤、使用手機3種動作識別率仍為100%,解衣服扣子也提高到了100%。對于單傳感器時域特征下識別效果較差的翻書動作,融合軌跡特征后只有1次將翻書動作錯識別為敲鍵盤動作,識別率提高到了96.97%,總識別率提高到了99.33%。由此可以驗證所提出的傳感器時域特征與軌跡特征結合的手臂動作識別方法的可行性,且對于相似動作,軌跡特征的加入大幅度提高了識別率,驗證了基于虛擬手臂模型獲取的軌跡特征對手臂動作識別具有一定意義。
基于數據手套和虛擬手臂模型,提出了一種手臂動作識別方法。通過虛擬環境中手臂模型對真實手臂動作的復現,獲取了手臂的軌跡數據,并提出了一種基于差分和加波峰波谷檢測的動作片段分割算法,正確地獲取了有效手臂動作數據片段。最后提取傳感器時域特征和軌跡特征,使用支持向量機算法完成了對5種手臂動作標簽的識別。在傳感器時域特征下,總識別率為92.67%,融合了軌跡特征后,總識別率提高了6.66%,達到了99.33%,驗證了提出的手臂動作識別方法的可行性,且證明了基于虛擬手臂模型獲取的軌跡特征能有效提高識別準確率。
提出的手臂動作識別方法也存在一定的不足。由于手臂模型的靜止參考坐標系是固定的,因此本系統無法對身體在運動狀態下的手臂動作進行識別,存在一定的局限性。今后的工作也會針對手臂模型、識別算法加以改進,讓本文方法適應復雜狀態下的手臂運動。