魏菲,李允俊,金華
(延邊大學(xué) 工學(xué)院,延吉 133000)
?
使用位置指紋算法的WiFi定位系統(tǒng)設(shè)計(jì)
魏菲,李允俊,金華
(延邊大學(xué) 工學(xué)院,延吉 133000)
隨著無(wú)線城市的建設(shè)和推廣,WiFi無(wú)線熱點(diǎn)的數(shù)量在逐漸增加,基于智能手機(jī)的定位應(yīng)用也受到越來(lái)越多的關(guān)注。然而僅借助于GPS衛(wèi)星定位系統(tǒng),無(wú)法在高樓林立的市中心或是室內(nèi)場(chǎng)景定位。因此,本文利用WiFi信號(hào)本身的特點(diǎn), 在Android平臺(tái)上設(shè)計(jì)了一種基于位置指紋算法的WiFi定位系統(tǒng)。針對(duì)WiFi信號(hào)本身的不穩(wěn)定性以及不同設(shè)備之間無(wú)線信號(hào)接收差異兩種影響因素改進(jìn)了該算法。
WiFi定位;位置指紋算法;Android
近年來(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定位的不足[1]。目前大多數(shù)的WiFi無(wú)線定位算法主要為:基于到達(dá)時(shí)間、到達(dá)角度、到達(dá)時(shí)間差的模型定位及基于接受信號(hào)強(qiáng)度(RSSI)的位置指紋定位算法[2],由于位置指紋算法的無(wú)線定位方式不需要已知AP的位置信息及準(zhǔn)確的信道模型,該算法在定位性能以及可用性上具有更大的優(yōu)勢(shì)。因此,本文首先設(shè)計(jì)了整體的系統(tǒng)框架,通過(guò)研究分析了該算法目前存在的問(wèn)題,提出了改進(jìn)方案,并在Android平臺(tái)上實(shí)現(xiàn)完整的定位系統(tǒng)。
本系統(tǒng)的設(shè)計(jì)目標(biāo)是在Android智能終端上實(shí)現(xiàn)實(shí)時(shí)WiFi定位系統(tǒng),該系統(tǒng)包括客戶端、數(shù)據(jù)服務(wù)器以及定位服務(wù)器。為了使定位過(guò)程和服務(wù)器通信過(guò)程相對(duì)獨(dú)立,分別設(shè)置了專(zhuān)門(mén)用于定位的AP熱點(diǎn)和客戶端與服務(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í)性。客戶端和服務(wù)器端通過(guò)TCP連接實(shí)現(xiàn)可靠傳輸。
圖1 系統(tǒng)框架圖
2.1 客戶端模塊設(shè)計(jì)
本系統(tǒng)采用客戶端/服務(wù)器(C/S)的網(wǎng)絡(luò)架構(gòu),客戶端的定位過(guò)程主要包括WiFi無(wú)線信號(hào)掃描、數(shù)據(jù)傳輸、界面顯示等,該過(guò)程的流程圖如圖2所示。
圖2 客戶端定位模塊流程圖
WiFi信號(hào)掃描是利用Android API提供的WiFiManager類(lèi)實(shí)現(xiàn)。首先,判斷WiFi是否開(kāi)啟;其次取得WifiManager及WifiInfo對(duì)象,通過(guò)startScan()、getScanResults()等方法開(kāi)始掃描并得到掃描結(jié)果mScanResult;最后,將數(shù)據(jù)傳遞給服務(wù)器端進(jìn)行定位計(jì)算。Android平臺(tái)為用戶提供豐富的界面顯示控件,本設(shè)計(jì)使用ListView顯示服務(wù)器返回的定位位置信息[3]。
2.2 服務(wù)器端模塊設(shè)計(jì)
服務(wù)器端首先需要不斷監(jiān)聽(tīng)指定端口,當(dāng)監(jiān)聽(tīng)到客戶端的請(qǐng)求時(shí),創(chuàng)建新進(jìn)程,該進(jìn)程負(fù)責(zé)處理客戶端的請(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ù)傳輸反饋給客戶端界面顯示定位信息。
圖3 服務(wù)器端流程圖
在室內(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)系[4]。因此本文采用基于位置指紋的定位算法,同時(shí)針對(duì)造成定位誤差的主要原因,提出了改進(jìn)的定位算法以提高定位魯棒性。
3.1 位置指紋定位算法
位置指紋定位是根據(jù)不同位置接收到的信號(hào)強(qiáng)度向量,建立相應(yīng)的位置指紋數(shù)據(jù)庫(kù),通過(guò)實(shí)時(shí)采集的信號(hào)強(qiáng)度與數(shù)據(jù)庫(kù)信號(hào)空間中儲(chǔ)存的信號(hào)向量,根據(jù)一定的匹配算法實(shí)現(xiàn)定位。該算法能夠在一定程度上減少多徑效應(yīng)的影響,增強(qiáng)抗干擾能力。目前,基于位置指紋的定位算法主要分為確定型和概率型,前者的計(jì)算效率較高,后者的定位精度較高,但是計(jì)算量較大,為了快速定位,采用確定型的位置指紋定位算法。
位置指紋定位過(guò)程一般分兩個(gè)階段實(shí)現(xiàn):離線采樣階段和在線定位階段。離線采樣階段主要目的是建立位置指紋數(shù)據(jù)庫(kù),根據(jù)定位環(huán)境設(shè)計(jì)較為合理的采樣分布圖,遍歷待定位區(qū)域內(nèi)的所有采樣點(diǎn),將相應(yīng)的信號(hào)強(qiáng)度、MAC地址以及位置信息等記錄在指紋數(shù)據(jù)庫(kù)中。數(shù)據(jù)庫(kù)中數(shù)據(jù)的準(zhǔn)確性決定了定位的精確程度,數(shù)據(jù)越精確,定位效果越好。在線定位階段是利用Android手機(jī)在待定位點(diǎn)測(cè)得AP的信號(hào)強(qiáng)度和物理地址,然后通過(guò)相應(yīng)的匹配算法,在數(shù)據(jù)庫(kù)中搜索與測(cè)量點(diǎn)相匹配的數(shù)據(jù),從而估計(jì)用戶的實(shí)際位置。位置指紋的定位過(guò)程如圖4所示。
圖4 定位框圖
3.2 匹配算法
通常的匹配算法有K最近鄰匹配算法(KNN),該算法能夠有效提高定位精度且應(yīng)用成熟。本文采用了該匹配算法,K最近鄰匹配算法的實(shí)質(zhì)是計(jì)算待測(cè)點(diǎn)采集到的RSS向量和數(shù)據(jù)庫(kù)中已記錄的RSS向量之間的距離。假設(shè)待測(cè)區(qū)域有n個(gè)AP,m個(gè)參考點(diǎn),則距離的表達(dá)式如下:
(1)
其中,q為正整數(shù),當(dāng)q=1時(shí)稱(chēng)為曼哈頓距離,q=2,稱(chēng)為歐式距離;L代表向量在空間中的距離。本文使用q=2進(jìn)行計(jì)算,當(dāng)取得n個(gè)最小歐式距離的位置點(diǎn)后,求取n個(gè)坐標(biāo)點(diǎn)的質(zhì)心為待測(cè)點(diǎn)位置坐標(biāo)。
3.3 改進(jìn)的位置指紋定位算法
理論研究表明:由于室內(nèi)環(huán)境復(fù)雜,無(wú)線信號(hào)會(huì)因?yàn)闀r(shí)間的變化、人體的隨機(jī)晃動(dòng)及環(huán)境等因素的影響使信號(hào)強(qiáng)度值呈現(xiàn)一定的波動(dòng)。為了保證信號(hào)數(shù)據(jù)本身的穩(wěn)定性,在實(shí)驗(yàn)室環(huán)境下進(jìn)行如下實(shí)驗(yàn):在同一位置的不同時(shí)間分別采集數(shù)據(jù),上午和下午兩個(gè)時(shí)間段每隔1s共采集300次WiFi信號(hào)。發(fā)現(xiàn)無(wú)線信號(hào)隨時(shí)間變化不大,基本存在2dB左右誤差,對(duì)定位結(jié)果影響較小。
但在多次測(cè)試過(guò)程中發(fā)現(xiàn),無(wú)線信號(hào)強(qiáng)度在某位置下會(huì)出現(xiàn)如圖5所示的波動(dòng)情況,多數(shù)信號(hào)強(qiáng)度值保持在一定范圍內(nèi),但中間會(huì)存在抖動(dòng)的數(shù)據(jù),該種現(xiàn)象會(huì)對(duì)離線數(shù)據(jù)的準(zhǔn)確性及在線定位的準(zhǔn)確性產(chǎn)生較大影響。直接求均值的方式并不能表征該位置的信號(hào)特征,應(yīng)該對(duì)采集的無(wú)線信號(hào)強(qiáng)度值進(jìn)行平滑,選取有效點(diǎn)。
圖5 無(wú)線信號(hào)分布圖
對(duì)無(wú)線信號(hào)的平滑提出如下改進(jìn)方案:
①每隔1 s采集一次所有的信號(hào)組,假設(shè)其中一組的信號(hào)強(qiáng)度值是level,再連續(xù)間隔采集二次;
②如果連續(xù)采集三次的信號(hào)強(qiáng)度值均介于[level-1,level+1]時(shí),將該數(shù)據(jù)插入數(shù)據(jù)庫(kù),否則舍去前面的所有信號(hào)值,重新返回步驟①;
③將步驟②獲取的多組無(wú)線信號(hào)強(qiáng)度值再求均值,存入離線數(shù)據(jù)庫(kù)。
利用改進(jìn)的方案將圖5平滑處理后,改進(jìn)前的信號(hào)強(qiáng)度值RSS=1.597 1,而改進(jìn)后的RSS1=-46.147 1,可見(jiàn)本方案能夠去除一定的抖動(dòng)信號(hào),得到較為理想的離線數(shù)據(jù)庫(kù)。該方法不僅用于離線數(shù)據(jù)采樣階段,而且應(yīng)用于在線定位階段實(shí)時(shí)采集當(dāng)前無(wú)線信號(hào)強(qiáng)度,可避免單次采集的不確定性。
針對(duì)設(shè)備差異對(duì)無(wú)線信號(hào)的影響,首先在同一位置用華為兩款不同型號(hào)手機(jī)對(duì)WiFi信號(hào)采集300次,無(wú)線信號(hào)分布情況如圖6所示。C8812型號(hào)手機(jī)采集信號(hào)強(qiáng)度保持在-65~66 dB,P6型號(hào)手機(jī)信號(hào)強(qiáng)度保持在-45 dB,不同型號(hào)手機(jī)可能造成的誤差達(dá)20 dB,若按此進(jìn)行定位將產(chǎn)生較大定位誤差,因此本文將在實(shí)時(shí)定位之前加上無(wú)線信號(hào)校正階段,能有效提高定位精度。
圖6 不同手機(jī)無(wú)線信號(hào)分布圖
為解決設(shè)備差異對(duì)WiFi定位造成的影響,Ekahau提出一種自動(dòng)校正的方法。它是通過(guò)分析跟蹤設(shè)備在一些易于檢測(cè)的區(qū)域時(shí)的信號(hào)變化,自動(dòng)學(xué)習(xí)跟蹤建立相應(yīng)的映射關(guān)系,該方法的缺點(diǎn)是設(shè)備不易進(jìn)入易檢測(cè)區(qū),系統(tǒng)很難獲得充足的數(shù)據(jù)建立映射關(guān)系[5]。Haeberlen的研究顯示,校正設(shè)備與測(cè)試設(shè)備之間的信號(hào)強(qiáng)度之間存在某種線性關(guān)系[6]。本文經(jīng)過(guò)大量實(shí)驗(yàn),統(tǒng)計(jì)獲得數(shù)據(jù)并通過(guò)函數(shù)擬合的方法,推導(dǎo)出校正設(shè)備及測(cè)試設(shè)備的關(guān)系,可以看作y=ax+b的線性關(guān)系,參數(shù)a、b將由實(shí)際的數(shù)據(jù)獲得。
4 實(shí)驗(yàn)結(jié)果與分析
實(shí)驗(yàn)區(qū)域?yàn)?0 m×16 m,每隔1.5 m設(shè)定為一個(gè)采樣點(diǎn),AP分布在該區(qū)域的四周如圖7黑色圓點(diǎn)位置,每個(gè)采樣點(diǎn)分別采集200次經(jīng)過(guò)平滑處理后存入離線數(shù)據(jù)庫(kù)。為比較定位結(jié)果的精確性,選定如下5個(gè)點(diǎn)為測(cè)試點(diǎn):A位于出口處附近,B位于區(qū)域的中心位置,C、D、E點(diǎn)位于區(qū)域的邊界處。
圖7 采樣分布圖
改進(jìn)前和改進(jìn)后分別進(jìn)行40次測(cè)試,實(shí)驗(yàn)結(jié)果分析如表1所列。應(yīng)用改進(jìn)后的算法各測(cè)試點(diǎn)的平均誤差均有所下降,A點(diǎn)位于出口處,可能會(huì)受其他因素影響,定位效果不明顯;B、D點(diǎn),受外界影響較小,定位效果較好,定位精度提高2 m左右。
表1 實(shí)驗(yàn)結(jié)果
[1] 盧恒惠,劉興川,張超,等. 基于三角形與位置指紋識(shí)別算法的WiFi定位比較[J].移動(dòng)通信,2010(10):72-76.
[2] 潘立波.基于WiFi技術(shù)的無(wú)線定位算法研究與實(shí)現(xiàn)[D].浙江大學(xué),2013:9-13.
[3] 裴文蓮,詹林.Android平臺(tái)上WiFi技術(shù)在商場(chǎng)員工定位系統(tǒng)中的應(yīng)用[J].計(jì)算機(jī)與現(xiàn)代化,2013(2):160-161.
[4] 容曉峰,楊娜.RSSI位置指紋的定位誤差分析與仿真[J].西北工業(yè)大學(xué)學(xué)報(bào),2010,30(6):574-577.
[5] 雷家毅.Android平臺(tái)基于WiFi的定位算法與系統(tǒng)設(shè)計(jì)[D].華東理工大學(xué),2012:16-25.
[6] Haeberlen A, Flannery E, Ladd A M, et al. Practical robust localization over large-scale 802.11 wireless networks[C]. In Proceedings of ACMMOBICOM.2004:70-84.
魏菲(碩士研究生)、李允俊(教授)、金華(副教授),研究方向?yàn)榍度胧较到y(tǒng)。
參考文獻(xiàn)
[1] 劉寧, 歸奕紅. 嵌入式智能家居系統(tǒng)設(shè)計(jì)方案[J]. 吉林省教育學(xué)院學(xué)報(bào), 2008(5).
[2] 張維勇, 馮琳, 魏振春. ZigBee實(shí)現(xiàn)家庭組網(wǎng)技術(shù)的研究[J]. 合肥工業(yè)大學(xué)學(xué)報(bào), 2005,28(7).
[3] 程立輝, 沈高峰, 馬吉明. 信息家電無(wú)線網(wǎng)關(guān)系統(tǒng)總體設(shè)計(jì)與實(shí)現(xiàn)[J]. 航空計(jì)算技術(shù). 2006,29(11).
[4] 王進(jìn)德. 嵌入式LINUX程序設(shè)計(jì)與應(yīng)用案例[M]. 北京:中國(guó)電力出版社, 2007.
[5] 韋東山. 嵌入式Linux應(yīng)用開(kāi)發(fā)完全手冊(cè)[M]. 北京:人民郵電出版社, 2008.
[6] 呂捷. GPRS技術(shù)[M]. 北京:北京郵電大學(xué)出版社, 2001.
[7] 杜春雷. ARM體系結(jié)構(gòu)與編程[M]. 北京:清華大學(xué)出版社, 2003.
(責(zé)任編輯:高珍 收稿日期:2013-11-20)
WiFi Location System Based on Position Fingerprint Algorithm
Wei Fei, Li Yunjun,Jin Hua
(Yanbian University Institute of Technology,Yanji 133000,China)
With the construction and promotion of wireless city, WiFi wireless hotspots are increasing gradually, and location application based on smart phone is receiving more and more attention. But in high-rises downtown or indoor scenes the system can't navigate only by GPS satellite positioning system. Therefore, this article designes a kind of WiFi location system based on position fingerprint algorithm on Android platform with the characteristics of WiFi signal. According to WiFi signal unstability and different devices wireless signal differences, this algorithm is improved.
WiFi location; position fingerprint algorithm ;Android
TP319
A
迪娜
2013-12-03)