曾億山, 劉 睿
(合肥工業大學 機械工程學院,安徽 合肥 230009)
專利《一種嬰兒爬行訓練機及其控制系統和控制方法》[1]設計初衷是輔助初生嬰兒爬行訓練。原型設備利用攝像頭采集嬰兒的動作并結合安置在墊子上的壓力傳感器數據判斷的爬行意圖和方向。這種識別方式受環境光線和傳感器精度的制約,工作環境存在局限,本文對設備適應性差等缺點提出改進。加速度傳感器和陀螺儀具有不受環境影響、可獲取空間動作信息等特點,非常適合作為肢體動作識別的工具。無線傳感器網絡具有高效率、低成本、部署靈活等特點[2,3]。Mantyjarvi J等人將2個含有三軸加速度傳感器的盒子放在測試者左右兩側腰上,識別佩戴者的不同動作[4];Costante G等人通過智能手表內置的加速度傳感器采集手臂手勢作為輸入方式實現手機的免提交互[5]。
本文設計基于六軸傳感器的無線動作識別系統,用于識別嬰兒的動作。嬰兒動作不具有規律性,用單個傳感器無法完成要求,需要在嬰兒脊背(傳感器0)、手腕(傳感器1,2)、腳踝(傳感器3,4)共5處佩戴傳感器終端采集佩戴部位的動作信號。終端通過WiFi將數據發往服務器,根據實時動作判斷爬行的意圖和爬行方向。
硬件分為可穿戴終端和服務器。終端采用Espressif ESP8266無線模塊作為控制器。慣性測量單元(inertial measurement unit,IMU)選用InvenSense MPU—6050六軸傳感器,通過I2C總線與無線模塊通信。終端可以實現數據的采集、預處理和傳輸。終端工作電壓為3.3 V,鋰電池經TPS63020線性穩壓器降壓后供電。
服務器采用MediaTek MT7621A無線開發板,其集成32 bit雙核微處理器,32 MB FLASH和512 MB RAM,支持2.4,5 GHz雙頻段WiFi。服務器根據每個終端不同的MAC地址區分佩戴位置。
該系統關鍵是通過嬰兒四肢的動作判斷爬行意圖。匍匐爬行的過程可分解為手臂向前伸出、膝蓋彎曲腿部向軀干靠近、保持手腳位置不變、手足用力拉動身體前進等一系列動作組成。觀察發現整個爬行過程,手腳移動的軌跡可以簡化為水平面上的“↑”、“↗”和“↖” 3種模型,并且包含在z軸上的升降。因此將問題簡化為圖1中3個手勢的識別。

圖1 3種手勢的運動示意
手勢識別僅需要利用加速度信號,需要預先去除重力加速度的影響并對數據濾波。本系統對濾波要求較低,終端采集信號后經過滑動平均濾波處理后再發往服務器。
信號提取用于從連續信號中提取出僅包含動作部分的信號,如文獻[6,7]的方法。本文采用加速度一階向后差分的方法。在沒有手勢動作時,信號平穩;執行手勢動作時,信號迅速變化。對加速度信號進行差分可反映加速度變化的劇烈程度,具體地終端獲取的3種手勢模版的加速度信號及其一階向后差分信號如圖2所示。
(1)

圖2 加速度和加速度向后差分信號
由圖可知每一個手勢都對應一個加速度差分信號的主峰。手勢的起點和終點通過閾值來確定,本系統采用0.02gn。差分信號閾值內數據即為有效手勢信號。為避免將突發數據識別為手勢,若截取起點和終點的時間小于0.15 s,則拋棄該組數據。
現今手勢識別研究中[8],考慮本系統中機能的限制,選用動態時間規整(dynamic time warping,DTW)算法較合適[9],系統的模型簡單,直接利用歐氏距離計算相似度[10]。
DTW通過調整時間序列不同時間點對應元素之間的關系獲得最優路徑,使其能很好地度量時間序列之間的關系。假定服務器中儲存的手勢模板S=[s1,s2,…,sm,…,sM]和待測序列T=[t1,t2,…,tn,…,tN],其中M和N為序列中特征矢量的總幀數。m,n為矢量的時序標號。
如圖3所示,在坐標系的橫軸和縱軸上標出待測序列和手勢模板的特征矢量,各個特征矢量之間的關系用網格表示,網格中的交叉點(n,m)表示待測序列T(n)和手勢模板S(m)相交,記DTW[T(n),S(m)]為交叉點的失真。D[T,S]為待測序列與手勢模板的總失真。

圖3 DTW算法及路徑限制示意
若N=M,即兩個序列的長度相等有
(2)
若N≠M,定義路徑代價函數d[(n,m)],其意義為從起點(1,1)出發到當前點(n,m)的累積失真,且有以下遞推公式
d[(n,m)]=DTW[T(n),S(m)]+min{d[(n-1,m)],d[(n-1,m-1)],d[(n,m-1)]}
(3)
d[(1,1)]=DTW[T(1),S(1)]
(4)
式(3)表示路徑中任意交叉點(n,m)前一點為(n-1,m),(n-1,m-1),(n,m-1)3個交叉點之一。根據上述公式,可從終點(N,M)反推至起點(1,1)求解最優路徑,計算出長度不同的特征序列之間的最小失真度總和D[T,S]=d[(N,M)]。通過DTW算法可以使不同長度的序列相互度量。
為了避免盲目搜索,通常采用限定搜索路徑中斜率的極值實現路徑限制以降低算法運算量、提高速度。實際操作中雖然手勢執行的速度和幅度有所不同,但各部分次序仍保持不變,因此,搜索路徑必然從左下角出發,終止于右上角。通常規定以(1,1)為起點,(N,M)為終點,以經過(1,1)的直線l1,l4和經過(N,M)的直線l2,l3組成的平行四邊形內進行搜索。其中l1,l3的斜率為2,l2,l4的斜率為1/2。
與加速度傳感器不同。陀螺儀測量的是角速度,對線性機械運動敏感度較低,但其本身固有特性,工作中會產生漂移,姿態檢測需要陀螺儀的測量值矯正加速度傳感器測量值的錯誤。系統根據上一次加速度傳感器測量值的估計,結合陀螺儀的測量值計算出當前時刻重力矢量的方向,再與當前時刻加速度傳感器測量值加權平均,得到當前的最優估計值[11]。圖4為姿態測量原理。

圖4 姿態測量原理

定義估計值Rest=[Rxest,Ryest,Rzest]作為算法的輸出,并認為Rest(0)=Racc(0)。由圖4可知tanθxz=Rx/Rz,進而求得θxz=arctan 2(Rx/Rz),利用當前加速度傳感器的測量值計算陀螺儀上一時刻的角度為tan(θxz(n-1))=Rx(n-1)/Rz(n-1)。
陀螺儀的測量值為當前轉動角速度ωxz,ωyz,設T為采樣間隔,則得到陀螺儀在任意時刻n的角度為
(5)
引入由陀螺儀當前測量值和上一次估計值計算得到的矢量Rgvro=[Rxgvro,Rygyro,Rzgyro]。由合加速度R2可寫出矢量長度,并假設長度為1 且旋轉后不發生變化,有
(6)
令x=Rxgyro,y=Rygyro,z=Rzgyro,根據式(6)可得
(7)

當前時刻的重力矢量估計值Rest(n)由加速度傳感器當前的測量值Racc(n)和Rgyro(n)加權平均得到
(8)
式中W為陀螺儀權值,表示相對于加速度傳感器,信任陀螺儀的程度,通常取5~20,本系統中取W=12。
實際工作中,只考量在與實驗者身體方向相同的軸上的偏轉角度,忽略其他軸上的偏轉。且設定閾值為角度超過15°且持續時間超過0.75 s時系統判定為有轉向意圖,當角度或時間小于閾值時視為無效動作。
采集手勢并隨機挑選3種手勢各100份,其中手部和腳部分別占50份,存入服務器數據庫作為模板。
結合實際情況,實驗重點考察實驗者開始連續執行動作到服務器給出指令所用的時間,具體某次手勢的識別情況放在次要。系統工作流程如圖5。
設定終端采樣頻率為40 Hz。傳感器1~4采集加速度信號經濾波后通過WiFi傳送到服務器,服務器對數據分割匹配,當超過2只傳感器的手勢匹配成功則直接判定為滿足要求并結合脊背處傳感器測出的傾斜方向輸出相應指令;若只有1只傳感器匹配成功,則視為無關動作;若2只傳感器匹配成功,需要進一步判斷是否同時為手部、腳部傳感器,若是,則視為無關動作;若不是,則結合傳感器0測出的傾斜方向并輸出指令。
相應選取8名實驗者穿戴傳感器終端,距離服務器1 m處完成爬行動作15次,觀察記錄從實驗者連續執行動作到服務器給出正確反應所用的時間,實驗結果記錄如表1。

表1 系統識別時間
因為同時處理多只傳感器的數據,服務器負載較大且設定了時間閾值,實驗表明在動作執行1 s后服務器才能完成動作識別發出指令。其他情況是由于終端設計簡單,存在供電不足等原因導致個別終端無法將數據發往服務器。
實驗表明,該系統能在3 s內正確給出指令的概率為74.2 %,3~4 s內給出正確指令的概率為17.5 %,4 s以后完成識別的概率僅為6.67 %。
本文針對實際需要設計基于六軸傳感器的無線動作識別系統,實驗證明該系統可以滿足實際需要。因為硬件設計簡單,工作穩定性尚有不足。且基于模板匹配的手勢識別有多種因素會影響識別的正確率,如手勢模板的數量、執行手勢的穩定性等。事實上,手勢識別的應用是在線計算的過程,而文中的結論均為離線計算得到。因此,還需要對硬件和算法進一步改進,提高識別的速度和系統穩定性,以適應更加復雜的情況。