何夢(mèng)園,劉小瑜,劉正熙,熊運(yùn)余,袁鈺涵
(四川大學(xué)計(jì)算機(jī)學(xué)院,成都610065)
隨著基位置服務(wù)(LBS)[1]的興起,對(duì)于室內(nèi)定位的需求就越來越強(qiáng)烈,例如商場、醫(yī)院、停車場等。各學(xué)者對(duì)各種無線信號(hào)定位進(jìn)行了各方面的研究,包括無線局域網(wǎng)(WLAN)和無線傳感器網(wǎng)絡(luò)。例如紅外線[2]、超寬帶(UWB)[3]、ZigBee[4]、藍(lán)牙[5]、Wi-Fi[6]等室內(nèi)定位方法。
但是由于室內(nèi)環(huán)境復(fù)雜,單一信號(hào)定位精度較低,所以就需要將多種定位技術(shù)結(jié)合使用。文獻(xiàn)[7]將GPS、RFID、Wi-Fi 和計(jì)步器 4 種定位融合,提高了定位精度與穩(wěn)定性;文獻(xiàn)[8]利用PDR 與UWB 定位技術(shù)結(jié)合,采用約束濾波器,使得定位精度達(dá)到亞米級(jí);文獻(xiàn)[9]采用PDR 與Wi-Fi 的UKF 算法,對(duì)室內(nèi)車輛定位取得較好的效果;在以上方法中,往往需要額外的硬件部署,系統(tǒng)實(shí)現(xiàn)復(fù)雜。而如今的智能手機(jī)性能越來越好,其提供了一系列傳感器以及可用于接受信號(hào)的Wi-Fi 模塊、藍(lán)牙模塊等,可直接用于室內(nèi)定位。文獻(xiàn)[10]利用手機(jī)中的藍(lán)牙、Wi-Fi 和慣性導(dǎo)航結(jié)果進(jìn)行融合濾波,可得到較好的定位結(jié)果?;谝苿?dòng)端慣性傳感器的PDR 算法具有短時(shí)間內(nèi)定位精度高,但存在累計(jì)誤差,而藍(lán)牙定位單點(diǎn)定位誤差大但沒有誤差積累,因此將這兩種定位手段結(jié)合起來,構(gòu)成PDR-ibeacon組合定位系統(tǒng),既能達(dá)到較好的定位精度又能提高定位結(jié)果的可靠性。
本文提出一種基于位置加權(quán)的PDR-ibeacon 卡爾曼融合濾波室內(nèi)定位方法,并使用智能手機(jī)實(shí)現(xiàn)。
藍(lán)牙室內(nèi)定位技術(shù)可分為兩種:第一種是基于信號(hào)強(qiáng)度的傳播模型測定法,通過接受信號(hào)強(qiáng)度與信號(hào)衰減模型來計(jì)算待定位點(diǎn)與參考點(diǎn)的距離,但是由于室內(nèi)環(huán)境復(fù)雜,存在多徑效應(yīng),魯棒性較差;第二種是通過建立藍(lán)牙指紋庫來進(jìn)行匹配,但該方法需要采集指紋數(shù)據(jù),數(shù)據(jù)庫維護(hù)壓力較大。目前,室內(nèi)藍(lán)牙定位為了較高精度的定位,主要基于位置指紋實(shí)現(xiàn)。
本文采用位置指紋的方式實(shí)現(xiàn),但是為了減少施工成本,不用常用的單點(diǎn)指紋庫收集再進(jìn)行處理的方式采集指紋。為減少采集指紋時(shí)間,使用時(shí)間-位置匹配的方式采集指紋。同時(shí)為減少只采集一次的指紋的隨機(jī)性的影響,設(shè)置置信點(diǎn)指紋,即當(dāng)收到某個(gè)藍(lán)牙標(biāo)簽的信號(hào)值大于某個(gè)值時(shí),我們判斷其在藍(lán)牙標(biāo)簽附近,置信點(diǎn)由在藍(lán)牙標(biāo)簽下收到的該藍(lán)牙信號(hào)強(qiáng)度決定,經(jīng)測試在藍(lán)牙標(biāo)簽1 米范圍內(nèi)的1 分鐘內(nèi)收到的60 次藍(lán)牙信號(hào)值一般在-60db~-70db,根據(jù)其均值確定置信點(diǎn)指紋數(shù)據(jù),例如P={( )x,y ,“rssi:-60db,device:1”}代表在藍(lán)牙標(biāo)簽ID 為1 處的置信指紋。
圖1 1米范圍內(nèi)藍(lán)牙信號(hào)強(qiáng)度分布圖
采集指紋時(shí),采集示意圖如下圖所示,手持手機(jī)勻速行走,根據(jù)長度S 和時(shí)間T 計(jì)算出其速度V=S/T ,根據(jù)V 和起點(diǎn)估算出每次收到藍(lán)牙信號(hào)時(shí)所在位置經(jīng)緯度,形成一條藍(lán)牙指紋l1={(x,y),{“rssi:signal intensity,device:id”,…,“rssi:-mdb,device:id”}},指紋庫由多條指紋組成L={l1,l2,…,ln},其中n 為采集的指紋個(gè)數(shù),即收到的藍(lán)牙信號(hào)次數(shù)。
圖2 指紋采集示意圖
本文使用iPhone 智能手機(jī)進(jìn)行數(shù)據(jù)采集,因?yàn)樵贏ndroid 平臺(tái)的智能手機(jī)與iPhone 智能手機(jī)接受ibeacon 藍(lán)牙信號(hào)存在差異,在相同時(shí)間下,iPhone 在60 秒內(nèi)收到的藍(lán)牙信號(hào)穩(wěn)定在60 次左右,而Android 平臺(tái)手機(jī)的結(jié)果則較為不穩(wěn)定,實(shí)驗(yàn)結(jié)果如圖2 所示,對(duì)13個(gè)藍(lán)牙標(biāo)簽分別進(jìn)行實(shí)驗(yàn),Android 手機(jī)60 秒內(nèi)最多接受到43 次藍(lán)牙信號(hào),將會(huì)導(dǎo)致藍(lán)牙標(biāo)簽分布不均。(其中iPhone 手機(jī)型號(hào)為iPhone 6s,Android 手機(jī)型號(hào)為一加3T。)
圖3 不同平臺(tái)下的藍(lán)牙接收頻率
(1)WKNN 匹配算法
離線采集完指紋后,定位時(shí)需要將收到的藍(lán)牙信號(hào)與指紋庫進(jìn)行匹配,才能得到定位結(jié)果。最常用的匹配算法為加權(quán) K 最近鄰法(Weighted K-Nearest Neighbor,WKNN),定位時(shí)首先掃描藍(lán)牙信號(hào),得到信號(hào) 待 定 位 點(diǎn) 信 號(hào) 強(qiáng) 度 向 量 Signal_V,Signal_V=(v1,v2,…,vj,…,vn),其中 vj(1 ≤j ≤n)代表收到的第j 個(gè)藍(lán)牙標(biāo)簽的信號(hào)值,n 為收到的藍(lán)牙標(biāo)簽總個(gè)數(shù)。然后根據(jù)收到的藍(lán)牙信號(hào)強(qiáng)度與指紋庫中的藍(lán)牙信號(hào)強(qiáng)度進(jìn)行匹配,計(jì)算其相似度SI,一般使用歐氏距離計(jì)算。在實(shí)際環(huán)境中,由于范圍較大,藍(lán)牙指紋點(diǎn)較多,為提高匹配效率,在計(jì)算歐氏距離之前,首先檢索本條指紋是否含有Signal_V 中的藍(lán)牙標(biāo)簽信息,如果沒有,則不計(jì)算。按照歐氏距離計(jì)算的公式如下:
式中,k 表示第k 個(gè)指紋點(diǎn),lki表示第k 個(gè)指紋點(diǎn)中的第i 個(gè)指紋。取前SI 值最小的前k 個(gè)點(diǎn)對(duì)應(yīng)的坐標(biāo){P1,P2,…,Pi,…,Pk},使用前 k 個(gè) SI 進(jìn)行加權(quán),加權(quán)公式如下:
最終的加權(quán)定位結(jié)果計(jì)算方式如下所示:
(2)SVM(支持向量機(jī))匹配算法
在實(shí)驗(yàn)中發(fā)現(xiàn)WKNN 會(huì)有跳變加大的情況發(fā)生,且較為頻繁而且定位會(huì)有不在道路上的情況發(fā)生。所以為減少此種情況的發(fā)生,本文使用基于SVM 的匹配算法,其分為兩步:①模型訓(xùn)練;②在線分類。我們可以將定位問題轉(zhuǎn)化為分類問題,即將指紋點(diǎn)所在坐標(biāo)的二維空間作為類別標(biāo)記,訓(xùn)練時(shí)找出區(qū)分不同指紋點(diǎn)的超平面,在線定位時(shí)根據(jù)藍(lán)牙信號(hào)值進(jìn)行分類得到一個(gè)作為類別的坐標(biāo)點(diǎn)。基于指紋點(diǎn)存在線性不可分的情況,所以引入核函數(shù),使之高維可分,即:
式中K( xi,xj)=xTy 為引入的核函數(shù),C 為懲罰因子表示對(duì)錯(cuò)誤分類的懲罰程度,然后根據(jù)Smo 算法求得最優(yōu)解 a′=(a1′,a2′,a3′,…,an′)T,并計(jì)算:
最終,求解出決策函數(shù):
一般情況下認(rèn)為人在很短的時(shí)間內(nèi),做直線運(yùn)動(dòng),當(dāng)?shù)弥说男凶叻较?、距離以及起始點(diǎn)時(shí)就可推算出下一時(shí)刻的位置,我們假設(shè)起點(diǎn)為(x1,y1),距離為S,方向角為θ,那么推算下一個(gè)點(diǎn)(x2,y2)的公式為:
原理如圖4 所示:
其后的每一步定位信息都可用式(3)推算得到,其中兩個(gè)關(guān)鍵參數(shù)S 和θ 需要從傳感器中獲取,S 代表步長,θ 代表方向角,其中方向角可由智能手機(jī)傳感器直接獲得一個(gè)指北方向角,而步長可由典型的步頻-步長模型解算,步頻可由手機(jī)傳感器的計(jì)步器接口給出,步長可根據(jù)以下公式計(jì)算:
圖4 PDR原理示意圖[11]
其中a 和b 為固定常量,本文使用文獻(xiàn)[12]中的值,f 為步頻,可由手機(jī)中計(jì)步器得到步頻。
卡爾曼濾波的主要思想為獲取測量值對(duì)估計(jì)值進(jìn)行修正,而基于PDR 的融合濾波一般把步長推算作為估計(jì)值,測量值往往是藍(lán)牙定位以及其他信號(hào)源定位,而在線定位中,無法在每次有步進(jìn)時(shí)都收到藍(lán)牙定位信息,所以在卡爾曼濾波中無法使用關(guān)于步長的狀態(tài)方程,本文使用速度模型,為了較少計(jì)算量,本文采用最簡單的線性卡爾曼濾波。多信號(hào)位置加權(quán)的卡爾曼濾波算法流程圖如圖5 所示,算法流程分為3 步:
Step1:獲取多信號(hào)加權(quán)測量值,根據(jù)每一時(shí)刻的信號(hào)源定位不同進(jìn)行不同的加權(quán)處理。
Step2:根據(jù)設(shè)計(jì)的狀態(tài)方程的測量方程進(jìn)行濾波融合。
Step3:為使輸出點(diǎn)跡更為平滑,加入平滑處理,得到更為流暢的軌跡。
在Step1 中,在獲取所需測量值時(shí),由于有多種定位信號(hào)輸出,本文提出多信號(hào)位置的加權(quán)處理,根據(jù)實(shí)際效果,設(shè)定各加權(quán)系數(shù)如圖5 所示,因?yàn)樵诙虝r(shí)間內(nèi)的PDR 具有更高的精度,所以其權(quán)重較藍(lán)牙定位和置信點(diǎn)都大。
圖5 多信號(hào)位置加權(quán)的卡爾曼濾波算法流程圖
Step2 中,建立相關(guān)卡爾曼濾波方程,k-1 時(shí)刻到k時(shí)刻的狀態(tài)方程和測量方程如下:
其中A 為狀態(tài)轉(zhuǎn)移矩陣,B 和uk分別為系統(tǒng)輸入變量,ωk為過程噪聲,H 為測量矩陣,vk為測量噪聲??柭鼮V波分為兩部分,預(yù)測與更新,預(yù)測階段使用上一時(shí)刻的值對(duì)當(dāng)前時(shí)刻作出估計(jì),而更新階段,利用測量值對(duì)預(yù)測值進(jìn)行校正,以獲得一個(gè)更接近真實(shí)值的新估計(jì)值。
預(yù)測:
更新:
其中zk為測量值,K 為卡爾曼增益,每次濾波時(shí)隨著計(jì)算更新,R 為測量噪聲的協(xié)方差矩陣,xk為最終卡爾曼估計(jì)值,Pk為卡爾曼估計(jì)誤差的協(xié)方差矩陣。根據(jù)實(shí)際情況建模如下:
(xk,yk)為k 時(shí)刻的位置坐標(biāo),(vxk,vyk)為k 時(shí)刻x和y 方向的速度,T 為時(shí)間間隔。測量方程為:
(xk,yk)為通過多信號(hào)位置加權(quán)得到的定位位置。
本文設(shè)初始協(xié)方差矩陣P=0.1*I ,I 為單位矩陣;由于沒有系統(tǒng)輸入,所以忽略系統(tǒng)輸入。
過程噪聲的協(xié)方差矩陣:
測量噪聲的協(xié)方差矩陣:
Step3 中,因?yàn)闉V波輸出的點(diǎn)會(huì)有較多鋸齒狀以及回拉的點(diǎn),如圖6(a)所示,所以在濾波融合后進(jìn)行平滑處理,平滑算法示意圖如圖6(b)所示,我們根據(jù)前2 個(gè)時(shí)刻的運(yùn)動(dòng)狀態(tài)來進(jìn)行平滑,假設(shè)在3 個(gè)運(yùn)動(dòng)時(shí)刻里,運(yùn)動(dòng)狀態(tài)不變,那么根據(jù)k-2 時(shí)刻和k-1 時(shí)刻可推算出k 時(shí)刻的位置為(x′k,y′
k),而k 時(shí)刻的卡爾曼濾波結(jié)果為,將其進(jìn)行加權(quán)得到平滑結(jié)果,計(jì)算公式如下:
其中w1+w2=1,權(quán)重系數(shù)應(yīng)根據(jù)實(shí)際情況選取,本文將其都設(shè)為0.5。
圖6 平滑處理示意圖
實(shí)驗(yàn)測試環(huán)境位于成都市高新區(qū)理想中心14 樓,平面圖如圖7 所示,主要在過道進(jìn)行測試,地圖面積約為1500m2,藍(lán)牙標(biāo)簽部署如圖上藍(lán)點(diǎn)所示,總計(jì)部署13 個(gè),指紋點(diǎn)共計(jì) 170 個(gè)。
圖7 定位區(qū)域平面圖
在靜止?fàn)顟B(tài)下,隨機(jī)挑選13 個(gè)點(diǎn)作為測試點(diǎn),分別使用基于距離的WKNN 與SVM 進(jìn)行定位,得出定位結(jié)果,使用平均誤差、累計(jì)誤差分布和最大誤差分布作為評(píng)價(jià)指標(biāo),其平均誤差如表1 所示。
表1 不同匹配算法平均誤差
從平均誤差可以看出SVM 較WKNN 具有更高的定位精度,累計(jì)誤差分布結(jié)果和點(diǎn)位最大誤差統(tǒng)計(jì)圖8所示,可以看出SVM 收斂較WKNN 快,且最大誤差由20 米降低到14 米,較WKNN 具有更穩(wěn)定的定位效果。
圖8 誤差累計(jì)分布圖
在測試環(huán)境中,濾波效果如圖9 所示,紅色的線為濾波融合后的效果,可以看出其與真實(shí)路線較為符合,擬合較好,減少了PDR 的累計(jì)誤差以及藍(lán)牙定位的誤差影響。
在此行走過程中,根據(jù)速度估計(jì)其真實(shí)位置,各種定位平均誤差表2 所示,SVM_PDR_KF 融合濾波方法將行走狀態(tài)下的平均誤差降低到1.8 米,且最大誤差僅3.6 米,較SVM 和PDR 分別提高了81.98%和86.11%。
在室內(nèi)環(huán)境中,通過采集的藍(lán)牙指紋信息與SVM算法輔助PDR 進(jìn)行了定位測驗(yàn)。比較了WKNN 與SVM 匹配算法定位效果,結(jié)果表明,SVM 具有更高的精度與更好的穩(wěn)定性。使用卡爾曼濾波進(jìn)行信號(hào)融合,基于多信號(hào)的位置加權(quán)得到測量值,該方法定位結(jié)果優(yōu)于藍(lán)牙和PDR 單獨(dú)定位的效果。此方法計(jì)算量小,實(shí)現(xiàn)簡單,可實(shí)用于智能手機(jī)定位。