康明濤,張 峰,梁 源,趙 黎
(西安工業(yè)大學(xué) 電子信息工程學(xué)院,西安710021)
隨著智能終端的快速發(fā)展和人們對(duì)基于位置服務(wù)的需求與日俱增,定位導(dǎo)航的應(yīng)用需求已不僅僅滿足于室外,室內(nèi)定位正逐漸成為人們關(guān)注的熱點(diǎn)。 相對(duì)于室外定位而言,室內(nèi)定位的發(fā)展無疑現(xiàn)處于起步階段。 本文提出一種基于指紋識(shí)別的藍(lán)牙高精度室內(nèi)定位系統(tǒng)。由于iBeacon 在室內(nèi)定位具有設(shè)備體積比較小、功耗低、建立連接時(shí)間短等優(yōu)點(diǎn),所以采用iBeacon 作為信標(biāo)節(jié)點(diǎn),在Android 設(shè)備上采集相應(yīng)UUID 和接收信號(hào)強(qiáng)度值即RSSI 值[1-4]。將基于藍(lán)牙微功耗的室內(nèi)指紋定位技術(shù)和Android 平臺(tái)軟件開發(fā)技術(shù)相結(jié)合應(yīng)用于室內(nèi)定位當(dāng)中,形成一套完整的室內(nèi)指紋定位系統(tǒng),完成室內(nèi)指紋定位算法的研究和定位端Android 平臺(tái)軟件的設(shè)計(jì)。 為推廣室內(nèi)定位以及降低室內(nèi)定位的成本提供了一個(gè)更為可靠、經(jīng)濟(jì)且應(yīng)用易普及的技術(shù)方案。
整個(gè)定位系統(tǒng)主要包括三部分:BLE 基站、移動(dòng)設(shè)備及室內(nèi)定位系統(tǒng)。 如圖1 所示,只要用戶的移動(dòng)終端接收到BLE 的信號(hào)強(qiáng)度值及BLE 的MAC地址, 就可以通過與指紋庫匹配得到BLE 的坐標(biāo),利用算法估計(jì)出目標(biāo)物體的位置。
圖1 系統(tǒng)總體方案圖Fig.1 System overall plan
BLE 基站BLE 基站作為室內(nèi)定位系統(tǒng)的信標(biāo)節(jié)點(diǎn),通過在室內(nèi)空間部署B(yǎng)LE 基站,覆蓋整個(gè)定位區(qū)域。合理的BLE 基站布局和數(shù)量可以提高室內(nèi)藍(lán)牙指紋定位系統(tǒng)的精度。
智能終端主要安裝在安卓系統(tǒng)的手機(jī)上,由兩部分組成。 人機(jī)界面的顯示和操作。 主要是用戶輸入定位請(qǐng)求,并查看定位結(jié)果;檢測(cè)部署的信標(biāo)節(jié)點(diǎn)并采集信標(biāo)節(jié)點(diǎn)的信號(hào)強(qiáng)度,發(fā)送采集的信號(hào)強(qiáng)度和定位請(qǐng)求,并接收定位結(jié)果。
室內(nèi)定位服務(wù)系統(tǒng)室內(nèi)定位服務(wù)系統(tǒng)通過網(wǎng)絡(luò)與客戶端實(shí)現(xiàn)通信,響應(yīng)客戶端發(fā)送的定位請(qǐng)求信息。 若是接收到定位請(qǐng)求,則接收客戶端發(fā)送的信標(biāo)節(jié)點(diǎn)信號(hào)強(qiáng)度,經(jīng)過預(yù)處理后使用定位算法匹配位置指紋數(shù)據(jù)庫,返回相應(yīng)的位置信息。
2.1.1 離線指紋采集階段
首先在定位環(huán)境中部署AP,在定位的區(qū)域選擇特定的參考節(jié)點(diǎn)如圖2 所示,并采集這些熱點(diǎn)的信號(hào)強(qiáng)度,使得每個(gè)都能接收到AP 發(fā)射的信號(hào),從而建立一個(gè)位置與信號(hào)強(qiáng)度信息與對(duì)應(yīng)的位置關(guān)系的指紋數(shù)據(jù)庫,即指紋地圖。 我們將定位區(qū)域劃分為lm*lm的網(wǎng)格,選取中心的點(diǎn)作為參考節(jié)點(diǎn),然后收集這些參考節(jié)點(diǎn)接收的信號(hào)強(qiáng)度并且存到指紋數(shù)據(jù)庫中,另外發(fā)送這些信號(hào)的基站的坐標(biāo)和MAC地址也需要存入指紋數(shù)據(jù)庫中[5]。 由于各種不確定的因素的存在,因此收集上述信息的時(shí)候需要多次測(cè)量,求平均后再存到數(shù)據(jù)庫,得到的指紋庫矩陣如式(1)所示。
式中:m 表示采樣點(diǎn)的個(gè)數(shù);n 表示采樣設(shè)備接收到iBeacon 信號(hào)強(qiáng)度值個(gè)數(shù);x,y 表示采樣點(diǎn)的坐標(biāo)信息。
2.1.2 在線定位階段
在線定位階段,如圖2 所示。 通過智能手機(jī)實(shí)時(shí)測(cè)量獲取各AP 信號(hào)強(qiáng)度信息之后,使用數(shù)據(jù)預(yù)處理算法對(duì)數(shù)據(jù)進(jìn)行處理,使用匹配算法與位置指紋數(shù)據(jù)庫進(jìn)行對(duì)比,計(jì)算出最合適的位置返回給用戶,從而完成定位。 常用的算法有最近鄰法、K 近鄰法、K 加權(quán)近鄰法、概率算法、神經(jīng)網(wǎng)絡(luò)法等[6-8]。
近鄰法是一種最基本,最簡單的分類方法,它基本上不需要數(shù)據(jù)的先驗(yàn)知識(shí),是非常經(jīng)典的室內(nèi)定位算法[9]。近鄰法包括最近鄰位法,KNN 算法和WKNN算法。 最近鄰位法根據(jù)移動(dòng)設(shè)備實(shí)時(shí)采集到的信標(biāo)節(jié)點(diǎn)的RSSI 值與位置指紋庫數(shù)據(jù)進(jìn)行匹配,找到相似度最高的位置指紋所對(duì)應(yīng)參考點(diǎn)作為定位坐標(biāo),KNN 算法是選取K 個(gè)相似度最好的位置指紋所對(duì)應(yīng)的參考點(diǎn)的坐標(biāo)平均值[11-12]。
圖2 指紋算法定位原理示意圖Fig.2 Schematic diagram of fingerprint algorithm positioning principle
假設(shè)在定位階段, 移動(dòng)設(shè)備在位置定位點(diǎn)實(shí)時(shí)采集的數(shù)據(jù)為[RSSI1,…,RSSIn],n 為定位信標(biāo)節(jié)點(diǎn)個(gè)數(shù),位置指紋庫所構(gòu)成的矩陣為S=[S1,S2,…,Sn],其中則參考點(diǎn)指紋與實(shí)時(shí)采集的數(shù)據(jù)的歐氏距離為
通過計(jì)算我們可以得到m 個(gè)距離Di,選取K 個(gè)距離最小的位置指紋所對(duì)應(yīng)的參考點(diǎn),然后計(jì)算參考點(diǎn)所在坐標(biāo)的平均值,則:
式中:(x,y)表示終端用戶的定位坐標(biāo);K 表示選取的參考點(diǎn)對(duì)應(yīng)的個(gè)數(shù)。
KNN 算法的定位精度隨著K 的取值不同呈現(xiàn)不規(guī)則的變化,由于位置指紋法最關(guān)注的定位精度在3~4 m 之間,可得出當(dāng)K=3 時(shí)定位精度達(dá)到最高如圖3 和表1 所示。信標(biāo)節(jié)點(diǎn)的位置及個(gè)數(shù)都對(duì)定位精度有著明顯的影響,當(dāng)節(jié)點(diǎn)位置分布均勻且相對(duì)擴(kuò)散時(shí),定位精度能夠得到較大的提高。 信標(biāo)節(jié)點(diǎn)的個(gè)數(shù)增加時(shí),也能夠顯著的提高定位精度,但隨著信標(biāo)節(jié)點(diǎn)個(gè)數(shù)的增加,系統(tǒng)所承擔(dān)的計(jì)算量將成指數(shù)形式增加,所以在實(shí)際應(yīng)用中應(yīng)綜合考慮以上各種因素選擇合適的信標(biāo)節(jié)點(diǎn)數(shù)量及節(jié)點(diǎn)位置。
圖3 KNN 算法K 值定位誤差分布Fig.3 Distribution of K-value localization error of KNN algorithm
表1 KNN 定位誤差均值、標(biāo)準(zhǔn)差與正確率Tab.1 KNN positioning error mean,standard deviation and correct rate
根據(jù)藍(lán)牙RSSI 值在室內(nèi)的分布特征以及其影響因素,在設(shè)計(jì)實(shí)現(xiàn)基于低功耗藍(lán)牙和位置指紋的室內(nèi)定位系統(tǒng)時(shí),在對(duì)藍(lán)牙的部署上適當(dāng)進(jìn)行一些改進(jìn)即可在一定程度上提高定位精度,減小環(huán)境影響[10],如圖4 所示。 在部署低功耗藍(lán)牙時(shí),盡量讓被定為物體可能出現(xiàn)的所有位置上能夠接收到3 個(gè)或者3 個(gè)以上的藍(lán)牙信號(hào);藍(lán)牙的部署位置盡量遠(yuǎn)離人為活動(dòng)較為平凡的地方,或者使藍(lán)牙與人為活動(dòng)較為平凡的地方盡量隔有障礙物;在進(jìn)行藍(lán)牙信標(biāo)節(jié)點(diǎn)部署前,盡量測(cè)量好藍(lán)牙信標(biāo)節(jié)點(diǎn)的最佳定位距離,在部署時(shí)使得藍(lán)牙信標(biāo)節(jié)點(diǎn)的部署距離保持在最佳距離。
圖4 ibeacon 部署示意圖Fig.4 Schematic diagram of ibeacon deployment
本系統(tǒng)的開發(fā)平臺(tái)基于Eclipese+Android De velopment Toolkit(ADT)開發(fā)環(huán)境,可以為客戶實(shí)現(xiàn)在線室內(nèi)定位功能。 應(yīng)用程序流程設(shè)計(jì)如圖5所示。
圖5 應(yīng)用程序流程Fig.5 Application flow chart
結(jié)合Android 平臺(tái)以Activity 為基礎(chǔ)的程序設(shè)計(jì)特點(diǎn), 客戶端的模塊主要分為登錄驗(yàn)證模塊,ibecon 信息采集模塊,參數(shù)配置以及狀態(tài)監(jiān)控模塊。登錄驗(yàn)證模塊主要用于用戶的登錄驗(yàn)證過程,包括LoginActivity 文件。 指紋信息采集模塊主要是對(duì)指紋信息進(jìn)行采集并存儲(chǔ)建立離線指紋庫,主要包括DeviceScanActivity,iBeaconClass,LeDeviceListAdapter等文件。
系統(tǒng)定位端的狀態(tài)監(jiān)控界面主要實(shí)現(xiàn)對(duì)目標(biāo)物模擬定位顯示功能,主要包括位置信息、狀態(tài)信息的顯示。 在安卓端通過與服務(wù)器以及數(shù)據(jù)采集部分之間的通信功能,接收并顯示來自室內(nèi)定位信息采集部分的數(shù)據(jù),并將數(shù)據(jù)運(yùn)算結(jié)果繪制在按比例模擬室內(nèi)的顯示屏上。
系統(tǒng)測(cè)試時(shí),將藍(lán)牙信標(biāo)節(jié)點(diǎn)置于測(cè)試區(qū)域的角落。 打開手機(jī)上的應(yīng)用程序,首先會(huì)詢問是否打開藍(lán)牙,會(huì)直接進(jìn)入應(yīng)用程序的主界面,單機(jī)“ibea con 信息”時(shí),顯示當(dāng)前掃描到藍(lán)牙信標(biāo)節(jié)點(diǎn)的個(gè)數(shù)和信息,包括UUID,Major,Distance 等等。 如圖6所示。
在Android 監(jiān)控界面中的長方形為按照一定比例模擬的房間示意圖,界面上還包括坐標(biāo)系X、Y 軸建立的示意圖,圓球?yàn)槟繕?biāo)物即要被定位的目標(biāo)物體,如圖7 所示。
圖6 ibeacon 信息界面Fig.6 ibeacon information interface
圖7 定位物狀態(tài)監(jiān)控界面Fig.7 Locator status monitoring interface
表2 定位結(jié)果誤差分析表Tab.2 Error analysis of positioning results
以低功耗藍(lán)牙和位置指紋的定位技術(shù)作為研究對(duì)象, 結(jié)合Android 平臺(tái)軟件開發(fā)技術(shù)完成了室內(nèi)定位系統(tǒng)定位端的設(shè)計(jì)與開發(fā)。 針對(duì)藍(lán)牙RSSI在室內(nèi)分布特征以及對(duì)藍(lán)牙RSSI 分布產(chǎn)生影響,總結(jié)出藍(lán)牙在室內(nèi)的合理部署方式。 通過對(duì)信標(biāo)節(jié)點(diǎn)和用戶信息采集, 包括信標(biāo)節(jié)點(diǎn)的UUID、RSSI值、Major、Minor 等數(shù)值的采集,建立離線指紋庫。在實(shí)時(shí)定位階段與離線指紋庫可以通過指紋定位算法得出用戶位置信息, 并在應(yīng)用程序界面進(jìn)行顯示。 從系統(tǒng)測(cè)試結(jié)果來看,所測(cè)試的數(shù)據(jù)均在誤差范圍內(nèi),定位精度可以達(dá)到亞米級(jí),可以滿足室內(nèi)環(huán)境下基于位置的服務(wù)基本需求。 為今后室內(nèi)定位及相關(guān)應(yīng)用奠定了良好的基礎(chǔ)。