鄧 平,趙榮鑫,朱飛翔
(西南交通大學(xué) 信息編碼與傳輸四川省重點實驗室,成都 610097)
隨著信息技術(shù)的飛速發(fā)展和智能設(shè)備的廣泛普及,基于位置的服務(wù)(Location Based Service,LBS)逐漸成為社會生活的研究熱點[1,2]。得益于半導(dǎo)體技術(shù)的發(fā)展,如加速度傳感器、陀螺儀、磁力計等微型傳感器已廣泛集成于智能手機中,結(jié)合慣性導(dǎo)航技術(shù),基于智能手機的行人導(dǎo)航定位技術(shù)受到越來越多的關(guān)注。
目前,較多的研究集中在傳感器的校準(zhǔn)以及如何提高行人定位導(dǎo)航的精度,對于行人導(dǎo)航過程的運動行為狀態(tài)要求比較苛刻,即只能前進,難以滿足一些實際應(yīng)用中可能出現(xiàn)的左右跨步、后退等運動狀態(tài)下定位的需求。Limin Xu 等人[3]設(shè)計了一種基于神經(jīng)網(wǎng)絡(luò)的智能手機模式識別算法,在手持,通話及甩手模式下識別率達到99.45%,但只針對普通行走模式,并未對運動狀態(tài)進行討論。劉宇等人[4]利用人體不同運動時的初始相位來區(qū)分不同的運動狀態(tài),在行走、后退及左右橫走下的定位誤差小于3.2%,但該運動檢測方式欠缺可靠性,檢測能力與運動初始相位強相關(guān)。Itzik Klein 等人[5]通過分析訓(xùn)練集大小及數(shù)據(jù)窗口寬度,利用12 個特征實現(xiàn)基于口袋、手持、通話和甩手模式下95%的分類準(zhǔn)確率。Katsuhiko Kaji 等人[6]考慮腰部的旋轉(zhuǎn)導(dǎo)致人體運動方向與手機方向不一致,利用加速度及角速度平面分量來抵消腰部旋轉(zhuǎn),從而實現(xiàn)非直線運動狀態(tài)下的方向糾正,但針對的運動模式比較簡單,且定位的準(zhǔn)確性難以保證。殷曉玲等人[7]提出包含行走、跑步、騎行在內(nèi)的動作識別,但對于實際的二維平面內(nèi)運動模式考慮并不完善。因此,完善并準(zhǔn)確識別行人定位過程中復(fù)雜的運動狀態(tài),并將其與行人慣性導(dǎo)航技術(shù)相互結(jié)合,對當(dāng)前行人自主定位導(dǎo)航技術(shù)的發(fā)展具有重要意義。
對于在多種運動狀態(tài)下的行人定位導(dǎo)航技術(shù),傳統(tǒng)的行人航跡推算(Pedestrian dead reckoning,PDR)算法由于沒有對行人運動狀態(tài)進行完善的識別,因而沒有在PDR 過程中進行約束和修正,導(dǎo)航軌跡往往難以契合實際路線,產(chǎn)生不易預(yù)估的較大誤差。為此,本文充分考慮人體不同運動方式及規(guī)律,提出一種基于人體運動狀態(tài)識別的二維自主PDR 定位算法,并應(yīng)用于智能手機實現(xiàn)行人定位,定位系統(tǒng)框架如圖1所示。
圖1 PDR 算法系統(tǒng)框架Fig.1 PDR algorithm system architecture
首先將二維空間內(nèi)行人的運動分為行走、跑動、左跨步、右跨步和后退5 種狀態(tài),利用智能手機作為定位設(shè)備,通過改進傳統(tǒng)的峰值檢測法,實現(xiàn)適用于復(fù)雜運動狀態(tài)的步頻檢測及計步;接著構(gòu)建基于線性支持向量機(Support Vector Machine,SVM)的多分類器,完成運動狀態(tài)的初步識別;然后提出基于人體運動規(guī)律的相鄰步態(tài)約束法,對分類結(jié)果進行校正,實現(xiàn)高精度的運動狀態(tài)識別;最后,基于識別結(jié)果對傳統(tǒng)PDR 算法進行改進,并進行航向糾正,實現(xiàn)二維平面下基于運動狀態(tài)識別的行人導(dǎo)航定位。
智能手機內(nèi)置加速度計的輸出頻率范圍為15-200 Hz[8],本文采用50 Hz 作為手機輸出頻率。將采集的三軸加速度數(shù)據(jù)按式(1)合并得到合加速度模值:
其中:a為合加速度模值;ax、ay、az分別為x軸、y軸、z軸加速度,g為重力加速度,大小為9.8 m/s2。
目前智能手機多采用價格低廉的慣性傳感器,存在較大噪聲,若將其輸出信號直接進行步態(tài)檢測則會嚴(yán)重影響計步的精度。常見的用于減小加速度計噪聲的濾波技術(shù)有低通濾波、移動均值濾波以及卡爾曼濾波等。由于理想加速度波形呈連續(xù)性變化,且加速度計主要噪聲來自于隨機噪聲,因此本文采用移動均值濾波法[9]對濾除重力的合加速度數(shù)據(jù)進行預(yù)處理。本文通過實驗結(jié)果分析,發(fā)現(xiàn)當(dāng)濾波窗口大小N取值為3 時濾波效果最佳且不影響實際運動波形。
傳統(tǒng)的波峰檢測法通過搜尋單步內(nèi)的波峰與波谷,并利用間隔去除偽波峰/谷,再結(jié)合零點交叉法即可實現(xiàn)正常步態(tài)下步頻檢測,在類似于正弦波運動(如行走、慢跑)下能實現(xiàn)較好的檢測效果。但是,在本文所涉及的左右跨步及后退等運動狀態(tài)下,該方法檢測的運動波形通常不存在明顯的波谷,因此傳統(tǒng)的峰值檢測無法正確檢測步頻。為此,本文提出一種改進的單峰值檢測法及零點搜尋規(guī)則,實現(xiàn)基于多種運動狀態(tài)下均適用的步態(tài)檢測方法,其流程如圖2所示。
圖2 單峰值步態(tài)檢測Fig.2 Detection of single peak
1)單峰值檢測
鑒于本文所研究的部分運動狀態(tài)下合加速度波形無明顯波谷,本文采用以下單波峰檢測方法實現(xiàn)能通用的行人步態(tài)檢測,即舍去波谷,只需通過波峰完成單步步態(tài)檢測,如圖3 中所示。圖中,p數(shù)組表示有效波峰,k為p的索引,peak_index表示波谷所在加速度數(shù)組a中的索引。本文所設(shè)置的峰值閾值1σ為2 m/s2。波峰之間最小間隔2σ為15 個樣本間隔。
2)零點檢測的改進
步頻是步長估計需要的重要特征之一,在基于腰部的行人慣性導(dǎo)航技術(shù)常通過零點檢測來完成步頻的統(tǒng)計。本文則在單峰值檢測下進行零點判斷,以單步波峰為基準(zhǔn),其靠前搜尋的第一個零點即標(biāo)定為該步左零點,右零點則為該步波峰靠后搜尋的第二個零點。為抑制噪聲影響,本文設(shè)置零點最大搜索范圍,左右零點最大搜索范圍分別為12 和25 個采樣點間隔。
通過多次實驗測試,本文的單波峰檢測法在本文所研究的多種運動模式下均能實現(xiàn)100%正確檢測率,檢測效果如圖3所示。
圖3 多運動步態(tài)檢測Fig.3 Detection of step
1)線性SVM 原理
支持向量機(SVM)是一種二分類模型,由Vapnik等人提出并迅速發(fā)展起來的一種基于統(tǒng)計學(xué)習(xí)理論的機器學(xué)習(xí)算法,它的核心思想是通過構(gòu)建超平面函數(shù),正確地將樣本數(shù)據(jù)集進行劃分。假設(shè)現(xiàn)有樣本數(shù)據(jù)集其中表示第i個特征向量,表示的類標(biāo)記,其符號用于區(qū)分不同實例,樣本點表示為。超平面決策邊界函數(shù)為:
式中,γ為第i個樣本點到超平面的距離。對于滿足條件的(,)w b,還需增加邊界函數(shù)約束,防止最大分類間隔空間內(nèi)存在數(shù)據(jù)點:
式(5)中,M為懲罰因子。同時需滿足式(6)約束條件:
通過優(yōu)化算法求解便可得到滿足最優(yōu)超平面的(,)w b,即可通過式(7)進行樣本分類:
2)SVM 多分類器
鑒于本文需要實現(xiàn)人體多種運動狀態(tài)分類,而SVM 是一個二分類器,因此需要訓(xùn)練多個SVM 模型完成多分類模型。常見的多分類方式有一對多(One-Versus-Rest,OVR)及一對一(One-Versus-One,OVO)兩種。假定有m個類,OVR 需要訓(xùn)練m個二分類器,對于構(gòu)建某類分類器,將其對應(yīng)數(shù)據(jù)標(biāo)簽設(shè)為+1,其余數(shù)據(jù)標(biāo)簽設(shè)為-1,最后通過投票的方式統(tǒng)計得票最多的類作為此分類識別的結(jié)果;OVO 則是每兩個類都訓(xùn)練一個分類器,即總分類器個數(shù)為m(m-1)/2,最終同樣通過投票的方式?jīng)Q定分類的結(jié)果。結(jié)合本文使用場景,OVO 在訓(xùn)練單個模型時較OVR快,且在新增運動狀態(tài)時,只需要重新訓(xùn)練和增加新運動樣本相關(guān)的分類器即可,因此本文選用OVO 模型解決多分類問題。
在這里特征指的是對數(shù)據(jù)的統(tǒng)計量,合適的特征選擇對分類算法起到至關(guān)重要的作用。常見的特征類型可分為時域特征、頻域特征和時頻特征。頻域特征常利用諧波分析法(如傅里葉變換)獲取,因此計算量較大,而時域特征則一般利用簡單的基本運算即可獲取。由于本文采用智能手機作為實際應(yīng)用設(shè)備,考慮計算的復(fù)雜性及實時性要求,本文僅對時域特征進行提取并分析,生成特征矩陣,進而完成SVM 分類器的構(gòu)建。
1)特征提取
特征選擇決定識別準(zhǔn)度,不同分類數(shù)據(jù)只有在某種特征下存在明顯的差異才能通過數(shù)學(xué)手段將其進行區(qū)分。本文通過對加速度計輸出的三軸加速度及預(yù)處理后的合加速度進行特征提取,將均值、絕對值均值(先進行數(shù)據(jù)絕對值化再求其均值)、方差、眾數(shù)、最大值、最小值、四分位距、三四分位距、互相關(guān)系數(shù)、偏度、峰度、平均絕對誤差作為基本時域特征,通過標(biāo)記F1~F47依次標(biāo)記以上不同特征,每種特征按x軸、y軸、z軸和合加速度順序進行編號,其中互相關(guān)系數(shù)編號順序分別表示x軸與y軸、x軸與z軸、y軸與z軸加速度互相關(guān)系數(shù)。此外,還引入Hjorth 參數(shù)的中間變量M4[10]作為特征F48~F51,自定義x軸加速度特征(1)f作為特征F52:
其中,N為單個窗口采樣點數(shù),在特征分析時,每2 s時間的采樣數(shù)據(jù)作為一個窗口。
2)特征篩選
一般來說,在分類器的構(gòu)建過程中,特征數(shù)量與分類識別的正確率呈正相關(guān),但隨著特征數(shù)據(jù)量的增多,分類識別的計算復(fù)雜度也相應(yīng)增加,且若存在較多無效特征,將會嚴(yán)重影響識別結(jié)果的準(zhǔn)度。因此特征的選取對分類器的性能和分類識別的正確率至關(guān)重要。本文將上述提取的特征進行逐一篩選,將類似圖4所示能夠有效區(qū)分至少一種運動狀態(tài)的特征進行統(tǒng)計,如表1所示,篩選后共計特征數(shù)量為34。
圖4 加速度x 軸(1)f 值Fig.4 (1)f for the X-axis acceleration
表1 有效特征Tab.1 Valid features
特征矩陣構(gòu)建完畢之后,若模型尚未建立,則進行分類模型的建立;若已存在模型,則可直接以訓(xùn)練好的分類器進行分類識別,模型的建立與分類識別流程如圖5所示。
圖5 SVM 分類流程Fig.5 Classification flow chart of SVM
為了將分類算法與室內(nèi)行人慣性導(dǎo)航技術(shù)結(jié)合,實現(xiàn)行人在多運動狀態(tài)下的室內(nèi)定位,實際應(yīng)用時手機需要動態(tài)處理傳感器采集的數(shù)據(jù),本文研究了不同寬度的數(shù)據(jù)處理窗口對分類結(jié)果的影響,以尋找滿足定位實時性要求的最優(yōu)數(shù)據(jù)處理窗口。實驗中,實驗人員共采集8 組數(shù)據(jù),保證每組數(shù)據(jù)中每種動作狀態(tài)數(shù)據(jù)采樣時間不低于1 min,采取交叉驗證思想,根據(jù)本文所構(gòu)建的SVM 多分類器得到相應(yīng)分類正確率,并計算在不同窗口寬度下的平均識別正確率,如表2和圖6所示。表2 中實驗序號即代表該次實驗以此樣本作為訓(xùn)練集,其余樣本為測試集。當(dāng)窗口寬度大于1 s 時,識別率沒有明顯上升趨勢,平均識別率均不低于98%??紤]在實際運動場景中,單個數(shù)據(jù)窗口采樣時間內(nèi)可能存在運動切換過程,但識別算法的局限性在于只能將其區(qū)間判斷為單種運動狀態(tài)。因此,數(shù)據(jù)窗口選擇時應(yīng)該盡量小,通過實驗對比,本文選取的用于運動狀態(tài)分類的最優(yōu)窗口寬度為1.5 s。
表2 運動識別的識別率Tab.2 Recognition rate of motion recognition
圖6 不同窗口下平均識別率Fig.6 Average recognition rate under different window sizes
圖7 測試集SVM 預(yù)測結(jié)果對比Fig.7 SVM prediction results
本文所構(gòu)建的SVM 多分類器正確識別率已達到98%以上,基本滿足運動狀態(tài)識別的要求。但就本文所研究的目標(biāo)重在行人室內(nèi)定位中的應(yīng)用,且慣性定位技術(shù)的弱點主要在于難以有效消除累計誤差,因此高精度的運動狀態(tài)識別是實現(xiàn)多運動狀態(tài)下長時間室內(nèi)準(zhǔn)確定位的關(guān)鍵。圖7 是某次測試樣本的分類預(yù)測效果,在識別序列中,個別錯誤識別編號呈現(xiàn)突變情況,本文為此提出以下考慮人體運動規(guī)律的相鄰步態(tài)相關(guān)性約束算法,實現(xiàn)個別錯誤識別的糾正。
圖8 運動狀態(tài)修正Fig.8 Correction of motion state
基于行人日常運動規(guī)律,正常情況下,行人在超短時間內(nèi)進行多次動作切換的概率極小,為此本文假設(shè)行人在1.5 s 的窗口大小時間內(nèi)做出最多一次運動狀態(tài)切換?;谏鲜黾僭O(shè),本文采用相鄰窗口步態(tài)約束法,通過當(dāng)前估計運動狀態(tài)來糾正前一窗口運動狀態(tài),從而糾正個別編號錯誤識別。設(shè)連續(xù)相鄰的四個窗口的估計運動類型分別為W1、W2、W3、W4,當(dāng)前窗口為W4,待修正窗口為W3,需修正的目標(biāo)如圖8中①、②所示。W3修正條件如下:
③其余情況不進行修正。
通過步態(tài)約束,糾正前后分類識別率對比如圖9所示。糾正后,平均正確識別率達到99.37%,接近100%。
圖9 步態(tài)約束前后識別率對比Fig.9 Comparison of recognition accuracy before and after gait constraint
傳統(tǒng)的PDR 算法如式(10)所示,該算法利用慣性傳感器計算人的步長和方向,從而推測行人在建筑內(nèi)的蹤跡:
式中,()X k和()Y k表示行人第k步在二維導(dǎo)航平面的位置,表示第k步的航向,表示第k步的步長。結(jié)合傳統(tǒng)PDR 算法,本文提出式(11)所示行人多運動狀態(tài)航跡推算算法:
步長是影響定位準(zhǔn)確性的關(guān)鍵因素之一,常見步長模型包括線性步長模型、非線性步長模型和人工智能步長模型。由于人工智能步長模型計算復(fù)雜度較高,鑒于本文已通過SVM 來實現(xiàn)運動狀態(tài)分類,具有一定計算復(fù)雜度,因此采用計算簡單,易訓(xùn)練的線性/非線性步長模型組合方式估計步長。對于行走,跨步及后退狀態(tài)均為低中速運動,步頻較低,因此采用式(12)表示的由步頻及加速度方差決定的線性步長模型。對于跑動狀態(tài),其步頻較高,因此采用式(13)所示只由加速度極值決定的Weinberg 非線性步長模型[11]。
式中,L表示步長,為第k步步頻,var()a表示單步合加速度方差,A、B 和C 為常數(shù),通過訓(xùn)練得到。
航向角的準(zhǔn)確解算是保證定位精度的重要因素,航向的偏差將會直接導(dǎo)致定位軌跡的偏移,從而嚴(yán)重影響定位的結(jié)果。四元數(shù)法計算量較余弦法和歐拉法小且精度較高,因此工程中常用來作為捷聯(lián)慣導(dǎo)系統(tǒng)姿態(tài)更新,該方法可以表示為:
利用陀螺儀獲取角速度,通過變換矩陣得到導(dǎo)航坐標(biāo)系下角速度數(shù)據(jù),再將z軸角速度進行積分,即可得到航向角。由于行人手持手機時,不能總是保證手機水平放置,因此航向角與實際轉(zhuǎn)向角存在偏差。本文基于行人主要沿主航向前進的假設(shè),引用基于緩存區(qū)改進HDE 算法[12]進行航向補償,提高航向解算的精度。在本文中,主方向區(qū)間為30°,即共設(shè)置12個主方向,反饋系數(shù)設(shè)置為0.01。
本文以蘋果公司生產(chǎn)的iPhone 6s 作為傳感器數(shù)據(jù)采集測量工具和定位平臺,在實驗過程中,實驗者通過手持手機(具體使用方式如圖10所示)進行基于多運動狀態(tài)的定位實驗。實驗中行人運動方式包含行走、跑動、左跨步、右跨步以及倒退。
圖10 智能手機的手持方式圖Fig.10 The usage pattern of smartphone
圖11 多運動下定位軌跡Fig.11 Multi motion positioning trajectory
圖11 為基于人體狀態(tài)識別的PDR 定位軌跡圖,行程為從起始點出發(fā)經(jīng)矩形軌跡,最終返回起始點。從圖11 中可以看出,本文所提的運動狀態(tài)識別算法在實際定位過程中運動狀態(tài)區(qū)分度明顯,幾乎無狀態(tài)相互紊亂現(xiàn)象。定義定位誤差為起始點與軌跡終點之間距離占總運動距離的百分比。通過對定位結(jié)果進行誤差分析,在本文所提出的基于人體多運動狀態(tài)的PDR算法下,進行全長約262 m 的矩形路線實驗中,起始點與軌跡終點距離為3.42 m,定位誤差為1.28%。為進一步驗證本文算法的有效性和可靠性,本文分別在矩形路線以及弧形路線下進行了不同軌跡解算算法對比實驗,對比結(jié)果如圖12 和圖13所示。
圖12 和圖13 分別為矩形路線和弧形路線下不同軌跡解算算法對比圖,其參考路徑長度分別約為262 m 和400 m。從圖12、13 中可見,傳統(tǒng)PDR 定位算法由于沒有區(qū)分左右跨步和倒退行走等運動狀態(tài),在矩形路線以及弧形路線下均嚴(yán)重偏離實際路線,其在矩形路線和弧形路線下的距離誤差分別為31.80 m和40.39 m,即定位誤差分別為12.14%和15.42%,均不能達到日常精確定位需求。而本文提出的基于人體多運動狀態(tài)識別的PDR 算法在矩形路線和弧形路線下的距離誤差分別為4.20 m 和5.21 m,定位誤差分別為1.60%和1.30%,遠遠低于傳統(tǒng)PDR 定位誤差。
圖12 矩形場地下不同軌跡解算算法對比Fig.12 Comparison of different trajectory algorithms in rectangular field
圖13 弧形場地下不同軌跡解算算法對比Fig.13 Comparison of different trajectory algorithms in arc field
本文提出一種基于人體運動狀態(tài)識別的PDR 算法。利用智能手機作為數(shù)據(jù)采集測量工具,針對多運動狀態(tài)下傳統(tǒng)峰值檢測法的計步方法的不足,提出基于合加速度的單峰值檢測法,并結(jié)合改進的零點檢測法獲取精準(zhǔn)步數(shù)及步頻。對加速度進行時域特征提取和分析,并引入額外特征,通過特征篩選,構(gòu)建線性SVM 多分類器,在此基礎(chǔ)上提出基于行人日常運動習(xí)慣的步態(tài)約束法進行狀態(tài)識別結(jié)果糾正,從而實現(xiàn)高準(zhǔn)確率的運動狀態(tài)識別。通過提出一種基于人體運動狀態(tài)識別的PDR 改進算法實現(xiàn)二維平面內(nèi)行人精準(zhǔn)導(dǎo)航定位。實驗結(jié)果證明,基于本文提出的行人運動狀態(tài)識別方法,可實現(xiàn)平均99.42%識別正確率,并解決了左右跨步以及倒退狀態(tài)與行走狀態(tài)難以分類識別的問題。本文最終實現(xiàn)在多運動狀態(tài)下定位誤差優(yōu)于2%的基于人體運動狀態(tài)識別的定位算法,定位實現(xiàn)簡易快捷,為行人多種運動狀態(tài)下的室內(nèi)準(zhǔn)確定位導(dǎo)航打下了良好基礎(chǔ),在消防等室內(nèi)定位領(lǐng)域具有廣闊的應(yīng)用前景。