張良承,顧留碗,李曉明,母曉敏,楊濤,湯婕
( 滁州學(xué)院 地理信息與旅游學(xué)院, 安徽 滁州 239000 )
位置信息已經(jīng)成為現(xiàn)代社會(huì)發(fā)展依賴的重要信息資源之一[1],位置服務(wù)逐漸由室外向室內(nèi)發(fā)展. 當(dāng)前室外定位已有成熟的技術(shù),如美國的GPS[2]、中國的北斗衛(wèi)星導(dǎo)航系統(tǒng)(BDS)等[3],已經(jīng)基本滿足人們的日常需求. 但是室內(nèi)環(huán)境錯(cuò)綜復(fù)雜,鋼筋混凝土墻壁對(duì)衛(wèi)星信號(hào)有著巨大的干擾,使得室內(nèi)定位存在較大的偏差,針對(duì)這一情況,其他科研團(tuán)隊(duì)陸續(xù)開發(fā)出了Wi-Fi[4]、藍(lán)牙[5]、超寬帶(UWB)[6]等室內(nèi)定位系統(tǒng)[7]. 如美國蘋果公司開發(fā)了基于無線局域網(wǎng)(WLAN)的iBeacon[8]室內(nèi)定位系統(tǒng),香港科技大學(xué)提出了基于射頻識(shí)別(RFID)的LANDMARC定位系統(tǒng)[9]等,基本實(shí)現(xiàn)了在復(fù)雜室內(nèi)環(huán)境中的定位,但是上述方法或者單一的接收信號(hào)強(qiáng)度指示(RSSI)算法存在成本高昂、計(jì)算量相對(duì)較大,定位精度較低等問題.
基于上述問題,本文以成本較低的Wi-Fi為信號(hào)源,對(duì)三角定位算法和位置指紋定位算法進(jìn)行研究,提出了一種基于RSSI的室內(nèi)聯(lián)合定位算法. 該算法以K近鄰位置指紋匹配算法為基礎(chǔ),加入三角定位輔助算法,得出小范圍定位參考區(qū)域,然后利用K近鄰算法在該參考區(qū)域內(nèi)進(jìn)行位置指紋匹配,有效地減少了單一RSSI算法需匹配的位置指紋計(jì)算數(shù)量,最后將計(jì)算得到的位置指紋的參考坐標(biāo)輸出為最終估計(jì)位置.
Wi-Fi作為一種電磁波,符合電磁波的傳播規(guī)律,其通信距離可達(dá)76~122 m[10]. 本文基于RSSI與距離的相關(guān)性,利用Wi-Fi的信號(hào)強(qiáng)度RSSI作為測(cè)距的信息量,將獲取的多個(gè)接入點(diǎn)(AP)的RSSI信號(hào)強(qiáng)度值代入RSSI定位算法,得到當(dāng)前的最佳估計(jì)位置.
三角定位方法[11]利用幾何學(xué)原理,根據(jù)定位目標(biāo)與各個(gè)AP之間距離,使用幾何法計(jì)算估計(jì)位置坐標(biāo). 圖1中已知參考點(diǎn)A、B、C的坐標(biāo)分別為(xa,ya)、(xb,yb)、(xc,yc),測(cè)得參考點(diǎn)到待定點(diǎn)D的距離分別為da、db、dc,通過式(1)可得到D點(diǎn)的坐標(biāo)
圖1 三角定位法示意圖
位置指紋定位法[12]分為離線訓(xùn)練和在線定位兩個(gè)階段,離線訓(xùn)練階段獲取定位環(huán)境中各個(gè)AP的網(wǎng)絡(luò)名稱、RSSI、MAC地址以及參考位置信息,存儲(chǔ)并構(gòu)成位置指紋數(shù)據(jù)庫. 如圖2所示,當(dāng)用戶進(jìn)行定位時(shí),終端實(shí)時(shí)獲取RSSI等AP信息,并與位置指紋庫中的位置指紋進(jìn)行匹配,將獲取相似度最高的位置作為估算位置.
圖2 位置指紋法示意圖
由于RSSI信號(hào)易受室內(nèi)錯(cuò)綜復(fù)雜的環(huán)境影響,尤其是建筑自身結(jié)構(gòu)造成的多徑干擾,從而產(chǎn)生時(shí)延擴(kuò)展造成誤差,故在訓(xùn)練階段采集位置指紋時(shí),需對(duì)信號(hào)進(jìn)行濾波處理,本文采用均值濾波方法對(duì)信號(hào)進(jìn)行處理,以減弱RSSI信號(hào)由于多徑干擾產(chǎn)生的誤差.如式(2)所示
近鄰算法(NN)[13]是基于RSSI最基本的指紋定位算法,在測(cè)試區(qū)域內(nèi)測(cè)得p個(gè)位置指紋,記作{F1,F(xiàn)2,···,F(xiàn)p},每個(gè)位置指紋與現(xiàn)實(shí)位置{T1,T2,···,TP}有一對(duì)一的映射關(guān)系. 在線定位階段,一個(gè)位置指紋樣例記為W,它包含有來自n個(gè)AP的RSSI的平均值,即W=(w1,w2,···,wn). 位置指紋數(shù)據(jù)庫里,每個(gè)位置指紋表示成Fi=(r1i,r2i,···,rni),其中,rni表示第i個(gè)位置指紋里包含的來自第n個(gè)AP的RSSI的平均值. 其計(jì)算公式為
最后,使用當(dāng)前位置的RSSI與位置指紋數(shù)據(jù)庫中的位置指紋進(jìn)行匹配,得出與當(dāng)前真實(shí)位置歐氏距離最小的位置指紋,其存儲(chǔ)的真實(shí)位置坐標(biāo)即為定位位置. 其計(jì)算公式為
K最近鄰分類算法(KNN)[14]先使用NN計(jì)算出目標(biāo)點(diǎn)與各個(gè)參考點(diǎn)的歐式距離,然后篩選出距離目標(biāo)點(diǎn)最近的K個(gè)參考點(diǎn),用這K個(gè)參考點(diǎn)對(duì)應(yīng)的坐標(biāo)取平均值,以此估算出目標(biāo)點(diǎn)的位置. 目標(biāo)點(diǎn)的坐標(biāo)可由式(5)得出:
式中,(x,y)為K個(gè)近鄰參考點(diǎn)中第i個(gè)參考點(diǎn)的坐標(biāo).
KNN分類算法計(jì)算量較大,耗時(shí)長,影響定位的效率,但其精度比三角定位算法高;三角定位只需進(jìn)行簡(jiǎn)單計(jì)算即可得出定位大致區(qū)域,因此計(jì)算量較小,但其精度也有所降低.
本文在KNN分類算法的基礎(chǔ)上加入三角定位算法,按離線階段、定位階段實(shí)現(xiàn)聯(lián)合定位方法[15].在離線階段,采集位置指紋信息的同時(shí),存儲(chǔ)該位置RSSI最強(qiáng)的3個(gè)AP信息,生成聯(lián)合指紋數(shù)據(jù)庫;在定位階段,首先獲取待測(cè)位置最強(qiáng)的5個(gè)Wi-Fi信息,并以其中最強(qiáng)的3個(gè)AP進(jìn)行三角定位,得出估計(jì)范圍;然后遍歷聯(lián)合指紋數(shù)據(jù)庫中處于三角定位范圍內(nèi)的AP點(diǎn)位置指紋記錄,剔除其他無關(guān)的位置數(shù)據(jù);最后通過KNN分類算法計(jì)算得出最優(yōu)AP點(diǎn)并輸出其位置坐標(biāo),作為最終估計(jì)位置,圖3為流程圖.
圖3 聯(lián)合定位方法流程
需注意的是,本文算法建議在AP數(shù)量較多,且信號(hào)較穩(wěn)定的環(huán)境中測(cè)試,若待測(cè)點(diǎn)AP數(shù)量少于5個(gè),則定位階段的定位坐標(biāo)只會(huì)顯示在初始位置,并不會(huì)進(jìn)行定位.
文獻(xiàn)[16-18]采用C/S架構(gòu)進(jìn)行系統(tǒng)開發(fā),對(duì)數(shù)據(jù)實(shí)時(shí)傳輸有著一定的影響,導(dǎo)致定位精度偏低. 故系統(tǒng)客戶端基于Android平臺(tái),采用JDK、Android Studio、Android SDK的搭配進(jìn)行系統(tǒng)開發(fā),數(shù)據(jù)庫端采用對(duì)象關(guān)系映射(ORM)框架操作Android自帶的SQLite實(shí)現(xiàn)位置指紋數(shù)據(jù)庫的創(chuàng)建以及定位服務(wù),所有功能都由Java語言實(shí)現(xiàn),圖4為系統(tǒng)架構(gòu).
圖4 室內(nèi)定位系統(tǒng)架構(gòu)
主要功能包括地圖導(dǎo)入、掃描并采集周圍Wi-Fi信息、與數(shù)據(jù)庫端的交互、顯示定位結(jié)果和導(dǎo)出采集信息[19]. 圖5為AP信息采集頁面,圖6為定位結(jié)果界面.
圖6 定位結(jié)果
調(diào)用Wi-FiManager和Wi-FiInfo函數(shù),封裝Wi-Fi網(wǎng)絡(luò)名稱SSID、MAC地址BSSID及RSSI,在采集信息和在線定位界面時(shí)載入封裝包. 位置指紋信息采集時(shí),將采集到的Wi-Fi信息進(jìn)行封裝,發(fā)給數(shù)據(jù)庫端并存儲(chǔ)到位置指紋數(shù)據(jù)庫中;在線定位階段,用戶通過移動(dòng)設(shè)備獲取當(dāng)前Wi-Fi位置信息,并傳輸?shù)綌?shù)據(jù)庫端進(jìn)行處理,經(jīng)過改進(jìn)后的聯(lián)合定位算法匹配后,得到當(dāng)前位置信息,返回客戶端顯示,圖7為具體定位流程.
圖7 系統(tǒng)定位流程
為保持室內(nèi)定位系統(tǒng)的高效性和可靠性,本系統(tǒng)采用輕量級(jí)ORM框架操作Android自帶的SQLite軟件數(shù)據(jù)庫,盡可能減少對(duì)移動(dòng)終端的能耗[20].
數(shù)據(jù)庫端主要分為位置指紋數(shù)據(jù)庫和定位服務(wù)兩部分. 位置指紋數(shù)據(jù)庫用于存儲(chǔ)位置指紋信息和接受客戶端傳輸?shù)腤i-Fi位置指紋;定位服務(wù)用于接受實(shí)時(shí)Wi-Fi信息、訪問位置指紋數(shù)據(jù)庫,并進(jìn)行算法匹配,獲取當(dāng)前位置信息并返回客戶端展示,圖8為數(shù)據(jù)庫端功能結(jié)構(gòu)圖.
圖8 數(shù)據(jù)庫端功能結(jié)構(gòu)
為檢驗(yàn)系統(tǒng)的可行性及定位精度,測(cè)試人員使用Android智能手機(jī)小米6A作為硬件平臺(tái)安裝室內(nèi)定位系統(tǒng),在滁州學(xué)院土木學(xué)院樓6樓某12 m×14 m場(chǎng)地進(jìn)行測(cè)試,圖9為實(shí)驗(yàn)場(chǎng)地和位置指紋采集點(diǎn).
圖9 試驗(yàn)場(chǎng)地平面圖及位置指紋采集點(diǎn)
在測(cè)試場(chǎng)地內(nèi),為防止位置指紋數(shù)量過于龐大而造成數(shù)據(jù)冗余,影響定位速率和精度,測(cè)試人員手持移動(dòng)終端每隔1 m采集一個(gè)位置指紋,共采集137個(gè)位置信息,位置指紋分布如圖9所示.采集完成即存儲(chǔ)到數(shù)據(jù)庫端的位置指紋數(shù)據(jù)庫,位置指紋采集點(diǎn)時(shí)平面圖位置坐標(biāo)為(591.416,911.923 8)處掃描到的5個(gè)信號(hào)AP如表1所示.
表1 掃描到的AP信息
Wi-Fi位置指紋采集完成后,測(cè)試人員沿609、607、601、602、608和小會(huì)議室的路線進(jìn)行定位測(cè)試,系統(tǒng)每隔2 s進(jìn)行一次定位,共定位28次,圖10為定位軌跡圖. 由圖10可知,測(cè)試位置與真實(shí)位置的偏差在1~3 m,說明該系統(tǒng)在此定位環(huán)境內(nèi)具有較好的適應(yīng)性. 測(cè)試結(jié)果也無偏離較大的情況,說明該系統(tǒng)也具有較高的穩(wěn)定性.
圖10 定位軌跡圖
隨后測(cè)試人員在相同的位置采集了137個(gè)位置指紋,并在相同的位置以單一位置指紋匹配算法進(jìn)行定位測(cè)試,圖11為分別計(jì)算兩種定位算法的定位誤差和誤差累積概率,表2中將兩種算法的各類數(shù)據(jù)進(jìn)行統(tǒng)計(jì).
圖11 2種算法定位誤差與誤差累積概率
表2 兩種算法定位數(shù)據(jù)對(duì)比
由圖11和表2實(shí)驗(yàn)結(jié)果可知,本文基于RSSI的聯(lián)合算法優(yōu)于單一定位算法:定位精度是2σ下的定位精度;單一算法的平均誤差為3.31 m,且誤差在2 m和3 m以內(nèi)的可信度為0%和21.5%;而聯(lián)合算法的平均誤差為1.93 m,且誤差在2 m和3 m以內(nèi)的可信度為50%和100%. 單一算法的最大誤差為4.58 m,聯(lián)合算法的最大誤差為2.86 m. 聯(lián)合算法的誤差均在3 m以下,而單一算法的誤差均在5 m以下.
通過以上實(shí)驗(yàn)分析可知,聯(lián)合定位算法在定位精度與系統(tǒng)穩(wěn)定性方面均有改善,誤差累積概率也有較好地提升. 說明聯(lián)合定位算法通過三角算法確定參考區(qū)域后,可以有效地剔除多余的位置指紋,進(jìn)而提高定位精度.
基于RSSI聯(lián)合算法的室內(nèi)定位系統(tǒng)利用移動(dòng)終端即可進(jìn)行較為精準(zhǔn)的室內(nèi)定位,無需其他設(shè)備支持,信號(hào)源僅使用Wi-Fi公共基礎(chǔ)設(shè)施,在可用性和成本上有著顯著的優(yōu)勢(shì). 本系統(tǒng)以O(shè)RM輕量級(jí)框架操作Android自帶的SQLite軟件數(shù)據(jù)庫,減少移動(dòng)終端能耗,采用三角定位算法與K近鄰位置指紋匹配算法結(jié)合的聯(lián)合定位方法實(shí)現(xiàn)室內(nèi)定位,有效地提高了定位精度,對(duì)文獻(xiàn)[21]LBS移動(dòng)應(yīng)用有一定的參考價(jià)值. 為進(jìn)一步提高室內(nèi)定位的精度,對(duì)文獻(xiàn)[22]提出的Wi-Fi技術(shù)與其他技術(shù)的融合技術(shù)需要進(jìn)一步研究,以便更好地滿足用戶的使用需求.