基于位置指紋算法的Android平臺WiFi定位系統(tǒng)
近年來,隨著城域無線基礎(chǔ)網(wǎng)絡(luò)的發(fā)展,熱點(AP)的覆蓋率大幅度提高,由于定位服務(wù)需求的增加以及WiFi應(yīng)用領(lǐng)域的擴(kuò)大,WiFi定位成為一種有效的定位方式。GPS衛(wèi)星定位是最主要的定位方式,它需要在相對空曠、高層建筑不密集的地方獲得較準(zhǔn)確的定位,當(dāng)人們處在室內(nèi)或高樓林立的市區(qū),定位精度明顯降低甚至不能定位。此時,利用無處不在的WiFi網(wǎng)絡(luò)將能夠彌補(bǔ)GPS定位的不足。目前大多數(shù)的WiFi無線定位算法主要為:基于到達(dá)時間、到達(dá)角度、到達(dá)時間差的模型定位及基于接受信號強(qiáng)度(RSSI)的位置指紋定位算法,由于位置指紋算法的無線定位方式不需要已知AP的位置信息及準(zhǔn)確的信道模型,該算法在定位性能以及可用性上具有更大的優(yōu)勢。因此,本文首先設(shè)計了整體的系統(tǒng)框架,通過研究分析了該算法目前存在的問題,提出了改進(jìn)方案,并在Android平臺上實現(xiàn)完整的定位系統(tǒng)。
1 系統(tǒng)整體設(shè)計
本系統(tǒng)的設(shè)計目標(biāo)是在Android智能終端上實現(xiàn)實時WiFi定位系統(tǒng),該系統(tǒng)包括客戶端、數(shù)據(jù)服務(wù)器以及定位服務(wù)器。為了使定位過程和服務(wù)器通信過程相對獨立,分別設(shè)置了專門用于定位的AP熱點和客戶端與服務(wù)器之間的通信AP熱點,可有效降低系統(tǒng)環(huán)境搭建的初期成本。本方案的系統(tǒng)框架如圖1所示。其中的通信AP熱點需要與局域網(wǎng)相連,保證定位區(qū)域內(nèi)WiFi信號良好,確保數(shù)據(jù)傳輸及處理的及時性??蛻舳撕头?wù)器端通過TCP連接實現(xiàn)可靠傳輸。
2 系統(tǒng)實現(xiàn)
2.1 客戶端模塊設(shè)計
本系統(tǒng)采用客戶端/服務(wù)器(c/s)的網(wǎng)絡(luò)架構(gòu),客戶端的定位過程主要包括WiFi無線信號掃描、數(shù)據(jù)傳輸、界面顯示等,該過程的流程圖如圖2所示。
WiFi信號掃描是利用Android API提供的WiFiManager類實現(xiàn)。首先,判斷WiFi是否開啟;其次取得WiFiManager及WmInf0對象,通過startScan()、getScanResuits()等方法開始掃描并得到掃描結(jié)果mScanResult;最后,將數(shù)據(jù)傳遞給服務(wù)器端進(jìn)行定位計算。Android平臺為用戶提供豐富的界面顯示控件,本設(shè)計使用ListView顯示服務(wù)器返回的定位位置信息。
2.2 服務(wù)器端模塊設(shè)計
服務(wù)器端首先需要不斷監(jiān)聽指定端口,當(dāng)監(jiān)聽到客戶端的請求時,創(chuàng)建新進(jìn)程,該進(jìn)程負(fù)責(zé)處理客戶端的請求,其處理過程如圖3所示。監(jiān)聽數(shù)據(jù),如果接收到該數(shù)據(jù),則進(jìn)行CRC校驗并結(jié)束鏈接幀,根據(jù)請求內(nèi)容查詢數(shù)據(jù)庫并進(jìn)行定位運(yùn)算,最后返回定位結(jié)果,通過數(shù)據(jù)傳輸反饋給客戶端界面顯示定位信息。
3 定位算法設(shè)計
在室內(nèi)或室外環(huán)境下,由于信號傳播途中受地形、障礙物的影響和人體的阻擋,將引起無線信號的折射、衍射等多徑傳播、多址傳播,以不同的時間到達(dá)終端,造成傳播信號在幅度、頻率和相位上的改變。其使得在同一位置,不同時間采集到的RSS值很不確定,即使在同一時間相同位置使用不同的定位設(shè)備采集到的RSS大小也會不同,會影響定位的精確性,無線信號傳播的衰減模型難以良好地表征距離和信號強(qiáng)度間的映射關(guān)系。因此本文采用基于位置指紋的定位算法,同時針對造成定位誤差的主要原因,提出了改進(jìn)的定位算法以提高定位魯棒性。
3.1 位置指紋定位算法
位置指紋定位是根據(jù)不同位置接收到的信號強(qiáng)度向量,建立相應(yīng)的位置指紋數(shù)據(jù)庫,通過實時采集的信號強(qiáng)度與數(shù)據(jù)庫信號空間中儲存的信號向量,根據(jù)一定的匹配算法實現(xiàn)定位。該算法能夠在一定程度上減少多徑效應(yīng)的影響,增強(qiáng)抗干擾能力。目前,基于位置指紋的定位算法主要分為確定型和概率型,前者的計算效率較高,后者的定位精度較高,但是計算量較大,為了快速定位,采用確定型的位置指紋定位算法。
位置指紋定位過程一般分兩個階段實現(xiàn):離線采樣階段和在線定位階段。離線采樣階段主要目的是建立位置指紋數(shù)據(jù)庫,根據(jù)定位環(huán)境設(shè)計較為合理的采樣分布圖,遍歷待定位區(qū)域內(nèi)的所有采樣點,將相應(yīng)的信號強(qiáng)度、MAC地址以及位置信息等記錄在指紋數(shù)據(jù)庫中。數(shù)據(jù)庫中數(shù)據(jù)的準(zhǔn)確性決定了定位的精確程度,數(shù)據(jù)越精確,定位效果越好。在線定位階段是利用Android手機(jī)在待定位點測得AP的信號強(qiáng)度和物理地址,然后通過相應(yīng)的匹配算法,在數(shù)據(jù)庫中搜索與測量點相匹配的數(shù)據(jù),從而估計用戶的實際位置。位置指紋的定位過程如圖4所示。
3.2 匹配算法
通常的匹配算法有K最近鄰匹配算法(KNN),該算法能夠有效提高定位精度且應(yīng)用成熟。本文采用了該匹配算法,K最近鄰匹配算法的實質(zhì)是計算待測點采集到的RSS向量和數(shù)據(jù)庫中已記錄的RSS向量之間的距離。假設(shè)待測區(qū)域有n個AP,m 個參考點,則距離的表達(dá)式如下:
其中,q為正整數(shù),當(dāng)q=1時稱為曼哈頓距離,q=2,稱為歐式距離;L代表向量在空間中的距離。本文使用q=2進(jìn)行計算,當(dāng)取得n個最小歐式距離的位置點后,求取n個坐標(biāo)點的質(zhì)心為待測點位置坐標(biāo)。
3.3 改進(jìn)的位置指紋定位算法
理論研究表明:由于室內(nèi)環(huán)境復(fù)雜,無線信號會因為時間的變化、人體的隨機(jī)晃動及環(huán)境等因素的影響使信號強(qiáng)度值呈現(xiàn)一定的波動。為了保證信號數(shù)據(jù)本身的穩(wěn)定性,在實驗室環(huán)境下進(jìn)行如下實驗:在同一位置的不同時間分別采集數(shù)據(jù),上午和下午兩個時間段每隔1 S共采集300次WiFi信號。發(fā)現(xiàn)無線信號隨時間變化不大,基本存在2 dB左右誤差,對定位結(jié)果影響較小。
但在多次測試過程中發(fā)現(xiàn),無線信號強(qiáng)度在某位置下會出現(xiàn)如圖5所示的波動情況,多數(shù)信號強(qiáng)度值保持在一定范圍內(nèi),但中間會存在抖動的數(shù)據(jù),該種現(xiàn)象會對離線數(shù)據(jù)的準(zhǔn)確性及在線定位的準(zhǔn)確性產(chǎn)生較大影響。直接求均值的方式并不能表征該位置的信號特征,應(yīng)該對采集的無線信號強(qiáng)度值進(jìn)行平滑,選取有效點。
對無線信號的平滑提出如下改進(jìn)方案:
① 每隔1 S采集一次所有的信號組,假設(shè)其中一組的信號強(qiáng)度值是level,再連續(xù)間隔采集二次;
②如果連續(xù)采集三次的信號強(qiáng)度值均介于[1evel - 1,level+1]時,將該數(shù)據(jù)插入數(shù)據(jù)庫,否則舍去前面的所有信號值,重新返回步驟① ;
③ 將步驟② 獲取的多組無線信號強(qiáng)度值再求均值,存入離線數(shù)據(jù)庫。
利用改進(jìn)的方案將圖5平滑處理后,改進(jìn)前的信號強(qiáng)度值RSS=1.597 1,而改進(jìn)后的RSSI=-46.I47 1,可見本方案能夠去除一定的抖動信號,得到較為理想的離線數(shù)據(jù)庫。該方法不僅用于離線數(shù)據(jù)采樣階段,而且應(yīng)用于在線定位階段實時采集當(dāng)前無線信號強(qiáng)度,可避免單次采集的不確定性。
針對設(shè)備差異對無線信號的影響,首先在同一位置用華為兩款不同型號手機(jī)對WiFi信號采集300次,無線信號分布情況如圖6所示。C8812型號手機(jī)采集信號強(qiáng)度保持在一65~66 dB,P6型號手機(jī)信號強(qiáng)度保持在一45dB,不同型號手機(jī)可能造成的誤差達(dá)2O dB,若按此進(jìn)行定位將產(chǎn)生較大定位誤差,因此本文將在實時定位之前加上無線信號校正階段,能有效提高定位精度。
為解決設(shè)備差異對WiFi定位造成的影響,Ekahau提出一種自動校正的方法。它是通過分析跟蹤設(shè)備在一些易于檢測的區(qū)域時的信號變化,自動學(xué)習(xí)跟蹤建立相應(yīng)的映射關(guān)系,該方法的缺點是設(shè)備不易進(jìn)入易檢測區(qū),系統(tǒng)很難獲得充足的數(shù)據(jù)建立映射關(guān)系。Haeberlen的研究顯示,校正設(shè)備與測試設(shè)備之間的信號強(qiáng)度之間存在某種線性關(guān)系。本文經(jīng)過大量實驗,統(tǒng)計獲得數(shù)據(jù)并通過函數(shù)擬合的方法,推導(dǎo)出校正設(shè)備及測試設(shè)備的關(guān)系,可以看作y=ax+b的線性關(guān)系,參數(shù)a、b將由實際的數(shù)據(jù)獲得。
4 實驗結(jié)果與分析
實驗區(qū)域為10 m×16 m,每隔1.5 m設(shè)定為一個采樣點,AP分布在該區(qū)域的四周如圖7黑色圓點位置,每個采樣點分別采集200次經(jīng)過平滑處理后存入離線數(shù)據(jù)庫。為比較定位結(jié)果的精確性,選定如下5個點為測試點:A位于出口處附近,B位于區(qū)域的中心位置,C、D、E點位于區(qū)域的邊界處。
改進(jìn)前和改進(jìn)后分別進(jìn)行4O次測試,實驗結(jié)果分析如表1所列。應(yīng)用改進(jìn)后的算法各測試點的平均誤差均有所下降,A點位于出口處,可能會受其他因素影響,定位效果不明顯;B、D點,受外界影響較小,定位效果較好,定位精度提高2 m左右。
1次