前晉, 陳淑榮
(上海海事大學 信息工程學院,上海 201306)
隨著商場、地下停車場、機場等大型室內場館的興建,手機室內定位及導航需求日趨強烈,如商場中基于位置信息給予用戶手機特定的商品消息推送,地下停車場智能尋車,機場室內位置導航等。目前手機室內定位技術主要通過藍牙iBeacon和Wi-Fi來實現,文獻[1][2]使用Wi-Fi指紋定位算法,將接收Wi-Fi信號的RSSI值與已建立的指紋數據庫進行對比實現定位;文獻[3][4]使用iBeacon定位技術,首先建立iBeacon信號強度與距離之間的關系,再通過三邊定位算法實現定位。以上兩種定位技術均能滿足商場室內定位精度需求,但商場人流較大,商鋪位置易變動,導致Wi-Fi指紋庫需要時常更新維護,人工成本較大,相比之下iBeacon技術更適用于商場環境。
導航是手機位置信息服務的一種,可轉化為找尋定位點與目的地之間的最短可行路徑。常用的路徑規劃算法包括Dijkstra算法、A*搜索算法、蟻群算法等。文獻[5]指出Dijstra算法搜索全局空間,難以滿足快速規劃路徑的需求,而通過改進A*算法建立平滑的A*模型,其性能優于蟻群算法,且能處理障礙物隨機分布的復雜環境下的路徑規劃問題。可見A*算法更適用于障礙物較多的室內環境。
本文利用藍牙iBeacon技術實現手機室內定位及導航功能,首先在室內部署ibeacon設備,測量室內環境中各點的RSSI值,得出信號強度與距離之間的關系,建立iBeacon距離-RSSI損耗模型;其次手機接收iBeacon的RSSI值,上傳至服務器,利用上述模型和三邊質心法計算手機位置坐標;服務器端按照用戶輸入的目的地,采用引入回退機制的A*算法計算最優路徑,并在手機端自制的商場地圖上標示最優導航路徑。
系統主要由3個部分組成:iBeacon設備、Android智能手機、服務器,如圖1所示。
多個已知位置坐標的iBeacon部署在室內空間中,周期性地向外界廣播信號。
手機應用由Android Studio開發環境搭建而成,其功能包括接收iBeacon信號并上傳iBeacon的Major值及對應RSSI值至服務器;上傳用戶輸入的目的地;接受返回信息并在室內地圖標示當前位置;顯示服務器返回的最優導航路徑。

圖1 系統結構
服務器由MyEclipse結合Apache Tomcat搭建而成,內部存儲了iBeacon信息和地圖信息,采用基于HTTP協議的doPost方式與手機端進行數據交互,功能包括接收手機端上傳的RSSI值,運行iBeacon距離-RSSI損耗模型確定手機與iBeacon的距離;利用三邊質心法計算手機位置坐標;接收輸入的目的地信息,并運行引入回退機制的A*算法規劃最優導航路徑。
采用iBecaon進行室內定位,需先建立iBeacon距離-RSSI損耗模型,獲取手機與最近的3個iBeacon之間的距離,再通過三邊質心法計算手機位置坐標,實現定位。算法步驟如下:
第一步:RSSI值采集預處理。部署iBeacon應選取周圍無遮擋物的位置降低信號損耗,在信號穩定后采集RSSI值以防其它信號干擾,減少環境誤差;在同一地點采集多個RSSI值采用均值濾波預處理,以減少測量誤差,如式(1)。
(1)
第二步:建立iBeacon距離-RSSI損耗模型。已有實驗數據表明無線信號強度與距離存在對數關系[3-6],如式(2)。
(2)
其中,PL(d)、PL(d0)分別表示無線信號在d和d0米處的信號強度損耗,n為環境變量因子,Xσ是方差為σ的正態隨機分布,單位為dB。設d0=1 m, (2)式變為式(3)。
Rssi(d)=R1+10nlg(d)+Xσ
(3)
式中,Rssi(d)表示d米處的無線信號強度值,R1表示iBeacon與手機相距1 m時的無線信號強度值。距離d和信號強度Rssi(d)由實際測量得到,n和R1為模型的待定參數。
第三步:參數R1和n的最優估計。采用最小二乘法[7],利用最小化誤差的平方和尋找數據的最佳匹配函數,從而確定最優參數值。誤差函數如式(4)。
(4)

(5)
其中α為梯度因子,取α=0.02,使J(R1,n)達到最小即可求得所需的R1和n。根據最優參數建立的iBeacon距離-RSSI損耗模型如式(6)。
(6)
將手機端接收的RSSI值代入式(6)即可得出手機與iBeacon的距離d。
第四步:獲取手機位置坐標。采用三邊質心法[6],如圖2所示。

圖2 三邊質心法計算手機坐標示意圖
其中,A、B、C三點代表iBeacon設備位置,r1、r2、r3表示通過式(6)模型求得手機與離其最近的三個iBeacon設備的距離d。陰影三角形的三個頂點坐標分別為D(xd,yd)、E(xe,ye)、f(xf,yf),三角形的質心坐標P(x,y)即為確定的手機位置坐標,如式(7)。
(7)
導航作為室內位置服務的重要部分,實質是尋找定位點和用戶搜索目的地之間的最短可行路徑。如圖3所示。

(a)

(b)
以上海正大廣場1層為例,如圖3(a)所示,導航算法步驟如下:
第一步:室內地圖建模。將商場地圖的所有可行走路徑轉化為節點圖,如圖3(b)所示。每一節點代表一個地點,線段代表可行路徑。節點信息如下:
(1)N:整數型節點標識符,以數字形式標識節點。
(2) Floor:整數型樓層標識符,記錄該節點樓層信息。
(3) Name:字符型,記錄節點名稱,一般為對應地圖所在地名稱。
(4)X、Y:double型,記錄該節點對應地圖所在位置的二維坐標值。
(5) Next:數組型,記錄該節點可到達的下一個節點的N值。
以1節點為例,其中N=1,Floor=1,Name=“扶梯”,X=450,Y=330,Next=[2,3,4,5]。
第二步:建立最優路徑搜索算法。在A*算法的基礎上引入回退機制實現室內最優路徑規劃,流程如圖4所示,其中p,q分別為手機定位點和用戶輸入的目的節點,path為路徑節點集,close為已搜索節點集。搜索下一節點時,取出下一節點集Next中的所有值,若其屬于close,則跳過,否則計算其評估函數f(n)[5],并加入close;當遍歷完Next中所有值后,將f(n)值最小的節點作為新的p,并加入到path中,依次循環,直至p=q后,輸出最優路徑集path。節點x的評估函數f(n)如式(8)。
f(n)=g(n)+h(n)
(8)
其中,g(n)表示初始節點p到節點x的代價函數,表示節點x到目的節點q的啟發式函數,采用標準的曼哈頓距離,如式(9)。
h(n)=(|x1-x2|+|y1-y2|)
(9)
式中,x1、y1表示該節點x的二維坐標,x2、y2表示目的節點q的二維坐標。
第三步:引入回退機制的路徑選取策略。在搜索節點時,會遇到死節點,即除了上一節點沒有其它連接節點,如圖3(b)中,若以1節點為p,6節點為q,根據傳統的A*算法下一節點會選擇4節點,此時4節點即死節點,為了應對這種異常情況,算法增加了回退機制,如圖4中虛框所示。
遇到死節點時將已搜索節點集close回退到上一狀態,并加入死節點,使再次搜索路徑時忽略該節點,避免錯誤發生;另外將路徑節點集中的末值賦給p,使p恢復到上一狀態,從而實現回退過程。回退機制消除了死節點的影響,增加了算法運行的穩定性。
為確定模型的待定參數n和R1,在室內距離iBeacon設備0.1 m、0.7 m、1.3 m、1.9 m……處,選取13個點,按照定位算法步驟一對采集的RSSI值進行均值濾波,再根據步驟二運用最小二乘法選取最優參數,得出具體數值如式(10)。
(10)
為了驗證參數選取的最優性,式(5)中誤差函數J(R1,n)值的漸變情況如圖5所示。

圖4 最優路徑搜索流程

圖5 誤差函數J(R1,n)的漸變圖
可見當循環次數達到2 000次以上時,誤差函數值已基本趨于平穩且接近于零,表明參數和的估計已達到最優。
為了驗證模型的有效性,將建立的iBeacon距離-RSSI損耗模型曲線與實際測量數據進行對比,如圖6所示。

圖6 模型曲線與實際數據對比圖
其中×點表示實際測量數據,圖6中顯示曲線能有效反映iBeacon信號強度與距離之間的關系。
由上可知,模型參數選取已達最優,建立的iBeacon距離-RSSI損耗模型有效可行。
為了測量定位算法的誤差,在5.4*16.2室內部署3個iBeacon設備,二維坐標分別為A(0,7.2)、B(2.7,0)、C(2.3,16.2),單位為m。 隨機選擇30個采樣點,將采集數據代入iBeacon距離-RSSI損耗模型,再根據定位步驟三計算出手機位置坐標,與實際測量的坐標數據比較,得出定位誤差值如圖7所示。

圖7 手機室內定位誤差圖
其中最大定位誤差在3米以內,且誤差值在2米內有24次,定位精度較好。
10組實際坐標與模擬坐標的對比圖,如圖8所示。

圖8 實際坐標與模擬坐標對比圖
圖中可以看出在定位點距離墻壁較近時,藍牙信號發生反射,折射,產生多徑效應[6],定位誤差較大,而在室內中心區域則定位誤差較小。
以上10組定位算法計算總時間為6.777 s,平均每次定位算法實現時間為0.677 7 s,滿足實時定位的需求。
根據服務器計算的定位坐標,在手機端的商場地圖上標示當前位置,當用戶輸入目的地,手機上傳輸入信息,服務器根據改進的A*導航算法規劃出最優路徑并返回至手機,結果如圖9所示。
其中綠點代表起點,藍點代表終點,紅線標示為最優導航路徑。
針對商場手機定位和導航應用,首先通過實驗建立iBeacon距離-RSSI損耗模型,利用三邊質心法實現手機室內定位,在此基礎上實現了C/S架構的商場室內手機定位導航系統。手機端通過接收iBeacon信號并上傳服務器,后臺運行定位算法,計算手機的位置信息;并按照用戶輸入的目的地址,運行路徑搜索算法,返回最優可行路徑,實現商場室內導航。實驗結果表明,定位最大誤差在3 m以內,導航路徑精確,能滿足大型室內場館手機定位導航需求。

圖9 最優導航路徑結果圖