基于位置指紋算法的Android平臺WiFi定位系統(tǒng)
近年來,隨著城域無線基礎(chǔ)網(wǎng)絡(luò)的發(fā)展,熱點(AP)的覆蓋率大幅度提高,由于定位服務(wù)需求的增加以及WiFi應(yīng)用領(lǐng)域的擴大,WiFi定位成為一種有效的定位方式。GPS衛(wèi)星定位是最主要的定位方式,它需要在相對空曠、高層建筑不密集的地方獲得較準確的定位,當人們處在室內(nèi)或高樓林立的市區(qū),定位精度明顯降低甚至不能定位。此時,利用無處不在的WiFi網(wǎng)絡(luò)將能夠彌補GPS定位的不足。目前大多數(shù)的WiFi無線定位算法主要為:基于到達時間、到達角度、到達時間差的模型定位及基于接受信號強度(RSSI)的位置指紋定位算法,由于位置指紋算法的無線定位方式不需要已知AP的位置信息及準確的信道模型,該算法在定位性能以及可用性上具有更大的優(yōu)勢。因此,本文首先設(shè)計了整體的系統(tǒng)框架,通過研究分析了該算法目前存在的問題,提出了改進方案,并在Android平臺上實現(xiàn)完整的定位系統(tǒng)。
本文引用地址:http://2s4d.com/article/269657.htm1系統(tǒng)整體設(shè)計
本系統(tǒng)的設(shè)計目標是在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)可靠傳輸。
圖1系統(tǒng)框架圖
2系統(tǒng)實現(xiàn)
2.1客戶端模塊設(shè)計
本系統(tǒng)采用客戶端/服務(wù)器(c/s)的網(wǎng)絡(luò)架構(gòu),客戶端的定位過程主要包括WiFi無線信號掃描、數(shù)據(jù)傳輸、界面顯示等,該過程的流程圖如圖2所示。
圖2客戶端定位模塊流程圖
WiFi信號掃描是利用Android API提供的WiFiManager類實現(xiàn)。首先,判斷WiFi是否開啟;其次取得WiFiManager及WmInf0對象,通過startScan()、getScanResuits()等方法開始掃描并得到掃描結(jié)果mScanResult;最后,將數(shù)據(jù)傳遞給服務(wù)器端進行定位計算。Android平臺為用戶提供豐富的界面顯示控件,本設(shè)計使用ListView顯示服務(wù)器返回的定位位置信息。
2.2服務(wù)器端模塊設(shè)計
服務(wù)器端首先需要不斷監(jiān)聽指定端口,當監(jiān)聽到客戶端的請求時,創(chuàng)建新進程,該進程負責處理客戶端的請求,其處理過程如圖3所示。監(jiān)聽數(shù)據(jù),如果接收到該數(shù)據(jù),則進行CRC校驗并結(jié)束鏈接幀,根據(jù)請求內(nèi)容查詢數(shù)據(jù)庫并進行定位運算,最后返回定位結(jié)果,通過數(shù)據(jù)傳輸反饋給客戶端界面顯示定位信息。
圖3服務(wù)器端流程圖
3定位算法設(shè)計
在室內(nèi)或室外環(huán)境下,由于信號傳播途中受地形、障礙物的影響和人體的阻擋,將引起無線信號的折射、衍射等多徑傳播、多址傳播,以不同的時間到達終端,造成傳播信號在幅度、頻率和相位上的改變。其使得在同一位置,不同時間采集到的RSS值很不確定,即使在同一時間相同位置使用不同的定位設(shè)備采集到的RSS大小也會不同,會影響定位的精確性,無線信號傳播的衰減模型難以良好地表征距離和信號強度間的映射關(guān)系。因此本文采用基于位置指紋的定位算法,同時針對造成定位誤差的主要原因,提出了改進的定位算法以提高定位魯棒性。
評論