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