王 超, 姚瑞玲
(1.重慶商務(wù)職業(yè)學(xué)院 出版?zhèn)髅较?,重慶 401331;2.四川工商職業(yè)技術(shù)學(xué)院 輕工工程系,四川 都江堰 611830)
從本質(zhì)上講室內(nèi)定位系統(tǒng)[1-3]的方法分為超寬帶、ZigBee、wifi、藍牙等,基于藍牙的室內(nèi)定位由于其功耗低,成本低的特性成為定位方法中的主流[4,5]?;谒{牙的室內(nèi)定位方法主要分為測距與非測距兩大類,其中基于非測距的定位方法無需依靠特定硬件來獲取節(jié)點距離信息,本文在綜合考慮部署成本、系統(tǒng)穩(wěn)定以及定位精度的基礎(chǔ)上最終選取nRF51822低功耗藍牙芯片作為定位終端[6],基于nRF51822的定位算法中普遍存在著終端姿態(tài),人體遮擋等因素造成的定位點跳變問題,文獻[7]中提出了基于藍牙低功耗終端的定位算法,其算法替代了近場通信(NFC)技術(shù),在接收機與發(fā)射機之間幾厘米處的距離可以精確識別物體,但隨著距離增加,nRF51822定位終端RSSI擾動曲線變得無序,導(dǎo)致最終定位精度明顯下降。文獻[8]提出了一種基于iBeacon的室內(nèi)定位系統(tǒng),其依靠nRF51822芯片廣播的鄰近度來解算物體位置,對于距離導(dǎo)致信號波動造成的定位誤差問題,采取了改變AP布局、增加AP節(jié)點的方式,在一定程度上解決了定位點跳變問題,但算法每次需校準iBeacon單元程序來計算nRF51822芯片的廣播范圍,極大地增大了算法復(fù)雜度,提升了系統(tǒng)造價。該算法針對nRF51822定位中RSSI值易受物體遮擋、陰影衰落擾動造成定位點跳變的問題,引入LSM303DLHC傳感器來補償其造成的誤差,最后通過歐式距離加權(quán)KNN算法得到定位坐標點[9],首先仿真實驗結(jié)果表明了該算法的有效性,并與文獻[7]、文獻[8]中提及的算法進行了對比,最終結(jié)果表明,該算法抗RSSI擾動能力強,定位精度較高,開發(fā)出的系統(tǒng)具有較高的拓展空間與推廣價值。
一套完整的藍牙系統(tǒng)是由廣播端Broadcaster與閱讀器Reader組成(如圖1所示),本系統(tǒng)中采用nRF51822作為定位終端,其主要功能是向外發(fā)送廣播。采用cc2541作為定位AP,當(dāng)定位終端進入到Reader覆蓋區(qū)域時,可閱讀到Broadcaster向外發(fā)出的廣播信息,其中包含定位終端MAC地址、信號強度RSSI等信息,藍牙AP通過485集線器將接收到的數(shù)據(jù)傳送至服務(wù)器。
圖1 藍牙系統(tǒng)模型
RSSI測距模型描述了信號強度與傳播距離的關(guān)系,其滿足Shadowing傳播模型[10]
(1)
在本算法的應(yīng)用中采用簡化后的Shadowing模型
(2)
式(1),式(2)中d0是參考距離,通常取值為1m,d為實際距離,p(d)和p(d0)分別是距離為d和d0時路徑損耗值,是遣蔽因子,路徑損耗值為初始發(fā)射信號與接收信號強度之差
(3)
式中:p(0)為初始發(fā)射信號強度,Rssi(d)和Rssi(d0)分別是距離為d和d0處的接收信號強度值。本算法中取d0=1m,A=-Rssi(d0), 從而得到實際應(yīng)用的RSSI測距公式
Rssi(d)=-(10nlgd+A)
(4)
式中:A為距離信號發(fā)射源1m處接收到的信號強度平均值的模,n為信號傳輸常數(shù),與信號傳播環(huán)境相關(guān)。
定位終端重力加速度在載體坐標系下的分量即為加速度計的三軸數(shù)值,當(dāng)定位終端水平放置時載體坐標系的初始姿態(tài)與參考坐標系重合,此時加速度計三軸分量(數(shù)據(jù)經(jīng)標準歸一化處理)為
G[0,0,0]=[0 0 1]T
(5)
當(dāng)定位終端處于不同姿態(tài)時,其三軸分量為
G[γ,θ,ψ]=[GxGyGz]T
(6)
利用方向余弦矩陣
可得
G(γ,θ,ψ)=T(γ,θ,ψ)G(0,0,0)
(7)
俯仰角和翻滾角分別為
(8)
地磁場矢量H可分解為水平分量Hh,垂直分量Hv,Hh總是指向地磁的北極,Hh在兩軸上的分量分別為Hx和Hy,由此可得水平放置時的方向角
(9)
本文提出的基于nRF51822與LSM303DLHC傳感器融合的KNN定位算法分為系統(tǒng)設(shè)計與算法實現(xiàn)兩個模塊,系統(tǒng)設(shè)計中詳細地描述了定位終端nRF51822的廣播、通信協(xié)議設(shè)計、cc2541藍牙AP電路設(shè)計和數(shù)據(jù)通信機制,算法實現(xiàn)模塊則闡述了LSM303DLHC傳感器融合算法、指紋庫生成算法、KNN歐氏距離加權(quán)算法。
(1)nRF51822定位終端設(shè)計
定位終端采用nRF51822,在低功耗模式下靈敏度可達-92.5 dB RX,可使用+4 dBm的輸出功率,低于10 mA的峰值電流,使得一粒紐扣電池即可工作數(shù)月,定位終端設(shè)計中,加載協(xié)議棧SDK10,修改其私有廣播數(shù)據(jù)(總長13 Byte)信息對接藍牙AP,其字段值包括幀同步頭、數(shù)據(jù)起始標志位、三軸加速度信息、方向角信息、電量信息、校驗和等字段,nRF51822芯片如圖2所示。
圖2 nRF51822芯片
(2)cc2541藍牙AP設(shè)計
藍牙電子標簽具有成本低、功耗低、易部署安裝,體積小、輕便等特點。系統(tǒng)中使用的藍牙標簽為CC2541,工作頻率2.4 GHz~2.5 GHz ISM微波段,通信協(xié)議BLE4.0,發(fā)射功率-23 dBm~+4 dBm,識別距離0~50 m(2 dBi全向天線),將藍牙AP與6口集線器相連,外接12 V電源,可勘測定位終端的私有廣播信息以及掃描回調(diào)信息,其中包含幀同步頭、定位終端MAC地址、RSSI、三軸加速度、方向角、電量、校驗和等信息,并將這些信息進行打包,打上AP自身的MAC地址透傳至以太網(wǎng)網(wǎng)關(guān)即可。設(shè)計電路中I2C接口增加了STK3310環(huán)境光傳感器、巴倫電路之后增加了電阻衰減網(wǎng)絡(luò),以方便進行射頻信號的衰減,配合定位算法。
本章節(jié)詳細介紹了算法實現(xiàn),其中包含LSM303DLHC傳感器方向角的計算,指紋庫生成算法以及歐式距離加權(quán)KNN算法,其中歐式距離KNN算法具體流程如圖3所示。
圖3 歐氏距離加權(quán)KNN算法流程
(1)LSM303DLHC傳感器融合算法
在實際的定位過程中,定位終端不可能一直保持水平狀態(tài),則必須計算其俯仰角以及翻滾角,設(shè)當(dāng)前定位終端的俯仰角為θ,翻滾角為γ,方向角為ψ,磁強傳感器三軸分量數(shù)值M(γ,θ,ψ)=[MxMyMz]T, 水平放置時磁強傳感器三軸數(shù)值M(0,0,ψ)=[MhxMhyMhz]T, 根據(jù)定位終端姿態(tài)與水平放置時的關(guān)系可得
(10)
式中:Rγ、Rθ——翻滾角取γ、俯仰角取θ時的旋轉(zhuǎn)轉(zhuǎn)化矩陣
(11)
將式Rλ、Rθ帶入式(11)中可得
(12)
將其帶入式(10)可得出
(13)
(2)KNN歐氏距離加權(quán)算法
為了消除信號傳播,傳感器遮擋、信號跳變等因素帶來的影響,在信號強度處理階段將RSS信號強度劃分為若干簇,對篩選出的指紋庫中的坐標集合做歐氏距離加權(quán)聚類,得到最終坐標。假設(shè)定位終端上傳的實時向量M=(Rs1,Rs2,Rs3,…,Rsn), 其中Rsi為第i個AP勘測到的定位終端強度RSSI值,設(shè)實時向量M中最強的RSSI值為MaxRm,其對應(yīng)第m個藍牙AP,次強RSSI為SMaxRn,其對應(yīng)第n個藍牙AP,此時將實時向量與指紋庫F=(Rs1,Rs2,Rs3…Rsn) 進行比對,取出指紋庫中滿足式(14)的指紋集合∪F,為指紋庫F中滿足式(14)的集合條目,指紋庫匹配仿真程序設(shè)計如圖4所示
(14)
計算實時向量M與∪F的歐氏距離,歐氏距離越小則
實時向量與指紋的匹配度越高,歐式距離計算公式為
(15)
那么該坐標的權(quán)值系數(shù)
(16)
為保證結(jié)果的精確性,算法中將權(quán)值做歸一化處理,即n個待選坐標的權(quán)值系數(shù)集合滿足式(17),歐式距離權(quán)值計算程序設(shè)計如圖5所示
w1+w2+…wn=1
(17)
圖4 指紋庫匹配仿真程序設(shè)計
圖5 歐式距離權(quán)值仿真程序設(shè)計
為了保證歐式距離的統(tǒng)一性,將實時向量M的維數(shù)與指紋庫中匹配的指紋進行了維數(shù)匹配操作(指紋庫F的維數(shù)與藍牙AP的個數(shù)相同),若第k個AP未勘測到定位終端的RSSI(此處排除AP損壞的情況),則將其RSSI值賦值為-100 dBm,指紋庫匹配仿真程序設(shè)計如圖6所示。
離線勘測階段實現(xiàn):
(1)接口回調(diào)Url
圖6 指紋庫匹配仿真程序設(shè)計
數(shù)據(jù)庫中將標簽號BtId與對應(yīng)地圖的Url進行映射綁定,采集終端將勘測到的藍牙信號上傳至服務(wù)器,服務(wù)器通過接口回調(diào)與藍牙信號對應(yīng)的地圖Url。
(2)Json數(shù)據(jù)通信
點擊地圖上任一點出現(xiàn)界面如圖7所示:在地圖上點擊采集終端相應(yīng)的位置可自動獲取其坐標,根據(jù)融合至nRF51822上的LSM303DLHC傳感器可實時獲取手環(huán)當(dāng)前的偏北角,將偏北角分為4個象限,分別對應(yīng)東西南北,點擊保存坐標按鈕,即可將信息打包成Json數(shù)據(jù)上傳至數(shù)據(jù)庫中。
(3)生成定位指紋庫
該算法的指紋庫生成為參考點與信號強度綁定的過程,離線階段指紋庫的生成直接決定著后續(xù)定位精度,其基本步驟如下:
1)配置以太網(wǎng)網(wǎng)關(guān)的IP與Port,即可勘測到采集終端(nRF51822)的廣播數(shù)據(jù)信息,APP鏈接數(shù)據(jù)庫將接收到的藍牙標簽號+對應(yīng)的信號強度+MAC地址+APP自動獲取坐標打包上傳推送到數(shù)據(jù)庫。
2)當(dāng)數(shù)據(jù)量達到指定閾值時停止信號采集操作,待指紋采集完成后,對數(shù)據(jù)進行濾波,將指紋按照坐標、方向進行聚類,形成最終指紋庫。
以下為該算法中指紋庫樣表的生成過程:
(1)采集指紋人員佩戴采集終端(采集終端與定位終端廣播標志位不同),打開采集APP,后臺數(shù)據(jù)庫中將AP基站的MAC地址與地圖Url進行了綁定,會自動展示到APP界面中,如圖7所示。
圖7 指紋采集頁面
(2)采集人員根據(jù)地圖標注有序點擊地圖相應(yīng)的位置,會彈出與實際位置對應(yīng)的坐標點(如圖7所示),采集終端會將獲取LSM303DLHC實時方向,采集人員需將其參數(shù)輸入到APP中,點擊開始采集,則APP將不同AP接收到的nRF51822信息(包含MAC、RSSI、Orientation)上傳至數(shù)據(jù)庫中,當(dāng)數(shù)據(jù)量到達200時會自動停止采集,并以toast的形式提示采集人員,采集人員更改終端朝向,重復(fù)該操作,當(dāng)E、W、S、N這4個方向采集完成時,即完成該點的指紋采集。
下面選取了(0.8,0.8),(1.6,0.8),(2.4,1.6),(3.2,0.8),(4.0,4.0)5個坐標點的指紋庫生成,將步驟(2)中采集到的信號強度值的過濾,聚類平均得到表1中的指紋庫樣表,Rmn為第n個AP基站的Mac地址縮寫,Asn為n個AP基站收到的采集終端RSSI強度值。
表1 指紋庫樣表
最后將實時向量與對應(yīng)的指紋庫坐標集合加權(quán)聚類形成最終坐標點
(18)
式中:n代表與該實時向量匹配的指紋庫坐標個數(shù),算法匹配中,將實時采集的指紋庫數(shù)據(jù)信息輸入到仿真系統(tǒng)中,不同AP勘測到的定位終端RSSI數(shù)據(jù)信息作為實時定位向量,經(jīng)過歐氏距離加權(quán)KNN算法可得出最終坐標,完整算法仿真設(shè)計如圖8所示。
圖8 系統(tǒng)整體架構(gòu)設(shè)計
為了驗證文中算法的有效性,首先在MatlabR2014a中進行仿真實驗,并與文獻[6]、文獻[7]中提及的算法進行了對比實驗,將系統(tǒng)在某棟建筑中進行了實地部署,具體運行環(huán)境及實驗結(jié)果分析如下:
定位終端配置信息:SDK10.0.0;編譯軟件:Keil5.12。
硬件平臺:nRF51822最小系統(tǒng);藍牙AP編譯軟件為IAR8.10.3;CPU:Intel?Xeon?E5-2600 v3/v4 系列處理器;8G DDR4;1TB,2.5寸SAS/SATA/SSD硬盤;通信服務(wù)器系統(tǒng):centOs6.5;地圖服務(wù)器系統(tǒng):Ubuntu 14.0.2。
表2中給出了RSSI測距與本算法解算出的位置點,由于篇幅關(guān)系,表中僅列出了5個具有代表性的位置坐標,圖9中直觀地顯示了RSSI測距、利用文中算法估算出10個不同位置點與實際位置的誤差,通過誤差線的距離(虛線表示RSSI測距估算出的位置與實際位置的誤差距離,實線則表示本文算法解算出的位置與實際位置的誤差距離)可直觀看出,文中算法解算出的位置精度明顯優(yōu)于RSSI測距估算出的位置精度,通過大量的實驗可得出本算法的平均誤差為0.593 m,明顯優(yōu)于同等條件下RSSI測距估算出的位置,通過與文獻[6]、文獻[7]的對比發(fā)現(xiàn),基于ZigBee的定位平均誤差為2.952 m,其不僅誤差較大,而且現(xiàn)階段大廠商還未集成ZigBee的接收器,造成了其應(yīng)用的局限性,文獻[7]中基于wifi的是內(nèi)定位,通過指紋采集,匹配算法。
表2 誤差分析
圖9 實驗誤差對比
將文中算法移植到平臺上后,在某棟建筑中進行了實地部署與搭建,結(jié)果顯示,通過文中定位算法所獲得的位置信息具有較好的穩(wěn)定性和實時性,平均定位誤差小于0.5 m。其運行Demo如圖10所示。
圖10 定位Demo展示界面2
本文提出了一種基于nRF51822與LSM303DLHC傳感器融合的KNN算法,設(shè)計階段使用低功耗nRF51822芯片作為定位終端,融合了集加速度計和磁力計于一體的LSM303DLHC傳感器,采用cc2541芯片作為AP基站,勘測定位終端廣播數(shù)據(jù)中的RSSI、MAC等信息,并通過rs-485集線器上傳至服務(wù)器;定位階段根據(jù)航向角模型計算定位終端相對于坐標系的方向角,并以此來補償RSSI因多徑、遮擋帶來的誤差;最后通過歐氏距離加權(quán)KNN算法得到最終坐標。實驗結(jié)果表明,該算法可以有效地提升定位精度、穩(wěn)定性和實時性,開發(fā)出的系統(tǒng)具有較高的推廣價值。