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