基于位置指紋算法的Android平臺WiFi定位系統
3.1位置指紋定位算法
本文引用地址:http://dyxdggzs.com/article/270826.htm位置指紋定位是根據不同位置接收到的信號強度向量,建立相應的位置指紋數據庫,通過(guò)實(shí)時(shí)采集的信號強度與數據庫信號空間中儲存的信號向量,根據一定的匹配算法實(shí)現定位。該算法能夠在一定程度上減少多徑效應的影響,增強抗干擾能力。目前,基于位置指紋的定位算法主要分為確定型和概率型,前者的計算效率較高,后者的定位精度較高,但是計算量較大,為了快速定位,采用確定型的位置指紋定位算法。
位置指紋定位過(guò)程一般分兩個(gè)階段實(shí)現:離線(xiàn)采樣階段和在線(xiàn)定位階段。離線(xiàn)采樣階段主要目的是建立位置指紋數據庫,根據定位環(huán)境設計較為合理的采樣分布圖,遍歷待定位區域內的所有采樣點(diǎn),將相應的信號強度、MAC地址以及位置信息等記錄在指紋數據庫中。數據庫中數據的準確性決定了定位的精確程度,數據越精確,定位效果越好。在線(xiàn)定位階段是利用Android手機在待定位點(diǎn)測得AP的信號強度和物理地址,然后通過(guò)相應的匹配算法,在數據庫中搜索與測量點(diǎn)相匹配的數據,從而估計用戶(hù)的實(shí)際位置。位置指紋的定位過(guò)程如圖4所示。

圖4定位框圖
3.2匹配算法
通常的匹配算法有K最近鄰匹配算法(KNN),該算法能夠有效提高定位精度且應用成熟。本文采用了該匹配算法,K最近鄰匹配算法的實(shí)質(zhì)是計算待測點(diǎn)采集到的RSS向量和數據庫中已記錄的RSS向量之間的距離。假設待測區域有n個(gè)AP,m個(gè)參考點(diǎn),則距離的表達式如下:

其中,q為正整數,當q=1時(shí)稱(chēng)為曼哈頓距離,q=2,稱(chēng)為歐式距離;L代表向量在空間中的距離。本文使用q=2進(jìn)行計算,當取得n個(gè)最小歐式距離的位置點(diǎn)后,求取n個(gè)坐標點(diǎn)的質(zhì)心為待測點(diǎn)位置坐標。
3.3改進(jìn)的位置指紋定位算法
理論研究表明:由于室內環(huán)境復雜,無(wú)線(xiàn)信號會(huì )因為時(shí)間的變化、人體的隨機晃動(dòng)及環(huán)境等因素的影響使信號強度值呈現一定的波動(dòng)。為了保證信號數據本身的穩定性,在實(shí)驗室環(huán)境下進(jìn)行如下實(shí)驗:在同一位置的不同時(shí)間分別采集數據,上午和下午兩個(gè)時(shí)間段每隔1 S共采集300次WiFi信號。發(fā)現無(wú)線(xiàn)信號隨時(shí)間變化不大,基本存在2 dB左右誤差,對定位結果影響較小。
但在多次測試過(guò)程中發(fā)現,無(wú)線(xiàn)信號強度在某位置下會(huì )出現如圖5所示的波動(dòng)情況,多數信號強度值保持在一定范圍內,但中間會(huì )存在抖動(dòng)的數據,該種現象會(huì )對離線(xiàn)數據的準確性及在線(xiàn)定位的準確性產(chǎn)生較大影響。直接求均值的方式并不能表征該位置的信號特征,應該對采集的無(wú)線(xiàn)信號強度值進(jìn)行平滑,選取有效點(diǎn)。

圖5無(wú)線(xiàn)信號分布圖
評論