唐 嫻
(商丘學院計算機工程學院 河南 商丘 476000)
隨著人們對位置服務需求越來越大,無論基于GPS還是基于北斗的室外定位服務均已在現實生活中被廣泛應用。然而,每當人們進入到室內后就會發現定位精度逐漸降低,這是因為基于GPS或北斗的定位服務在室內受非視距和多徑效應影響導致衛星信號衰減較大。因此,室內定位服務質量問題已成為新一輪研究趨勢。移動手機是現代社會發展最快的產業,其感知前端具有多傳感器融合、多媒體信息傳輸和存儲等優點,可以直接利用移動手機中內置的慣性傳感器[1]進行行人航位推算(Pedestrian dead reckoning,PDR)[2],以此來實現較為精準的室內定位服務。
如果僅利用手機內置慣性傳感器(主要包括加速度傳感器、陀螺儀、方向傳感器、磁力計等)進行定位推算,將易造成累積誤差,會導致定位結果精度和可靠性偏低,所以需要將不同的定位技術進行融合來得到更高的定位精度。Li等[3]提出了將慣性傳感器、Wi-Fi和地磁定位技術進行融合,除了需要在行人航位推算中消除累積誤差,還需要考慮實際應用中室內人員的非步態干擾和手機設備的抖動等,使得采集的多種傳感器信號易產生漂移和失真,即使PDR算法精度很高,也無法消除信號強度失真造成的定位誤差,所以必須對采集到的信號進行濾波去噪處理。唐士凱等[4]利用單一的Kalman濾波對信號進行處理,然而這種濾波方法對信號波動明顯的采樣點效果不明顯,也會制約Kalman濾波的收斂速度。
針對多傳感器中信號易受室內復雜環境、人員非步態干擾及自身漂移影響,導致的定位精度低、實時性差和魯棒性不強等問題,本文提出一種改進的Kalman濾波多傳感器室內定位方案。方案的主要思想包括以下幾點:(1) 由于GPS或北斗的定位服務在室內定位上誤差較大,故本文利用智能手機中自帶的方向傳感器和加速度傳感器可實現較精準的短距離室內定位服務。(2) 采用PDA算法實現行人室內定位,而該算法在計算行人位置前需先估算行人步伐長度和統計行人移動的步數,由于室內定位是短距離定位,采用常數模型即可滿足步長估算需要。(3) 步數統計通常采用三軸加速度矢量和的方法計算,但是由于直流分量和隨機噪聲使得加速度的測量結果不準確(直流分量可以在系統初始化時對加速度傳感器進行多次測量,然后再利用均值的方法預先加以矯正,所以加速度不準確的原因是隨機噪聲),因此采用Kalman濾波消除隨機噪聲,原因是Kalman濾波具有最優化自回歸數據處理算法的特點,可以有效消除人員擾動、信號多徑效應等因素引起的信號噪聲。(4) 考慮到Kalman濾波在噪聲較大時會導致收斂速度變慢、數據穩定性變差等問題,因此在Kalman濾波的基礎上結合均值濾波的方法進行改進,對干擾幅度較大、瞬時的脈沖信號具有較好的濾波消除效果。實驗仿真說明,本文方案獲得了更高的定位精度和魯棒性更強的定位效果,對加速度處理、步數檢測、定位精度及系統魯棒性有一定的改善作用。
多傳感器融合的室內定位方法主要采用移動手機內置的方向傳感器和加速度傳感器來實現。其中:方向傳感器為用戶提供以正北方向為基準的磁偏角,能直接作為PDA的基本角度數據;加速度傳感器能為用戶提供實時的加速度數據并顯示行人的運動狀態。將兩者信息經過PDA算法即可得到行人運動軌跡,其原理如圖1所示。

圖1 行人航位推算算法原理圖
已知行人t0時刻的初始位置為(X0,Y0),Ln表示tk時刻的步伐長度,θn表示tk時刻航向角,則tk時刻的位置為:
(1)
可見,直接影響室內定位PDA精度的主要因素有初始位置坐標、磁力計的航向數據、計步數據的準確性,以及可靠的步長估計模型。
由于人體的長時間內行為習慣及路面情況的多變性,造成了步長估計困難。通常行人步長估計模型主要有常數模型、線性模型和非線性模型三種。
(1) 常數模型:
L=A
(2)
通過預期對大量的已知長度的步伐進行測量,比較建模后得出一個在短距離估計下的步長平均值A。
(2) 線性模型:
L=a+bf+cv+γ
(3)
式中:a、b、c為通過訓練求解得出的線性回歸參數;f為當前的周期頻率值;v為當前步伐加速度的方差;γ為高斯噪聲[5]。但由于環境因素的干擾及智能手機系統存在一定的延誤,會造成步伐頻率和加速度統計量的誤差和不規律性。
(3) 非線性模型:
(4)
式中:amax和amin分別表示三軸加速度的最大值和最小值;K為模型參量[6],針對不同行人的不同環境情況建立不同非線性模型,其模型參量K值也不同。
由于采用變步長會增加算法時間復雜度,且所給方案主要研究濾波算法對多傳感器融合的室內定位精度的提高,是在短距離內對行人信息的采集和定位,所以選用常數步長估計模型就能滿足本文方案的步伐長度估計要求。選取10名成年志愿者對其在正常狀態下多組步伐長度進行測量,得出步伐長度均在0.5~0.7 m之間,因此本文方案步伐長度取值為L=0.6 m。
所給方案引入X、Y、Z三軸加速度參數來研究行人步數特征,通過計算三軸加速度矢量和的方法來進一步統計行人步數:
(5)
理論上,行人在靜止情況下,手握手機設備進行數據獲取,得到的三軸加速度矢量和應等于重力加速度g。但是在實際測量中,手機內置的多種傳感器檢測精度有限[7],且存在行人非步態動作的干擾,在靜止狀態測得的加速度數據也會出現輕微的抖動現象,如圖2所示。經多次測量得出加速度傳感器采集X、Y、Z三軸方向上的加速度,其受非步態干擾的波動范圍約為0.3 m/s2。為降低以上干擾數據的影響,PDA算法首先應對原始加速度數據進行預處理。

圖2 靜止狀態下三軸加速度以及矢量和曲線圖
為了進一步統計行人步數,在運動過程中引入上述三軸加速度矢量和A,其值在重力加速度g附近上下波動且具有周期性。因此,所給方案采用設置上下閾值來確定加速度矢量和的波峰波谷。假定選取的上閾值為(g+f)、下閾值為(g-f),對閾值上下值進行分級處理[7]:
(6)
式中:i為采樣點個數;Ai表示第i個樣本點經過預處理濾波后的加速度矢量和,其中g=9.8 m/s2;f=Ai-g∈[Amin,Amax],即為加速度矢量和減去重力加速度,考慮到運動過程中非步態及其他運動動作的干擾,f取值為0.5[8]。
根據行人步伐特征,只有當連續檢測到的狀態為“波峰狀態-過渡狀態-波谷狀態”時,才能將其判斷為一個有效的步數周期,以此來統計行人的步數。
針對多傳感器在信息采集階段易受行人非步態干擾的問題,直接采集加速度傳感器數據而不做任何處理,即使在靜止狀態下也會出現跳躍不穩定或推擠現象,使得讀取的數據波動明顯、誤差大且穩定性差,因此在采集階段,利用Kalman濾波器對非步態特征下的數據進行最優預測,消除線性隨機微分系統和測量過程產生的高斯白噪聲。
Kalman濾波算法是一種線性最小方差估計,其主要過程包括預估與校正,以最小均方誤差為最佳估計準則,建立信號和噪聲狀態空間模型,利用前一時刻的估計值和當前時刻的觀測值來更新對狀態變量的估計,求出當前時刻的估計值[9],具有最優化自回歸數據處理算法的特點。其思想流程如圖3所示。

圖3 Kalman濾波流程
圖3中,E、F為系統參數;U(k)是k時刻對系統的控制量;Z(k)是k時刻的測量值;H是測量系統的參數;W(k)和V(k)分別表示過程和測量的噪聲;Q和R分是過程噪聲和觀測噪聲的協方差;U(k)為現在狀態的控制量。
由于加速度傳感器的測量在實際環境中存在人員擾動及其他設備的干擾,使得加速度傳感器讀出的數值和真實加速度存在一定的偏差,其影響測量結果的因素主要包括直流分量和隨機噪聲,即:
A′=a+a′+n
(7)
式中:A′為測量加速度值;a為真實加速度值;a′為直流分量;n為隨機噪聲。在系統初始化時,對加速度傳感器進行多次測量,利用均值的方法預先對直流分量加以矯正[10]。但由于隨機噪聲的不可測量性,無法采用多次實驗進行預先矯正,所以所給方案采用Kalman濾波方法消除隨機噪聲,其過程建立如圖4所示。

圖4 加速度信號濾波流程
根據以上條件得到加速度信號采集系統狀態模型如下:
(8)
(9)
同理可得Y軸和Z軸加速度信號采集系統狀態模型為:
(10)
(11)
(12)
(13)
在實驗室環境下,采用華為榮耀8X智能Android手機作為測試機,已知初始位置信息,打開采樣App,其加速度傳感器采樣頻率為100 Hz,行人步伐頻率約為0.8 Hz。將手機平拿到距離地面1.2米左右高度按照預定路線勻速移動,實際行走步數為30步,對采集到的X、Y、Z三軸加速度進行Kalman濾波處理后,求取三軸加速度矢量和,再根據閾值分級的步態檢測方法,得出經Kalman濾波處理后的行人步數值。其濾波結果如圖5所示。

(a) Kalman濾波前后加速度矢量和對比

(b) Kalman濾波后的閾值分級圖(步數統計為37步)圖5 Kalman濾波處理前后效果圖
未經Kalman濾波處理前的加速度矢量和噪聲波動大,經閾值分級步態檢測方法得到步數統計值為48步,與實際行走步數值相差較大。
由圖5可知,將Kalman濾波應用在多傳感信號處理上,可以有效濾除由于人員擾動、信號多徑效應等因素引起的信號噪聲,其步數統計值為37步,提高了步數檢測精度。但在加速度數據噪聲過大時,其收斂速度變慢,且數據穩定性也較差。
上述算法單獨使用Kalman濾波處理加速度,對于數據輸出波動明顯的采集點,在環境干擾下產生的噪聲較大時會直接減慢Kalman濾波的收斂速度,使數據穩定性變差[11]。所以,結合系統響應速度及濾波效果,將濾波算法作改進,結合均值濾波對干擾幅度較大、瞬時的脈沖信號具有較好的消除效果。采用多次濾波算法作為加速度數據的預處理,以均值濾波中連續N次采集數據為一組,進行一次濾波,將濾波結果作為Kalman濾波的輸入量,進行二次濾波,得到穩定性、可靠性、實時性更好的濾波效果。
經典均值濾波基本原理如下:
(14)

該算法針對連續采樣得到的數據,首先定義一個固定長度為M的觀察窗,每次將新采集到的樣本點數據放入隊首,并將隊尾的數據刪除,計算觀察窗中最新的M個數據的平均值作為濾波后的結果,其基本工作原理如圖6所示。

圖6 均值濾波器基本原理圖
在多傳感器信號采集階段,考慮到濾波效果和算法對內存的消耗會影響運行時間,因此對加速度傳感器測得的X、Y、Z三軸加速度分別取M=10、M=15和M=20做均值濾波處理,以均值濾波處理后的數據作為一次測量值再利用Kalman濾波進行遞歸運算,求取出三軸加速度矢量和及行人步數值。其實驗結果如圖7所示。

(a) M=10時,步數檢測為31,運行時間為2.397 670 s

(b) M=15時,步數檢測為30,運行時間為2.404 433 s

(c) M=20時,步數檢測為24,運行時間為2.411 707 s圖7 不同M取值下的加速度矢量和及步數檢測值
對比圖7(a)-圖7(c)可知,當M取10~20時,隨著M增大,濾波算法對加速度結果的優化效果越明顯,但當M取20時,會丟失掉有用的加速度數據。因此,結合濾波效果、步數檢測結果及運行時間,當M取15時,其濾波效果優于單獨使用Kalman濾波,并且得到的步數檢測值為28步,與實際步數值更加接近。綜上,采用均值濾波+Kalman濾波對加速度數據處理,可以有效抑制信號干擾,提高相應速度,降低平均運行時間,提高步數檢測精度,并為實時定位提供更為穩定、平滑的數據值。
根據上述改進Kalman濾波處理,得到優化后的多傳感器室內定位流程[12]如圖8所示。

圖8 多傳感器室內定位流程
實驗區域選用10 m×36 m的辦公區域,其環境平面如圖9所示,包括辦公室和走廊,室內環境復雜度較高。為加大實驗數據,增加路徑二進行數據分析,實際行走步數為30步,其中黑色線路代表路徑一,灰色線路代表路徑二。

圖9 實驗環境平面圖
改進Kalman濾波對路徑一和路徑二的加速度信號做處理,得到優化后的傳感器數據,進行行人航位推算,得到路徑實驗結果對比圖,如圖10所示。

(a) 路徑一

(b) 路徑二圖10 不同濾波處理下的路徑結果對比圖
在行人非步態干擾和傳感器自身測量漂移下,改進的Kalman濾波對加速度處理后得到的定位路徑相比于單一的Kalman濾波處理更加貼近真實路徑,且步數檢測也更加接近真實值。不同濾波處理下的位置誤差累積概率如圖11所示。

圖11 不同濾波處理下的位置誤差累積概率
可以看出,在本次定位處理中,無濾波處理的定位精度較低,在短距離4 m內的定位精度只有26.8%;在經過Kalman濾波處理后,3 m內的定位精度可以達到70.7%,但在2 m內的定位精度只有31.7%;為此,以均值濾波處理后的數據作為一次測量值再利用Kalman濾波進行遞歸運算,其定位精度在2 m內達到了89%,1 m內也能達到68.2%。
Android手機端實時采集信號及定位結果如圖12所示。

(a) 實時信號結果圖 (b)實時定位結果圖圖12 Android端信號采集及定位結果示意圖
將路徑一和路徑二總的采樣點作濾波處理,得到多個待測點進行平均定位誤差、誤差標準差計算,比較定位精度與實時性效果,結果如表1所示。

表1 幾種濾波算法定位精度與實時性的比較
對表1分析可得,改進的Kalman濾波相對于無濾波處理和Kalman濾波,在平均定位精度方面分別提高了84.61%、69.14%;定位最大誤差也在減小,同時定位穩定性也隨著濾波處理方法的改進而增強。但由于改進濾波處理方法的復雜性和多樣性,平均運行時間會有所增加,因此會犧牲一部分運算速度,獲得定位精度更高、魯棒性更強的定位效果。實驗結果表明改進的Kalman濾波算法對加速度處理、步數檢測、定位精度及系統魯棒性有一定的改善作用。
針對多傳感器中信號易受室內復雜環境、人員非步態干擾及自身漂移的影響,本文給出了一種改進的Kalman濾波多傳感器室內定位方案。實驗結果表明,本文濾波算法相較于Kalman濾波算法,在2 m內的定位精度由31.7%提高到了89%,其平均定位精度提高了69.14%,同時運行穩定性也有所加強,但多傳感器信息融合定位在長時間的定位過程中,會出現累積誤差,所以未來可以針對累積誤差進行多種定位方法的融合,進一步提高定位精度和穩定性。