康明濤,張 峰,梁 源,趙 黎
(西安工業大學 電子信息工程學院,西安710021)
隨著智能終端的快速發展和人們對基于位置服務的需求與日俱增,定位導航的應用需求已不僅僅滿足于室外,室內定位正逐漸成為人們關注的熱點。 相對于室外定位而言,室內定位的發展無疑現處于起步階段。 本文提出一種基于指紋識別的藍牙高精度室內定位系統。由于iBeacon 在室內定位具有設備體積比較小、功耗低、建立連接時間短等優點,所以采用iBeacon 作為信標節點,在Android 設備上采集相應UUID 和接收信號強度值即RSSI 值[1-4]。將基于藍牙微功耗的室內指紋定位技術和Android 平臺軟件開發技術相結合應用于室內定位當中,形成一套完整的室內指紋定位系統,完成室內指紋定位算法的研究和定位端Android 平臺軟件的設計。 為推廣室內定位以及降低室內定位的成本提供了一個更為可靠、經濟且應用易普及的技術方案。
整個定位系統主要包括三部分:BLE 基站、移動設備及室內定位系統。 如圖1 所示,只要用戶的移動終端接收到BLE 的信號強度值及BLE 的MAC地址, 就可以通過與指紋庫匹配得到BLE 的坐標,利用算法估計出目標物體的位置。

圖1 系統總體方案圖Fig.1 System overall plan
BLE 基站BLE 基站作為室內定位系統的信標節點,通過在室內空間部署BLE 基站,覆蓋整個定位區域。合理的BLE 基站布局和數量可以提高室內藍牙指紋定位系統的精度。
智能終端主要安裝在安卓系統的手機上,由兩部分組成。 人機界面的顯示和操作。 主要是用戶輸入定位請求,并查看定位結果;檢測部署的信標節點并采集信標節點的信號強度,發送采集的信號強度和定位請求,并接收定位結果。
室內定位服務系統室內定位服務系統通過網絡與客戶端實現通信,響應客戶端發送的定位請求信息。 若是接收到定位請求,則接收客戶端發送的信標節點信號強度,經過預處理后使用定位算法匹配位置指紋數據庫,返回相應的位置信息。
2.1.1 離線指紋采集階段
首先在定位環境中部署AP,在定位的區域選擇特定的參考節點如圖2 所示,并采集這些熱點的信號強度,使得每個都能接收到AP 發射的信號,從而建立一個位置與信號強度信息與對應的位置關系的指紋數據庫,即指紋地圖。 我們將定位區域劃分為lm*lm的網格,選取中心的點作為參考節點,然后收集這些參考節點接收的信號強度并且存到指紋數據庫中,另外發送這些信號的基站的坐標和MAC地址也需要存入指紋數據庫中[5]。 由于各種不確定的因素的存在,因此收集上述信息的時候需要多次測量,求平均后再存到數據庫,得到的指紋庫矩陣如式(1)所示。

式中:m 表示采樣點的個數;n 表示采樣設備接收到iBeacon 信號強度值個數;x,y 表示采樣點的坐標信息。
2.1.2 在線定位階段
在線定位階段,如圖2 所示。 通過智能手機實時測量獲取各AP 信號強度信息之后,使用數據預處理算法對數據進行處理,使用匹配算法與位置指紋數據庫進行對比,計算出最合適的位置返回給用戶,從而完成定位。 常用的算法有最近鄰法、K 近鄰法、K 加權近鄰法、概率算法、神經網絡法等[6-8]。
近鄰法是一種最基本,最簡單的分類方法,它基本上不需要數據的先驗知識,是非常經典的室內定位算法[9]。近鄰法包括最近鄰位法,KNN 算法和WKNN算法。 最近鄰位法根據移動設備實時采集到的信標節點的RSSI 值與位置指紋庫數據進行匹配,找到相似度最高的位置指紋所對應參考點作為定位坐標,KNN 算法是選取K 個相似度最好的位置指紋所對應的參考點的坐標平均值[11-12]。

圖2 指紋算法定位原理示意圖Fig.2 Schematic diagram of fingerprint algorithm positioning principle
假設在定位階段, 移動設備在位置定位點實時采集的數據為[RSSI1,…,RSSIn],n 為定位信標節點個數,位置指紋庫所構成的矩陣為S=[S1,S2,…,Sn],其中則參考點指紋與實時采集的數據的歐氏距離為

通過計算我們可以得到m 個距離Di,選取K 個距離最小的位置指紋所對應的參考點,然后計算參考點所在坐標的平均值,則:

式中:(x,y)表示終端用戶的定位坐標;K 表示選取的參考點對應的個數。
KNN 算法的定位精度隨著K 的取值不同呈現不規則的變化,由于位置指紋法最關注的定位精度在3~4 m 之間,可得出當K=3 時定位精度達到最高如圖3 和表1 所示。信標節點的位置及個數都對定位精度有著明顯的影響,當節點位置分布均勻且相對擴散時,定位精度能夠得到較大的提高。 信標節點的個數增加時,也能夠顯著的提高定位精度,但隨著信標節點個數的增加,系統所承擔的計算量將成指數形式增加,所以在實際應用中應綜合考慮以上各種因素選擇合適的信標節點數量及節點位置。

圖3 KNN 算法K 值定位誤差分布Fig.3 Distribution of K-value localization error of KNN algorithm

表1 KNN 定位誤差均值、標準差與正確率Tab.1 KNN positioning error mean,standard deviation and correct rate
根據藍牙RSSI 值在室內的分布特征以及其影響因素,在設計實現基于低功耗藍牙和位置指紋的室內定位系統時,在對藍牙的部署上適當進行一些改進即可在一定程度上提高定位精度,減小環境影響[10],如圖4 所示。 在部署低功耗藍牙時,盡量讓被定為物體可能出現的所有位置上能夠接收到3 個或者3 個以上的藍牙信號;藍牙的部署位置盡量遠離人為活動較為平凡的地方,或者使藍牙與人為活動較為平凡的地方盡量隔有障礙物;在進行藍牙信標節點部署前,盡量測量好藍牙信標節點的最佳定位距離,在部署時使得藍牙信標節點的部署距離保持在最佳距離。

圖4 ibeacon 部署示意圖Fig.4 Schematic diagram of ibeacon deployment
本系統的開發平臺基于Eclipese+Android De velopment Toolkit(ADT)開發環境,可以為客戶實現在線室內定位功能。 應用程序流程設計如圖5所示。

圖5 應用程序流程Fig.5 Application flow chart
結合Android 平臺以Activity 為基礎的程序設計特點, 客戶端的模塊主要分為登錄驗證模塊,ibecon 信息采集模塊,參數配置以及狀態監控模塊。登錄驗證模塊主要用于用戶的登錄驗證過程,包括LoginActivity 文件。 指紋信息采集模塊主要是對指紋信息進行采集并存儲建立離線指紋庫,主要包括DeviceScanActivity,iBeaconClass,LeDeviceListAdapter等文件。
系統定位端的狀態監控界面主要實現對目標物模擬定位顯示功能,主要包括位置信息、狀態信息的顯示。 在安卓端通過與服務器以及數據采集部分之間的通信功能,接收并顯示來自室內定位信息采集部分的數據,并將數據運算結果繪制在按比例模擬室內的顯示屏上。
系統測試時,將藍牙信標節點置于測試區域的角落。 打開手機上的應用程序,首先會詢問是否打開藍牙,會直接進入應用程序的主界面,單機“ibea con 信息”時,顯示當前掃描到藍牙信標節點的個數和信息,包括UUID,Major,Distance 等等。 如圖6所示。
在Android 監控界面中的長方形為按照一定比例模擬的房間示意圖,界面上還包括坐標系X、Y 軸建立的示意圖,圓球為目標物即要被定位的目標物體,如圖7 所示。

圖6 ibeacon 信息界面Fig.6 ibeacon information interface

圖7 定位物狀態監控界面Fig.7 Locator status monitoring interface

表2 定位結果誤差分析表Tab.2 Error analysis of positioning results
以低功耗藍牙和位置指紋的定位技術作為研究對象, 結合Android 平臺軟件開發技術完成了室內定位系統定位端的設計與開發。 針對藍牙RSSI在室內分布特征以及對藍牙RSSI 分布產生影響,總結出藍牙在室內的合理部署方式。 通過對信標節點和用戶信息采集, 包括信標節點的UUID、RSSI值、Major、Minor 等數值的采集,建立離線指紋庫。在實時定位階段與離線指紋庫可以通過指紋定位算法得出用戶位置信息, 并在應用程序界面進行顯示。 從系統測試結果來看,所測試的數據均在誤差范圍內,定位精度可以達到亞米級,可以滿足室內環境下基于位置的服務基本需求。 為今后室內定位及相關應用奠定了良好的基礎。