張 平, 劉祚時
(江西理工大學 機電工程學院,江西 贛州 341000)
基于慣性傳感器手勢識別一直以來是人機交互領域的重要研究方向[1]。目前,手勢識別的方案有很多種,主要包括:基于筆的手勢識別、數(shù)據(jù)手套的手勢識別、基于微機電系統(tǒng)(micro-electro-mechanical system,MEMS)慣性傳感器的手勢模式識別、基于視覺的手勢識別和基于圖像的手勢識別[2~4]?;谝曈X的手勢識別技術比較成熟[5],但依賴于對圖像的處理,要求設備有很強的圖像處理能力和對設備的使用環(huán)境有嚴格要求,比如光線的影響,限制了該方法的應用?;诩铀俣葌鞲衅鞯氖謩葑R別方法[6],比如荊雷、馬文君等人[7]提出的動態(tài)時間規(guī)整(dynamic time warping,DTW),方法計算量大,對于連續(xù)性手勢識別實時性不好。隱馬爾可夫模型(hidden Markov model,HMM)[8],由于同一種手勢在不同用戶間存在差異很難建立起手勢模板和隱馬爾可夫模型。陳意、楊平等人提出了基于加速度規(guī)律特征提取的手勢識別方法[9]。隨著微電子技術的飛速發(fā)展,32位微控制器的均自帶浮點運算單元(floating point unit,FPU),大幅提高了運算能力,同時慣性傳感器自帶數(shù)字運動處理器(digital motion processors,DMP)可以將姿態(tài)解算[10]應用于手勢識別算法中。
本文基于MPU6050傳感器提出了結合加速度和姿態(tài)角手勢特征提取的手勢識別優(yōu)化算法。針對個體手勢動作的差異性具有較強的魯棒性,通過提取各種手勢的運動學特征以及設備的姿態(tài)變化規(guī)律完成手勢識別。對手勢的方向識別運用了姿態(tài)角的特征量來實現(xiàn),簡化了算法的復雜度。在敲擊手勢和晃動類手勢識別中也運用了姿態(tài)角的變化規(guī)律,姿態(tài)角的信號特征為手勢的方向識別提供了便利。
在敲擊手勢和晃動類手勢的分類中應用了四元數(shù)轉換到歐拉角的信號波形來分析。手勢設備在空間的姿態(tài)變化可以用四元數(shù)不斷更新來表征,亦即用轉換后的歐拉角表示。對手勢的方向識別運用姿態(tài)角的特征量進行判斷。
1)四元數(shù)定義:空間中任何一個旋轉均可以用四元數(shù)來表示成q=ω+xi+yj+zk形式,其中,ω表示旋轉角度,寫成矩陣形式為
q=[ω,x,y,z]T
(1)
2)四元數(shù)歸一化處理:表征旋轉的四元數(shù)必須是規(guī)范化四元數(shù),需要進行歸一化處理[11]
|q|2=ω2+x2+y2+z2=1
(2)
3)四元數(shù)/歐拉角轉換:任何一個設備在三維空間中的姿態(tài)可以用歐拉角表示
(3)
式中φ為橫滾(roll)角;θ為俯仰(pitch)角;φ為偏航(yaw)角。
1.2.1基本手勢定義和分類
手勢定義基本原則:設備易于識別手勢;使用者容易學習和使用手勢。定義了如表1所示的手勢集分類。
表1 手勢集劃分
1.2.2 實驗平臺
基于STM32F427處理器,通過MPU6050慣性傳感器進行手勢數(shù)據(jù)信息采集,通過外設串口并按照自定義幀協(xié)議將數(shù)據(jù)上傳至上位機軟件,本文借助匿名飛控的上位機軟件實現(xiàn)了手勢數(shù)據(jù)的實時顯示和圖形繪制,方便對信息進行分析處理,最后通過算法將手勢信息提取為指令,從而通過無線收發(fā)器NRF24L01 2.4 GHz通信協(xié)議在LCD顯示手勢識別結果。圖1為實驗系統(tǒng)整體結構。
圖1 實驗系統(tǒng)整體結構
1.2.3 手勢識別模式算法
研究的慣性傳感器手勢識別算法應用于移動設備,要求實時性高,方便在嵌入式系統(tǒng)移植。故采用了手勢原始數(shù)據(jù)統(tǒng)計分析的方法。手勢識別算法框圖如圖2所示。
圖2 手勢識別算法框圖
1.2.4 手勢信號數(shù)據(jù)截取
在進行有效手勢信號截取前,必須要準確檢測手勢起點和終點。圖3為利用加速度信號進行手勢起點,終點檢測。
圖3 手勢起點和終點判斷
由圖3可見,加速度計在一般狀態(tài)下變化較平緩,但當有手勢動作發(fā)生時加速度計數(shù)據(jù)波形會發(fā)生劇烈變化。利用加速計的數(shù)據(jù)特性表征手勢動作具有很高的可靠性[12]。本文對三軸加速計數(shù)據(jù)作差分,再以差分絕對值之和作為表征手勢起點、終點的特征量。如式(4)所示,以Δak作為判斷起點和終點的依據(jù)
Δak=|axk-axk-1|+|ayk-ayk-1|+|azk-azk-1|
(4)
圖4 手勢識別模式算法起點流程
1)手勢信號階段平均能量
為了簡化算法,減少計算量,用手勢平均能量代替手勢總能量
(5)
式中L為手勢長度;axi,ayi,azi分別為x軸、y軸和z軸第i個采樣點加速度;ax0,ay0,az0為對應軸加速度零偏。
2)手勢長度
從手勢起點開始到手勢結束的時間差值,本文以采樣點[12]的序號表示采樣節(jié)點對應的時刻值。手勢長度即為采樣序號的差值
L=Kend-Kstart
(6)
對于不同的手勢動作手勢長度不同,對于翻轉類手勢動作較短小于50 ms,其他手勢較長,采樣頻率200 Hz。
3)手勢信號段歐拉角波峰波谷數(shù)目計算
在手勢信號階段,以手勢起點閾值為0°,遍歷與橫軸的交點,B1~B7,計算每個區(qū)間中最大和最小值,當最小值小于下限閾值,波谷數(shù)目加1;當最大值大于上限,閾值波峰數(shù)目加1。利用上限和下限閾值的濾波的方法能夠減小干擾,具體計算方法如圖5所示。
圖5 波峰波谷數(shù)目計算方法
4)手勢信號段歐拉角信號平均幅值
(7)
式中Pi為波峰或波谷值;N為波峰波谷總數(shù)。
5)手勢信號段歐拉角差分絕對值之和
(8)
(9)
(10)
式中Eφ,Eθ,Eφ分別為橫滾角、俯仰角和偏航角差分絕對值之和;L為手勢長度。
設計的手勢分類器充分利用了姿態(tài)角的信號進行方向判斷以及敲擊手勢和晃動手勢的分離,設計了3層決策樹分類器,達到了簡化算法的目的。如圖6所示。
圖6 分類器
第一層:在預定義手勢中只有翻轉類手勢長度最短且加速度信號變化量最小,所以若手勢能量最小,小于閾值,分類為翻轉類。
第二層:MPU6050自帶數(shù)字運動處理器,通過姿態(tài)解算后得到歐拉角,清晰反映預定義手勢波峰數(shù),甩動手勢在姿態(tài)角上表現(xiàn)的運動學特征為無峰值,利用該條件可分離出甩動類手勢。甩動手勢加速度和歐拉角波形如圖7所示。
圖7 甩動手勢加速度和歐拉角波形
第三層:預定義敲擊手勢為連續(xù)敲擊3次和晃動手勢在歐拉角信號上形狀相似,如圖8所示。
圖8 敲擊和晃動手勢波形
在姿態(tài)角特征上的區(qū)別表現(xiàn)為手勢長度L和手勢平均幅值Em的不同,考慮到設備姿態(tài)以及操作者的差異性,為了提高識別率,選取出敲擊手勢和晃動手勢的樣本,利用這兩個特征進行訓練,得到Fisher分類函數(shù)f=61L+5Em-4 610,當f<0,為敲擊類手勢;當f>0為晃動類手勢。
2.3.1 翻轉類手勢識別
翻轉類手勢動作均繞特定坐標軸翻轉,運動變化主要體現(xiàn)在陀螺儀上,加速度計變化很小。在預定義手勢集中表現(xiàn)為手勢平均能量最小,經(jīng)過統(tǒng)計分析翻轉類手勢平均能量最大不超過4 000,而手勢能量最低的甩動手勢均大于4 500。利用最小平均能量閾值分離出翻轉類手勢。再利用手勢段歐拉角差分絕對值之和最大特征量(即選Eφ,Eθ,Eφ最大者)篩選出翻轉軸(Eφ,Eθ,Eφ分別對應X,Y,Z軸)。對于方向的識別根據(jù)手勢段歐拉角波峰值或者波谷值有無確定,僅有波峰值為順時針翻轉,僅有波谷值為逆時針翻轉。
2.3.2 甩動類手勢識別
由分類器第一層利用手勢能量分離出翻轉類手勢后,在預定義的剩下3類手勢中,利用姿態(tài)角波形能夠清晰反映手勢峰值特征,晃動手勢和連續(xù)敲擊3次手勢波峰和波谷數(shù)目均大于等于3,而甩動手勢在歐拉角信號上表現(xiàn)為波峰數(shù)目等于0,利用波峰數(shù)目能夠分離出甩動手勢。
1)甩動手勢方向的預識別:甩動分為左右甩動和上下甩動,當歐拉角差分絕對值之和最大值發(fā)生在俯仰角信號上,(即Eθ值最大)則為上下甩動如圖9(a);當發(fā)生在在偏航角信號上,(即Eφ值最大)則為左右甩動如圖9(b)。
圖9 甩動手勢信號波形
2.3.3 敲擊類和晃動類手勢識別
預定義敲擊手勢為連續(xù)敲擊3次,而晃動類手勢為連續(xù)晃動3次及以上,當晃動3次以上,手勢信號明顯特征表現(xiàn)在晃動手勢長度大于敲擊手勢,平均幅值Em也大于前者。但是當晃動次數(shù)為3次時,兩類手勢信號很相似,為了提高識別準確度,對兩類手勢樣本進行訓練得到Fisher判別函數(shù)f=61L+5Em-4 610:當f<0,為敲擊類手勢;當f>0為晃動類手勢。
晃動手勢方向識別:晃動分為左右晃動和上下晃動,表現(xiàn)在姿態(tài)角上的特征是當手勢信號段歐拉角差分絕對值之和最大值(即Eθ值最大)出現(xiàn)在俯仰角信號上為上下晃動,信號波形如圖10(a)所示;當出現(xiàn)在偏航角信號上(即Eφ值最大)為左右晃動,信號波形如圖10(b)所示。
圖10 晃動手勢信號波形
基于MPU6050慣性傳感器的實驗測試,選擇10位試驗對象各進行100次測試,平均識別率96.4 %,測試識別結果如表2所示。G1~G9分別表示順時針翻轉、逆時針翻轉、向上甩動、向下甩動、向左甩動、向右甩動、敲擊、上下晃動、左右晃動,R1~R9為實驗結果。
表2 手勢識別結果
從結果可以看出,大多數(shù)的識別錯誤出現(xiàn)在方向識別,與操作不規(guī)范性因素有關,比如抖動因素。
針對MPU6050傳感器提出了結合加速度規(guī)律和特征量以及設備姿態(tài)角變化規(guī)律的手勢識別方法。能夠減少因用戶操作差異性因素造成誤識別的影響。同時利用姿態(tài)角的變化規(guī)律和特征量能夠方便對手勢的方向進行判別。相較于僅使用加速度變化規(guī)律的手勢識別算法,利用姿態(tài)角對方向識別簡化了算法,縮短了手勢識別時間,提高了實時性。姿態(tài)角能直觀地表征設備的位姿變化,同時能夠在一定范圍內(nèi)兼容手勢動作包含的基礎運動。算法已成功移植在STM32F427微處理器上。
[1] 雷 蕾,趙涓涓,史曜華.人車交互技術中的手勢檢測及識別方法[J].太原理工大學學報,2016,47(6):793-798.
[2] 肖 茜,楊 平,徐立波.一種基于MEMS慣性傳感器的手勢識別方法[J].傳感技術學報,2013,26(5):611-615.
[3] 武 霞,張 崎,許艷旭.手勢識別研究發(fā)展現(xiàn)狀綜述[J].電子科技,2013,26(6):171-174.
[4] Panwar M.Hand gesture recognition based on shape parame-ters[C]∥International Conference on Computing,Communication and Applications,IEEE,2012:1-6.
[5] 孔俊其,王 輝,張廣泉.基于傳感器的手勢交互研究[C]∥江蘇計算機大會,2008.
[6] 孔俊其.基于三維加速度傳感器的手勢識別及交互模型研究[D].蘇州:蘇州大學,2009.
[7] 荊 雷,馬文君,常丹華.基于動態(tài)時間規(guī)整的手勢加速度信號識別[J].傳感技術學報,2012,25(1):72-76.
[8] 劉珠峰,周 良,丁秋林.基于隱性馬爾可夫模型的手勢識別設計和優(yōu)化[J].計算機應用研究,2011,28(6):2386-2388.
[9] 陳 意.基于MEMS慣性傳感器的移動電子設備手勢識別技術研究[D].成都:電子科技大學,2013.
[10] 彭孝東,陳 瑜,李繼宇,等.MEMS三軸數(shù)字陀螺儀標定方法研究[J].傳感器與微系統(tǒng),2013,32(6):63-65.
[11] 曹 飛.嵌入式航向姿態(tài)參考系統(tǒng)的設計與實現(xiàn)[D].南京:南京理工大學,2012.
[12] 趙呂晨,吳 薇,曾憲奕,等.基于多加速度傳感器的胎動信號檢測方法[J].傳感器與微系統(tǒng),2016,35(12):20-23.