熊晶
(中國地震局地震研究所,湖北 武漢430071;中國地震局地震大地測量重點實驗室,湖北 武漢430071;湖北省地震局,湖北 武漢430071;武漢地震計量檢定與測量工程研究院有限公司,湖北 武漢430071)
基于智能手機的增值服務是未來人類娛樂與商業活動的核心增長點,智能手機作為優秀的個人定位導航平臺,基于其位置服務的應用具有巨大的社會價值。目前智能手機上已經基本全部配備GPS 芯片,結合行人航跡推算PDR(Pedestrian Dead Reckoning)算法,利用手機傳感器測量的步數和估計的步長來估算運動距離,并結合姿態傳感器獲得航向,從而推算出行人的相對位置[1],實現復雜環境下行人的導航定位。而其中,步長模型的研究是PDR 算法實現的關鍵環節,其合理性和可靠性是行人導航定位的重要影響因素。
行人步行或跑步過程中,其步長是不斷變化的,比如路上步行、轉彎、快走、上下樓梯等,步長都不是定值。而且不同行人的步長也是不同的,與行人的性別、身高、體重、年齡、心情甚至個人行為習慣有關[2]。本文僅建立行人在不同場景下的步長模型,暫時不考慮各種用戶群體的種類。
目前的研究表明,行人的步長與其加速度的某些統計值有很好的相關性,如最大最小加速度、方差、步頻等,目前有4 種步長模型:常數步長模型、線性步長模型、非線性步長模型和神經網絡步長模型[3]。
常數步長模型是最簡單的步長模型,假設步長為常數。常數由手機GPS 定位結果計算得出,當沒有GPS 信號時,步長默認為最后一次GPS 定位計算的結果:

式(1)中:Sk為k 時刻步長;SGPS為GPS 實時計算的步長;wG、ws是高斯白噪聲;S0為GPS 無信號之前定位結果計算的最后步長。
雖然在室外GPS 定位精度最好,但仍然有10 m左右的誤差,所以據此計算的步長精度很難到達米級,而且誤差積累更大。
線性步長模型認為步長和步頻、加速度之間存在線性關系[4],為:

式(2)中:L 為步長;A、B、C 為線性模型系數,可由實驗線性模擬得出;F 為步頻,即該步所用時間的倒數;SV 為該步的加速度方差。
非線性步長模型是通過步行過程中加速度的最大值和最小值為參數建立的,優于難以證明步長和運動參數的線性關系,所以線性關系只是一種簡單估計,而步行過程中的加速度是在不斷動態變化的,總有2個極值的存在。所以有學者提出基于加速度極值的模型公式:

式(3)中:K 為模型的系數;Amax是該步過程中最大的加速度值;Amin為最小的加速度值。
人工智能步長模型不是建立步長與運動參數之間的關系,而是將運動數據作為樣本輸入,進行反復訓練,自適應估算出步長,比如輸入該步的加速度最大值、加速度最小值、方差及步頻等。最后,通過神經網絡學習算法,估計出步長[5]。
3 種步長估計模型的比較如表1 所示,這3 種步長估計模型線性估計模型效果最好,所以本文擬選用線性估計模型,通過最小二乘法線性擬合求出線性估計模型參數A、B、C。

表1 3 種步長估計模型的比較
最小二乘法擬合是以最小化誤差平方的思路來得出數據的最佳匹配函數,利用最小二乘法可以擬合出未知數據,并使其與實際數據之間誤差的平方和最小[6]。
步長線性估計模型可表示為:

假設有n 組實驗數據(n 至少為3),每組數據都是由GPS 和步數計算的步長、步頻F、加速度方差SV組成,設A、B、C 為參數X,并給定估值,組成n 個觀測方程,利用最小二乘間接平差的原理,可得出以下公式:

A0、B0、C0為近似值,根據最小二乘原理,VTV=min,最優解為,參數協方差
根據實驗得出步行狀態模型參數結果,考慮到實際情況,用戶在使用計步軟件之前一般不會專門做實驗來求出精確步長模型,所以本文設計了一個通過后期訓練方式的模型建立算法。前提條件是用戶首次使用定位軟件是在GPS 信號良好的情況下進行,因為融合定位需要GPS 定位結果作為初始值。用戶在GPS 定位精度較高的情況下,行走一段距離,記錄步數和每一步的加速度方差及步頻等參數,然后通過距離和步數計算步長,最后擬合一次線性步長模型求取A、B、C 的參數值。
算法流程是在室外GPS 信號良好情況下,每5 步估算一次步長L,通過每步的起始位置和結束位置求取GPS 定位距離估算,這里假設5 步步長一樣,并記錄平均加速度方差SV 和平均步頻F;然后每走20 步,擬合一次步長模型,有4 個步長模型方程,計算出參數A、B、C。然后和下一個20 步步長模型求取參數的平均值,當步數積累足夠多時,模型參數會越來越準確,在收斂到一定精度后,就不再繼續模擬,具體流程如圖1 所示。

圖1 后期訓練步行估計模型算法流程圖
在能夠準確測量步數之前,需要了解人體步行瞬間動作。人體步行動作分解如圖2 所示,人體在連續正常行走過程中,總是會按照圖2 流程循環進行。首先是身體向前傾斜,準備邁出左腳,左腳跟離地,即認為是一步起點。身體向前傾斜后會有向下跌倒的趨勢,此時右腳尖會蹬地,以便左腳抬起后邁出,使人體重心前移并上升。然后左腳擺至一步的距離落下,左腳跟著地,重心前移并下降。最后左腳尖著地,右腳往前收回,直至與左腳平行,計作一步。下一步是右腳繼續向前邁出,重復上述動作[7]。

圖2 人體步行動作分解
目前,計步器得到了廣泛的研究和應用。早期是計步器硬件,隨后是手機等移動設備的計步功能,到現在流行的穿戴設備如手環計步等,其原理都是通過采集加速度傳感器的數據,進行數據的峰值檢測。
鑒于人體行走時,手機的姿態是隨機的,手機的三軸加速度不能取某一軸來代表豎直方向的加速度變化,所以應隨三軸加速度數據取模,利用三軸的合加速度進行步態分析。步行狀態加速度數據有明顯的周期性變化,而且一個周期剛好是一步,一步的周期里有一個大波峰、一個小波峰以及一個波谷,所以只要能檢測出一段時間內的大波峰數量,就可以估算步數。
本文的計步原理是通過設置一個檢測窗口,計算窗口內的合加速度方差,然后根據設定閾值,判斷該窗口內步行的行為,從而判斷是否為一步。根據人體步行規律,此處設置2 種閾值:一種是檢測是否達到大幅邁步時期的加速度方差閾值T1,另一種是檢測是否達到腳和地面接觸站立時期的加速度方差閾值T2[8]。
其算法步驟如下。
第一步,每個采樣點都要求算出合加速度ai:

第二步,計算滑動窗口w(w=15)內的合加速度平均值:

第三步,計算w 窗口內的方差:

第四步,判斷是否達到了閾值T1和T2。
判斷為一步必須滿足以下2 個條件:①邁步時期必須是從高加速度向低加速度轉變;②在當前樣本i之前窗口大小w 之中,至少有一個低加速度被檢測到。
考慮到人體步行或跑步的情形下,正常人的步頻會在1~5 Hz 范圍內變化,也就是0.2~2 s 走一步,如果某一步的步頻不在此范圍,可以認為是錯誤判斷,這樣可以提高計步的準確度。而且根據香農定理,采樣頻率應至少達到最大頻率的2 倍。
本實驗分別行走了具備不同路面的路段,標準步數為100 步,均是直線行走,為了驗證本文計步算法的性能,實驗測試了5 組,結果如表2 所示。
從統計結果來看,本文計步算法準確性較好,平均準確率為97%,平均誤差為-1.4%,最大誤差僅為-6.0%,充分驗證了本步數探測算法能夠有效地探測步數。但本算法很難避免錯誤計步,可能是因為手機在其他情況下,也會計步,比如手動搖晃,計步算法也會增加步數。但總體來說,該計步算法能夠滿足融合定位的行人航跡推算要求。

表2 步數探測實驗
本文介紹了步長估算模型的原理,通過最小二乘法擬合線性步長模型。介紹了人體步行規律和計步器的原理,設計了一種適合智能手機融合定位算法的步長模型,通過實驗驗證,證明本步長模型能夠滿足融合定位中行人航跡推算的要求。