郭丞,吳飛,朱海
( 上海工程技術大學 電子與電氣工程學院, 上海 201620 )
在市區(qū)和室內環(huán)境中,對目標用戶的準確定位有很多應用,如大型會展中心的導覽、養(yǎng)老院對老年人的安全看護、消防救援人員的定位等. 由于建筑物對衛(wèi)星信號的遮蔽,全球衛(wèi)星導航系統(tǒng)(GNSS)在室內應用中的定位精度不高[1]. 而現(xiàn)有的室內定位技術中,如無線保真(Wi-Fi)、低功耗藍牙(BLE)、超寬帶(UWB)、雷達等需要在定位場所提前部署定位設備,并且成本與定位區(qū)域的面積成正比,限制了這些室內定位方法的普及應用[2]. 基于智能手機內置傳感器的行人航跡推算(PDR)算法[3]室內定位方法不需要提前布置設備,適用于一些未知環(huán)境,而高精度的步頻檢測對基于加速度計的PDR定位是很重要的一部分.
步行是人們日常最基礎的運動形式,很多人通過手機自帶的運動健康軟件來檢驗自己一天運動量是否達標. 在近幾年的步頻檢測文獻中,峰值檢測[4-6]和閾值檢測[7-9]是較為常見的計步方法. 文獻[10]基于智能手機內置加速度計,提出了閾值來檢測波峰波谷來實現(xiàn)計步,并使用峰谷值間的最小距離特征,以避免過度計數問題. 文獻[11]基于低成本的微機電系統(tǒng)(MEMS)傳感器,提出一種支持向量機(SVM)的運動狀態(tài)分類方法,將峰值檢測和帶通濾波器結合起來,再根據不同的運動狀態(tài)設定閾值,但該方法在分類中運用了SVM,這將需要大量的計算. 由于低成本的傳感器精度不高,導致記錄的原始運動數據中包含了很多噪聲干擾,在進行步頻檢測時,會影響真實步數. 文獻[12]介紹了一種能檢測手機用戶運動狀態(tài)的分類器,并根據運動狀態(tài)采用自適應步頻檢測,同時對傳感器數據進行低通濾波和移動平均濾波的預處理,計步精度達97%,但是該方法對用戶佩戴設備要求高,限制了應用的便捷性. 文獻[13]提出將手機傳感器的采集數據通過卡爾曼濾波(KF)[14]處理,再根據加速度信號幅值提取步頻數據,處理后數據的準確度和魯棒性都有所改善. 文獻[15]提出運動分類的區(qū)間對稱步頻檢測,將運動分類為慢速、常速和快速,但是這種算法在長距離的運動中容易忽略真實步伐.文獻[16]在峰值檢測算法的基礎上,提出了最小峰值及距離、動態(tài)閾值和靜止消振的檢測方法,能夠實現(xiàn)99.42%的檢測精度,但是在應用場景上受到了限制且算法相對復雜.
針對上述問題,本文作者提出了一種基于智能手機加速度傳感器的加速度數據預處理和步頻檢測方法,分析了不同類型的行人手持手機在不同場景、速度行走下的加速度數據特征,將預處理后的加速度數據通過檢測其峰谷值進行計步. 針對運動狀態(tài)下的原始數據信號夾雜著由于手部額外施加的力、傳感器自身漂移等因素所帶來的偽波峰波谷噪聲等問題,提出一種加速度數據預處理算法,該方法通過赫爾指數移動平均法[17]減弱一定的噪聲,再利用KF去除原始加速度數據中存在的部分高斯噪聲,最后再通過巴特沃斯低通濾波[18]得到更利于步頻檢測的加速度數據峰谷值模型. 針對行人運動場景的復雜性,提出自適應的步頻檢測方法:峰谷值去異、自適應動態(tài)閾值、峰谷值成對. 通過行人在上下樓場景下行走以及在水平地面上慢速走、常速走、快速走的測試表明:本文方法在不同行走速度和場景下能達到較好的計步精度,有效剔除加速度信號中的異常峰谷值.
本文是基于安卓(Android)操作系統(tǒng)的智能手機內置加速度計采集數據的,經手機內置傳感器的輸出頻率通過設置輸出模式來調控,頻率在15~200 Hz[19].過高的采樣頻率會導致數據質量較差并不利于研究,為了更好地反映行人行走狀態(tài),設置軟件的采樣頻率為50 Hz. 現(xiàn)如今在Android手機里都有線性加速度計,即去除了重力加速度的加速度值其坐標系也與加速度計相同,因此文中選用線性加速度值進行實驗,行人保持手持手機姿態(tài)如圖1所示,手機保持在身體平衡的水平姿態(tài)且屏幕朝上.
圖1 行人手持手機姿態(tài)
圖2為行人手持手機在平面上直線行走時所采集的用戶加速度以及x、y、z軸 的合加速度 A cc ,Acc如下式所示:
式中:ax、ay、az分別是去除重力加速度g之 后的x、y和z軸用戶加速度大小,其中g=9.8 m/s2. 圖2中所示的加速度是去除重力加速度的行人線性加速度,但是波形中依然存在很多類似毛刺的噪聲,尤其是x軸和合加速度的數據. 此時的y軸和z軸上的數據相對平緩,在以零線為對稱軸時,z軸數據更具有對稱性,其更好地顯示了行人行走時在垂直方向上受力作用產生的周期性波動. 綜上本文選用z軸加速度進行步頻檢測,在行人完成一步行走的周期內,加速度數據產生一對峰谷值時即可判定行人行走了一步.
圖2 行人行走時三軸及合加速度
智能手機的加速度信號是由重力、行人加速度和噪音組成. 但是智能手機內置的加速度傳感器精度不高,采集的過程中易受行人相對運動的抖動影響,從而得到采集完的數據噪聲偏高,在放大加速度計信號時會影響步頻檢測. 因此需要采用合適的預處理算法,還原采集數據的規(guī)律性,是步頻檢測的重要一環(huán).赫爾指數移動平均可過濾高頻噪聲,保留有用的低頻趨勢,且隨著計算階數的增大,移動平均線越平滑,能在一定程度上去除噪聲. KF具有去除高斯噪聲的特性,能夠去除原始數據中的高斯噪聲. 經過上面兩步去噪后,加速度數據依然還存在著毛刺干擾,而巴特沃斯低通濾波具有通頻帶的頻率響應曲線,處理后的數據更利于步態(tài)檢測.
1) 赫爾指數移動平均法
大多數移動平均法普遍存在滯后問題,該方法在對樣本值賦予高權重來提高低頻趨勢的同時,還能有效地減少滯后,可用來剔除比較明顯的連貫抖動誤差和周期性干擾誤差. 通過不斷的實驗發(fā)現(xiàn),較高的階數不利于加速度數據的處理,故設置階數為3階. 公式如下:
式中:T為階數;xn為n時 刻的加速度數據;AT(xn) 為處理后的加速度數據.
2) KF
KF可以處理隨機離散線性系統(tǒng),而加速度信號是離散的,用KF對加速度數據進行誤差修正后,得到更接近真實值的數據. 濾波將加速度計的輸出看作是一個平穩(wěn)的隨機過程,同時將原始信號中摻雜的干擾因素當作白噪聲(WN)來去除. 其中濾波包括兩個步驟:第一步是基于線性隨機差分方程的預測信號生成預測信號;第二步是根據預測信號和噪聲協(xié)方差找到合適的信號,然后用它來更新噪聲協(xié)方差,使加速度信號平滑化.
原理如下:
式中:Xk為系統(tǒng)狀態(tài)向量;Uk-1為 系統(tǒng)控制向量;Wk-1為系統(tǒng)狀態(tài)噪聲;A為狀態(tài)轉移矩陣;B為噪聲轉移矩陣.
式中:Zk為量測向量;H為量測矩陣;Vk為量測噪聲矩陣.
預測階段:
式中:Kk為 卡爾曼增益;Pk為誤差協(xié)方差矩陣;依據實驗環(huán)境,Wk和Vk是不相關的WN,其方差矩陣分別為Qk和Rk.
3) 低通濾波
對于低通濾波,是低于某個頻率為通帶,高于某個頻率為阻帶,巴特沃斯濾波的特點是通頻帶的頻率響應曲線最平滑. 而選定的z軸數據在經過上兩步處理后仍然存在著毛刺干擾,本文選用巴特沃斯低通濾波器對數據信號預處理. 行人的行走步頻為1~3 Hz[20],設置低通濾波器的截止頻率為3 Hz. 如式(11)所示:
式中:n為濾波器的階數;wc為截至頻率;wp為通頻帶邊緣頻率在通頻帶的數值為
如圖3所示,將初始加速度數據信號依次通過預處理算法.
圖3 加速度數據預處理前后對比
圖3(b)為原始加速度數據經過赫爾指數移動平均濾波后消除的部分誤差噪聲,圖3(c)為緊接著經過KF后,消除了大部分的干擾噪聲引起的偽波峰波谷,最后將數據信號通過低通濾波如圖3(d)后,波形顯得愈加平滑,正弦特征越加明顯,更有利于峰谷值檢測.
通過對行人步態(tài)的分析可知,步行時加速度會出現(xiàn)周期性類正弦波的振蕩特性,峰值檢測方法是通過檢測加速度數據中出現(xiàn)的峰值個數來計算行人的行走步數[21]. 峰值檢測方法可以表示為
式中:xt為當前時刻下的加速度;xt-1和xt+1分別為上一時刻和下一時刻的加速度. 經過預處理算法平滑處理后的數據仍然存在偽波峰影響最終的檢測精度和準確度. 因此,下文提出了自適應峰谷值檢測法,用以剔除異常峰值和谷值以提高檢測精度.
圖4為基于加速度數據預處理的步頻檢測流程圖. 經過預處理后的加速度數據能直觀地看到其峰谷值數目,但是并不能直接作為步頻檢測的依據,還需要通過本文所提的步頻檢測方法進行提煉,步驟如下:
圖4 數據預處理和步頻檢測流程
1) 峰谷值去異
行人在行走時會存在短暫的停留,因此需要識別靜止和運動狀態(tài)下的所有峰谷值,但是不包括小于零的峰值和大于零的谷值. 通過式(13)提取步行信號中的靜止異常值
式中:ap(n) 和av(k) 是行人行走下識別出來的所有峰值和谷值;n和k為待處理數據序列;i和j分別是提取加速度峰谷值階段時的峰值數目和谷值數目. 在靜止狀態(tài)下經過實驗,如圖5所示,得到的z軸加速度的最大和最小閾值分別為0.05和-0.05. 通過式(13)可以剔除大部分靜止狀態(tài)下的峰谷值,并且能夠完整地將步行峰谷值保留下來.
圖5 靜止時加速度數據
2) 自適應動態(tài)閾值
動態(tài)閾值法是根據在一個窗口大小內的加速度數據的最大值和最小值建立的,窗口的閾值設定取決于行人的運動狀態(tài),它的閾值直接影響系統(tǒng)判定的精度. 通常,步行速度在慢速、正常和快速行走狀態(tài)下會產生接近零線或者離真值較遠的偽波峰波谷值,可能還包括在提取運動信號時遺留下來的少數靜態(tài)信號,動態(tài)閾值的設置可以剔除這些偽真實值.
普遍的動態(tài)閾值只是針對某一特定場景下,而在行人行走在上下樓的復雜場景時,由于兩層樓梯之間的連接處是中間休息平臺,會導致行人采集在連續(xù)上樓或下樓經過樓梯間的相對平地時數據波動較大.圖6為上下樓的數據波動圖,矩形圈處為在樓層連接處的平地時行走的數據波動,容易被閾值忽略. 但是針對上下樓場景時設置的動態(tài)閾值并不適用于平地行走的情況,因此,提出一種自適應的動態(tài)閾值. 圖7為根據實驗數據的經驗值,設置峰值和谷值均方差α=0.2為衡量閾值來判斷加速度數據的離散程度,窗口大小為50,當峰谷的均方差大于 α 時,說明數據波動較大,即行人行走時有較大起伏或者運動場所較為復雜,定義動態(tài)閾值如式(14)所示:
圖6 上下樓的數據波動
圖7 隨機5組的閾值選取實驗對比
式中:apeak(i) 和avalley(i) 分 別是i時刻的峰值、谷值;n和k分別為峰值數和谷值數;aˉpeak和aˉvalley分別是所有峰值、谷值的均值. 用峰值和谷值的均方差來作為閾值能更明顯地過濾波動較大的步頻曲線特性,圖8(a)為圓圈處該動態(tài)閾值在行人行走在連續(xù)上下樓時截取到的偽真值.
圖8 動態(tài)閾值截取偽真值
當峰谷的均方差小于 α 時,說明數據的波動程度較小,即行人行走時步態(tài)較為平緩或者行走地面較為平坦,則定義動態(tài)閾值如式(15)所示:式中:用峰值和谷值的均方差來作為閾值. 實驗中當行人行走在較平坦的地面時,數據起伏較小,數據離散程度較中心偏低,此時峰谷值的均方差比方差更為精確. 圖8(b)為矩形框處為該動態(tài)閾值在行人行走在水平地面時截取到的偽真值.
3) 峰谷值成對
為了得到成對的峰谷值,即單步發(fā)生的加速度峰谷值應該是按照時間順序間隔出現(xiàn). 根據采集的步行數據,行人行走的每一步數據應該是峰谷成對顯示的,因此剔除不成對的偽真值. 圖9所示實線圈出來的值,相鄰的峰值、谷值之間沒有一個峰值或谷值間隔,即刪除靠近零的峰值或谷值,最后獲得的峰谷值對個數即為行人的執(zhí)行步數.
圖9 峰谷值對去偽
實驗使用設備型號為Samsung Note10(系統(tǒng):Android 11). 測試時,行人保持手持手機平端在胸口狀態(tài)行走,且手機屏幕朝上. 步行估計誤差按照式(16)進行計算:
式中:Error為實驗誤差;teststep和truestep分別為測試步數和實際步數.
首先,檢驗了本文的預處理算法和只用低通濾波的前后對比. 如圖10(b)圓圈處所示,只經過低通濾波的數據存在很多毛刺,這些毛刺會影響步頻檢測結果.
圖10 預處理算法對比
其次,峰值檢測法和動態(tài)閾值法在常速走和快速走時的檢測精度有不錯的效果,但是在上下樓場景下行走,甚至在慢速行走時,其平均檢測誤差高達19.52%和8.68%. 圖11(a)和(c)為上下樓時行走和慢速行走的峰值檢測結果,圖11(b)和(d)為本文方法的步頻檢測結果. 由圖中看出峰值檢測在上下樓行走、慢速行走時出現(xiàn)過計、錯計的主要原因在于將靠近真實峰值的異常值也認為是步行信號,而本文的方法能夠克服步行中的這類干擾值達到更高的檢測精度.
圖11 兩種步頻檢測算法對比
表1 對比了峰值檢測和本文提出方法的實驗結果. 由表1數據可知,本文測試了5名行人(年齡在22~26歲,身高在1.75 ~1.86 m,體重在65~85 kg)在上下樓場景下以及在水平地面慢速走、常速走、快速走時行走100步的步頻檢測結果. 文章方法在上下樓場景下的步頻檢測中,檢測精度平均高達99.40%,在水平地面不限制步速的行走狀態(tài)下,檢測精度平均高達99.47%以上. 本文的步頻檢測算法適用于不同的運動場景和運動狀態(tài),不僅適用于上下樓的運動場景,還適用于行人行走過程中的變速行走的運動狀態(tài). 在進行了一段慢、常、快三種步速分別行進各40步合計共120步的路程實驗中,得到最終的行走數與實際步數相差僅1步,實現(xiàn)在運動過程中不受運動狀態(tài)變化影響的準確計步.
表1 (續(xù))
表1 5名行人的步頻檢測結果
綜合上述實驗結果表明:本文提出的基于加速度數據的預處理算法能夠有效地過濾原始加速度信號中的毛刺噪聲,提出的自適應步頻檢測算法適用于不同運動場景且步行速度不受限制,能夠克服步行過程中的干擾信號,達到較高的步頻檢測精確度.
針對手機內置傳感器的加速度原始信號存在許多噪聲干擾等問題,將加速度信號通過赫爾指數移動平均濾波、KF以及低通濾波的組合進行數據預處理,對峰值檢測中存在錯計以及應用場景單調受限等問題,提出一種自適應的步頻檢測算法,該方法針對多種運動場景和狀態(tài)去自適應調節(jié)檢測閾值,有效剔除了用戶步行過程中的假步,實現(xiàn)在多種運動場景和行走步態(tài)下的高精度計步. 實驗結果表明:該算法在各種場景和步態(tài)下的平均精度為99.44%,具有抗干擾能力強、計步精確度高、自適應多場景的優(yōu)點. 但本文的方法是基于行人手持手機平行于胸口的單一姿態(tài)且處理數據是離線進行的. 在未來,可以設計一個應用軟件實現(xiàn)實時計步和定位,還可以研究在更多行人姿態(tài)下的運動,如放在背包、口袋以及單手握持手機前后擺臂等.