劉玲玉,劉狄松,常鐵原
(河北大學(xué) 電子信息工程學(xué)院,河北 保定 071000)
自從1992年劍橋大學(xué)的Active Badge提出采用紅外傳感技術(shù)開發(fā)的室內(nèi)定位系統(tǒng)以來(lái),室內(nèi)定位技術(shù)取得了很大的發(fā)展。如采用Wi-Fi[1]、藍(lán)牙、ZigBee、超聲 波[2]、超寬 帶[3](UWB)、RFID[4]、慣性 導(dǎo)航等技術(shù)[5]實(shí)現(xiàn)的室內(nèi)定位系統(tǒng)也相繼出現(xiàn),但是至今還沒有一款普遍適用的室內(nèi)定位產(chǎn)品出現(xiàn),為此相關(guān)學(xué)者與研究機(jī)構(gòu)都在努力完善室內(nèi)定位技術(shù)這一局限。近年來(lái)由于智能手機(jī)技術(shù)的進(jìn)步與普及,基于Android的室內(nèi)定位也成為了一個(gè)焦點(diǎn),本文利用智能手機(jī)內(nèi)置的傳感器(如加速度傳感器、磁場(chǎng)傳感器)來(lái)實(shí)現(xiàn)PDR算法,進(jìn)而實(shí)現(xiàn)室內(nèi)定位,同時(shí),為了提高PDR算法的定位精度,對(duì)PDR算法做了優(yōu)化,主要采用卡爾曼濾波和粒子濾波算法,以及本文提出的直線判定這一方法。
PDR算法的實(shí)現(xiàn)主要包括三部分,即步數(shù)檢測(cè)、步長(zhǎng)檢測(cè)、航向檢測(cè)。本文采用改進(jìn)的峰值檢測(cè)法來(lái)進(jìn)行步數(shù)檢測(cè),采用步長(zhǎng)的經(jīng)驗(yàn)?zāi)P蛠?lái)進(jìn)行步長(zhǎng)檢測(cè),航向檢測(cè)則采用Android提供的方法進(jìn)行獲取。具體算法如下:
(1)步數(shù)檢測(cè)
行人在行走過(guò)程中其自身的加速度具有周期性[6],因此,可以根據(jù)這一特性進(jìn)行步數(shù)檢測(cè)。本文實(shí)際測(cè)試的行走過(guò)程中手持的智能手機(jī)的三軸合加速度在7.5~12.5 m/s2之間,實(shí)際編程時(shí)為了獲取充足的樣本數(shù)據(jù)將算法中的合加速的的篩選閾值設(shè)定為[g,3g](其中 g=9.81 m/s2),同時(shí)為了減少因身體抖動(dòng)帶來(lái)的偽波峰的影響,設(shè)定峰值之間的時(shí)間間隔要滿足[0.4 s,1 s](之所以設(shè)定為該區(qū)間,是因?yàn)樾腥说牟筋l通常為 1~2.5 Hz)。智能手機(jī)采集三軸合加速度樣本數(shù)據(jù)只有滿足上述兩個(gè)條件,才會(huì)判定為一步,這也是本文提出的改進(jìn)的峰值檢測(cè)法的主要思想。
(2)步長(zhǎng)檢測(cè)
本文采用線性步長(zhǎng)模型進(jìn)行步長(zhǎng)檢測(cè),算法表達(dá)式如式(1)所示:
其中,l表示步長(zhǎng),單位:m;k、e 為回歸參數(shù);Accmax、Accmin分別為單步周期內(nèi)的行人加速度最大值與最小值(本文指智能手機(jī)三軸合加速度的最值),單位:m/s2。
通過(guò)多次試驗(yàn)采集行走過(guò)程中加速度最值與實(shí)際步長(zhǎng)均值的樣本數(shù)據(jù),再通過(guò)MATLAB軟件線性擬合確定式(1)中的參數(shù) k、e,本文最終的步長(zhǎng)檢測(cè)模型如式(2)所示:
(3)航向檢測(cè)
本文的PDR算法是基于智能手機(jī)進(jìn)行開發(fā)的,而智能手機(jī)中具有多種傳感器能夠?qū)崿F(xiàn)航向的檢測(cè)。之前智能手機(jī)中具有單獨(dú)的方向傳感器,如今已使用加速度傳感器與磁場(chǎng)傳感器替代。并且Android提供了封裝好的方法用來(lái)計(jì)算手機(jī)的方向角度,如本文采用Android提供的getRotationMatrix()和getOrientation()方法來(lái)計(jì)算手機(jī)頂端與正北方向的夾角。
使用PDR算法實(shí)現(xiàn)定位時(shí)除了其本身產(chǎn)生的累積誤差外,行走過(guò)程中產(chǎn)生的波動(dòng)或者身體的抖動(dòng)也會(huì)對(duì)最終的定位結(jié)果產(chǎn)生影響。本文為了提高PDR算法的精度和穩(wěn)定性,提出了兩種優(yōu)化方案,第一種是通過(guò)直線判定的方式來(lái)平滑航向數(shù)據(jù);第二種方案是使用濾波算法對(duì)步長(zhǎng)數(shù)據(jù)和結(jié)果進(jìn)行優(yōu)化。接下來(lái)對(duì)這兩種方案進(jìn)行詳細(xì)闡述:
方案一:直線判定
在同一水平面內(nèi),人們行走過(guò)程中的軌跡大致可分為沿直線行走和曲線行走,其中軌跡為直線時(shí)行人的行走狀態(tài)相對(duì)比較穩(wěn)定,本文針對(duì)這一點(diǎn)對(duì)行人的行走軌跡進(jìn)行判定,如果為直線行走,則對(duì)相鄰的航向進(jìn)行平滑處理,目的是為了減少由于行走過(guò)程中身體的抖動(dòng)對(duì)航向帶來(lái)的影響,進(jìn)而使得直線行走時(shí)的航向趨于穩(wěn)定。直線判定的實(shí)現(xiàn)步驟如下:
通過(guò)實(shí)際測(cè)試,得知在沿直線行走時(shí)(手持手機(jī)于胸前,且手機(jī)頂端指向前進(jìn)的方向),手機(jī)檢測(cè)到的相鄰航向數(shù)據(jù)之間差值的絕對(duì)值不超過(guò)15°,因此,如果相鄰的兩個(gè)航向數(shù)據(jù)之間的差值的絕對(duì)值小于等于15°,那么采用式(3)對(duì)航行數(shù)據(jù)進(jìn)行平滑處理,否則,軌跡為曲線,保持航向數(shù)據(jù)不變。
采用上一步中的閾值進(jìn)行判定時(shí),可能存在突變數(shù)據(jù),該突變數(shù)據(jù)超過(guò)了閾值的范圍,但是它又不屬于曲線行走時(shí)的航向,為了排除該類數(shù)據(jù)所帶來(lái)的影響,需要對(duì)判定為非直線行走的航向數(shù)據(jù)進(jìn)一步篩選,篩選算法如下:
如果θk被判定為非直線行走時(shí)的航向,那么計(jì)算 θk+1與 θk-1之間的差值的絕對(duì)值,若該絕對(duì)值小于等于 15,那么 θk為突變數(shù)據(jù),并且令 θk=θk-1。
方案二:濾波優(yōu)化
方案一主要針對(duì)行走軌跡以直線為主的情形,但實(shí)際情況中還有以曲線為主的軌跡,而方案一不適用于該情況。因此,本文提出了濾波優(yōu)化的方案,主要是針對(duì)行走時(shí)的步長(zhǎng)數(shù)據(jù)和估算結(jié)果進(jìn)行優(yōu)化,進(jìn)而提高PDR算法在軌跡為以曲線為主時(shí)的定位精度。采用卡爾曼濾波算法平滑處理步長(zhǎng)數(shù)據(jù),粒子濾波算法對(duì)結(jié)果進(jìn)行優(yōu)化。
本文將卡爾曼濾波進(jìn)行了一定的簡(jiǎn)化,即令A(yù)=B=H=1,U(k)=W(k)=0,Q=0.000 001,R=0.001,同時(shí)令X(0)=0,P(0)=1.0,那么公式相關(guān)表達(dá)式的形式變?yōu)椋?/p>
其中,X(k|k-1)表示第k-1時(shí)刻對(duì)第k時(shí)刻的狀態(tài)的預(yù)測(cè)值;X(k-1|k-1)表示第k-1時(shí)刻修正過(guò)的狀態(tài)的估計(jì)值;P(k)表示第k時(shí)刻狀態(tài)估計(jì)值與真實(shí)值的協(xié)方差;P*(k)表示第k時(shí)刻狀態(tài)預(yù)測(cè)值與真實(shí)值的協(xié)方差;Kg(k)表示第k時(shí)刻的卡爾曼增益參數(shù);X(k|k)表示第k的狀態(tài)估計(jì)值。
通過(guò)式(4)~式(8)對(duì)步長(zhǎng)數(shù)據(jù)平滑處理,再通過(guò)平滑后的步長(zhǎng)數(shù)據(jù)估算行人的位置坐標(biāo)。
粒子濾波優(yōu)化的基本思想是:首先,以前一個(gè)PDR估算的位置為中心,在半徑為 radius(單位:m)的范圍內(nèi)以任意的角度生成N個(gè)點(diǎn),這N個(gè)點(diǎn)稱之為粒子,將它們的初始權(quán)重設(shè)置為1/N,接著這些粒子按下一個(gè)位置的步長(zhǎng)和航向運(yùn)動(dòng),最后將運(yùn)動(dòng)后的粒子群中的粒子與PDR的估算的下一個(gè)位置進(jìn)行比較,并按歐式距離的大小更新粒子的權(quán)重,所有粒子的位置坐標(biāo)的加權(quán)和即為最終的優(yōu)化結(jié)果。
本文結(jié)果優(yōu)化是在步長(zhǎng)優(yōu)化后的基礎(chǔ)上進(jìn)行的,相關(guān)的算法模型如式(9)~式(15)所示。
粒子初始化方程:
其中,(xp,yp)表示某一個(gè)粒子的位置坐標(biāo);(xprevious,yprevious)表示PDR估算的行人的前一個(gè)位置的坐標(biāo);radius表示半徑,為一個(gè)常數(shù);c、d表示隨機(jī)生成隨機(jī)數(shù),本文取0到1之間的浮點(diǎn)型數(shù)值。
粒子運(yùn)動(dòng)方程:
其中,(xlater,ylater)表示運(yùn)動(dòng)后的粒子位置坐標(biāo);llater表示PDR檢測(cè)的下一個(gè)位置處的步長(zhǎng);θlater表示PDR檢測(cè)的下一個(gè)位置處的航向。
權(quán)重更新方程:
其中,ωp表示更新后的粒子權(quán)重;(xlater,ylater)表示 PDR估算的行人下一個(gè)位置的坐標(biāo)。
歸一化處理:
其中,(xe,ye)表示粒子加權(quán)后的位置坐標(biāo);N表示粒子的個(gè)數(shù);()表示第 i個(gè)粒子的位置坐標(biāo);ωip表示第i個(gè)粒子的權(quán)重。
重采樣:本文所得的最終優(yōu)化的結(jié)果是經(jīng)過(guò)多次迭代后的均值,每次迭代為一次粒子濾波過(guò)程,同時(shí)產(chǎn)生一個(gè)加權(quán)和,即如果總共進(jìn)行n次迭代,那么將產(chǎn)生 n個(gè)加權(quán)和(由式(13)計(jì)算所得),將這 n個(gè)加權(quán)和的平均值作為最終的優(yōu)化結(jié)果。但是為了保證每次迭代后的結(jié)果的多樣性,需要對(duì)粒子群中的N個(gè)粒子進(jìn)行更新,即重采樣。本文采用如下方法實(shí)現(xiàn)重采樣,主要思想是:對(duì)于粒子群中的N個(gè)粒子,經(jīng)過(guò)一次迭代后,其權(quán)重根據(jù)與PDR估算的位置坐標(biāo)的距離進(jìn)行更新,如式(11)所示,再通過(guò)式(12)、式(13)獲得一個(gè)加權(quán)和,之后需要對(duì)粒子進(jìn)行更新(也叫重采樣),為下一次迭代做準(zhǔn)備。重采樣的數(shù)學(xué)相關(guān)表達(dá)式如式(14)~式(16)所示:
初始時(shí),令num=0,r=N(N表示粒子的個(gè)數(shù))
其中,ranges(0)=0,ranges(mid)表示從第 1個(gè)粒子到第mid個(gè)粒子的權(quán)重之和;e為隨機(jī)生成的一個(gè)浮點(diǎn)型數(shù)據(jù),且 e∈(0,1)。
按式(14)~式(16)實(shí)現(xiàn)二分法,直到 num+1≥r,此時(shí)將第num個(gè)粒子根據(jù)式(9)進(jìn)行重采樣,并將它的權(quán)重設(shè)置為1/N。如此循環(huán)N次,即可完成粒子的重采樣。
為了測(cè)試算法的效果,本文選定河北大學(xué)工商學(xué)院的C2樓的第三層的走廊為實(shí)驗(yàn)測(cè)試的場(chǎng)所,主要分為兩種場(chǎng)景進(jìn)行測(cè)試:直線為主的軌跡和曲線為主的軌跡。兩種軌跡的初始位置坐標(biāo)都設(shè)置為(0,0),其中粒子濾波的迭代次數(shù)設(shè)置為 70次,半徑radius=3 m,粒子數(shù)N=200。兩種場(chǎng)景的測(cè)試軌跡圖分別如圖1和圖2所示。
從圖1中可知采用直線判定平滑的估計(jì)軌跡在軌跡的直線部分更加接近實(shí)際軌跡,并且直線判定平滑后,軌跡誤差從2.46 m降低為0.64 m;從圖 2可知,采用卡爾曼濾波平滑處理步長(zhǎng)數(shù)據(jù)和粒子濾波優(yōu)化結(jié)果同樣能夠使得估算軌跡更加接近實(shí)際軌跡,其中PDR算法的估算軌跡誤差為6.20 m,采用卡爾曼濾波平滑處理步長(zhǎng)數(shù)據(jù)后的誤差降為1.67 m,在卡爾曼濾波的基礎(chǔ)上采用粒子濾波優(yōu)化結(jié)果的軌跡誤差降為1.08 m。本文的誤差采用公式(17)計(jì)算所得:
圖1 直線為主的軌跡
圖2 曲線為主的軌跡
其中,(x,y)表示定位坐標(biāo),(x0,y0)表示實(shí)際坐標(biāo)。
本文提出的針對(duì)兩種場(chǎng)景 (直線為主的軌跡、曲線為主的軌跡)下的優(yōu)化方案能夠提高PDR算法的精度,具有一定的使用價(jià)值。但是PDR算法所得結(jié)果都是相對(duì)的,即需要一個(gè)初始的參考位置,在實(shí)際應(yīng)用中需要加以解決。如與基于Wi-Fi或者藍(lán)牙的指紋法相結(jié)合,指紋法能夠提供初始的參考位置或者校準(zhǔn)PDR算法的累積誤差。除此外,還可以與其他技術(shù)相結(jié)合進(jìn)行融合定位,如地圖匹配、濾波融合等,這也是之后的一些可供參考的研究方向。