姚軍 甄梓越 馬宇靜
(西安科技大學(xué)通信與信息工程學(xué)院,西安 710054)
基于接收信號(hào)強(qiáng)度指示(received signal strength indication,RSSI)測(cè)距的定位系統(tǒng)在日常生活多個(gè)領(lǐng)域有廣泛應(yīng)用,例如室內(nèi)場(chǎng)所的定位服務(wù),包括商品定位、地下停車場(chǎng)的車輛定位,以及提供消防救援和井下安全的人員定位等,無線定位技術(shù)成為當(dāng)前研究的重點(diǎn).目前室外定位方面,GPS 有實(shí)時(shí)、準(zhǔn)確度高等特點(diǎn),為人們的出行提供了很大便捷.室內(nèi)環(huán)境下[1]主要有WiFi、藍(lán)牙、紅外線以及射頻識(shí)別(radio frequency identification,RFID)幾種定位技術(shù),由于衛(wèi)星信號(hào)會(huì)被建筑物遮擋,如物流公司對(duì)快遞投遞的包裹等,許多情況下也不方便設(shè)置GPS 模塊.這幾種定位技術(shù)中,RFID 技術(shù)由于成本低、精度高以及多目標(biāo)識(shí)別等優(yōu)點(diǎn),被廣泛應(yīng)用在室內(nèi)定位技術(shù)中[2].
基于RSSI 測(cè)距結(jié)合三邊定位法是目前最常用的一種RFID 室內(nèi)定位方法.但由于信號(hào)的損耗系數(shù)以及在實(shí)際情況下信號(hào)衰弱難以計(jì)算等因素,RSSI 測(cè)距的誤差無法得到有效控制[3].文獻(xiàn)[4]針對(duì)環(huán)境因素導(dǎo)致的測(cè)距誤差較大問題提出了一種基于天牛須搜索的改進(jìn)BP 神經(jīng)網(wǎng)絡(luò)測(cè)距算法,克服了環(huán)境干擾,降低了誤差.文獻(xiàn)[5]為了解決RSSI 值的不穩(wěn)定波動(dòng)問題,提出一種結(jié)合中位數(shù)法和最短距離法來獲取RSSI 權(quán)值的方法,通過修正權(quán)值解決波動(dòng)問題.文獻(xiàn)[6]針對(duì)RSSI 測(cè)距誤差較大的問題,提出了一種結(jié)合實(shí)時(shí)模型修正以及優(yōu)化定位結(jié)果的方法.文獻(xiàn)[7]研究了人的存在和移動(dòng)對(duì)不同距離處RSSI 的影響.文獻(xiàn)[8]針對(duì)多元素影響RSSI 測(cè)距準(zhǔn)確性的問題,提出一種基于找到最佳節(jié)點(diǎn)方向的改進(jìn)RSSI 測(cè)距算法.文獻(xiàn)[9]針對(duì)RSSI 距離映射的復(fù)雜度、穩(wěn)定度以及定位精度問題,提出一種考慮分段傳輸模型和室內(nèi)空間場(chǎng)景的優(yōu)化方法.文獻(xiàn)[10]對(duì)傳統(tǒng)RSSI 測(cè)距算法進(jìn)行分析并提出一種基于BP 神經(jīng)網(wǎng)絡(luò)的測(cè)距算法,實(shí)驗(yàn)結(jié)果表明該算法提高了定位精度.文獻(xiàn)[11]針對(duì)動(dòng)態(tài)室內(nèi)環(huán)境中噪聲、多徑效應(yīng)等問題對(duì)RSSI 測(cè)距的影響,提出了一種基于斜率近似的改進(jìn)RSSI 測(cè)距算法.文獻(xiàn)[12]針對(duì)傳統(tǒng)RSSI測(cè)距對(duì)環(huán)境參數(shù)過于依賴的問題,提出了一種基于蟻群算法優(yōu)化BP 神經(jīng)網(wǎng)絡(luò)的測(cè)距模型,提高了測(cè)距精度.文獻(xiàn)[13]提出一種融合加權(quán)質(zhì)心以及自適應(yīng)閾值選擇的測(cè)距算法,提高了測(cè)距定位的精度和穩(wěn)定性.文獻(xiàn)[14]為優(yōu)化定位精度,提出一種采用高斯濾波方法并用粒子群算法對(duì)標(biāo)簽測(cè)距進(jìn)行了優(yōu)化.上述研究者主要是在不同場(chǎng)景下對(duì)RSSI 測(cè)距精度進(jìn)行研究,提供了多個(gè)改進(jìn)方向并使用了各種算法進(jìn)行優(yōu)化,但這些算法并未考慮到閱讀器在識(shí)別標(biāo)簽時(shí)RSSI 值與真實(shí)距離的映射關(guān)系會(huì)因?yàn)榫嚯x的變化而產(chǎn)生些許誤差,其會(huì)引起測(cè)距精度不足進(jìn)而影響定位系統(tǒng)的性能.
本文為減小這種測(cè)距誤差,使用K-means 聚類算法對(duì)采集的目標(biāo)數(shù)據(jù)進(jìn)行聚類,然后分別建立BP 神經(jīng)網(wǎng)絡(luò)訓(xùn)練并測(cè)試,以降低將所有數(shù)據(jù)整體輸入后導(dǎo)致的映射關(guān)系不均勻問題,并與改進(jìn)前算法精度做分析對(duì)比.
由于實(shí)際室內(nèi)環(huán)境具有靜態(tài)和動(dòng)態(tài)的障礙物,其會(huì)影響信號(hào)的正常傳播,造成反射和折射等現(xiàn)象,進(jìn)而導(dǎo)致閱讀器接收到的信號(hào)強(qiáng)度不準(zhǔn)確,存在誤差.經(jīng)過大量實(shí)驗(yàn)發(fā)現(xiàn),室內(nèi)環(huán)境的信號(hào)傳播距離與路徑損耗服從以下分布模型[10]:
式中:d是距離閱讀器的真實(shí)距離,單位為m;P是對(duì)應(yīng)距離下的信號(hào)接收強(qiáng)度;d0是參考距離;n是路徑損耗常數(shù),信號(hào)的損耗會(huì)隨著距離的增加而增加,因此在不同的環(huán)境下,n的取值范圍為1.5~4.5,并且在室內(nèi)環(huán)境下最?。籜為遮蔽因子,單位是dB,均值為0,均方差為4~10 的正態(tài)隨機(jī)變量[10].以下為簡(jiǎn)化后的模型:
式中,A是距離閱讀器1 m 處測(cè)到的信號(hào)強(qiáng)度,單位為dBm.
傳統(tǒng)的RSSI 測(cè)距算法對(duì)環(huán)境因素要求過高,直接利用該算法計(jì)算誤差較大,應(yīng)用局限性較高.而具備非線性映射、自適應(yīng)優(yōu)點(diǎn)的BP 神經(jīng)網(wǎng)絡(luò),可以更好地處理環(huán)境因素等問題.
BP 算法是一種基于人工神經(jīng)網(wǎng)絡(luò)的監(jiān)督式機(jī)器學(xué)習(xí)算法,在各類應(yīng)用中具有很好的非線性映射能力、自我學(xué)習(xí)和適應(yīng)能力、泛化能力以及容錯(cuò)能力[15].在該算法下,先將輸入數(shù)據(jù)作為訓(xùn)練數(shù)據(jù),然后建立一個(gè)學(xué)習(xí)模型不斷調(diào)整達(dá)到預(yù)期準(zhǔn)確率,最后根據(jù)學(xué)習(xí)好的BP 網(wǎng)絡(luò)模型進(jìn)行測(cè)試.實(shí)現(xiàn)流程如圖1所示.
圖1 BP 神經(jīng)網(wǎng)絡(luò)流程圖Fig.1 Flowchart of BP neural network
文獻(xiàn)[10]將采集的RSSI 數(shù)據(jù)以及實(shí)際距離d建立訓(xùn)練數(shù)據(jù)庫(kù),以此構(gòu)建了一個(gè)三層BP 神經(jīng)網(wǎng)絡(luò)訓(xùn)練模型,采集的RSSI 數(shù)據(jù)設(shè)定為輸入數(shù)據(jù),實(shí)際距離d設(shè)定為輸出數(shù)據(jù).其中tansig 和purelin 函數(shù)分別設(shè)定為隱含層以及輸出層的傳遞函數(shù)、trainlm 為模型訓(xùn)練方式.然后通過修改多次隱含層節(jié)點(diǎn)個(gè)數(shù)并測(cè)試,最終得出設(shè)定3 個(gè)節(jié)點(diǎn)時(shí)測(cè)試效果最好.最后將數(shù)據(jù)導(dǎo)入MATLAB 中進(jìn)行仿真測(cè)試,結(jié)果顯示相對(duì)于傳統(tǒng)RSSI 測(cè)距算法而言,基于BP 神經(jīng)網(wǎng)絡(luò)模型的RSSI 測(cè)距誤差更小,測(cè)距性能更好.
上述基于BP 神經(jīng)網(wǎng)絡(luò)改進(jìn)的RSSI 測(cè)距算法只是對(duì)構(gòu)建網(wǎng)絡(luò)進(jìn)行優(yōu)化,并未對(duì)采集數(shù)據(jù)的RSSI 值和真實(shí)距離之間由于距離區(qū)間不同導(dǎo)致的映射關(guān)系不均勻問題進(jìn)行處理.本文使用聚類算法先對(duì)采集到的數(shù)據(jù)進(jìn)行聚類處理,然后對(duì)多類數(shù)據(jù)分別建立BP 神經(jīng)網(wǎng)絡(luò)模型,即可有效解決該問題.
K-means 算法是一種基于計(jì)算點(diǎn)與點(diǎn)之間距離的聚類算法,具有簡(jiǎn)單、高效、快速收斂的優(yōu)點(diǎn).計(jì)算兩兩目標(biāo)之間的距離,距離越小越容易被分在一類,距離定義為歐式距離sqeuclidean、城市街區(qū)距離cityblock 以及針對(duì)有時(shí)序關(guān)系數(shù)據(jù)的correlation等.其算法思想是先在所有的樣本數(shù)據(jù)中通過隨機(jī)選取或自主設(shè)置的方式得到k個(gè)簇中心點(diǎn),再把其他所有樣本數(shù)據(jù)根據(jù)距離最近的原則劃分到各個(gè)中心點(diǎn)所在的簇中,然后持續(xù)對(duì)簇中心點(diǎn)進(jìn)行更新變化并且重新計(jì)算分類,當(dāng)簇中心點(diǎn)不再變化即可確定一個(gè)最好的分類方式.
用模型表示,將k設(shè)置為需要?jiǎng)澐值拇胤N類數(shù)量,各個(gè)類別分別為C1,C2,...,Ck,則算法的目的是最小化平方誤差E.
式中,μi是質(zhì)心,
通過采用迭代方法,求出式(3)的最小值即可.
改進(jìn)測(cè)距算法主要是根據(jù)RSSI 值的不同衰減程度導(dǎo)致不同距離區(qū)間RSSI 值與真實(shí)距離之間的映射關(guān)系不均勻問題.首先通過K-means 算法對(duì)訓(xùn)練數(shù)據(jù)進(jìn)行區(qū)域分類,然后根據(jù)不同的分類區(qū)域建立多個(gè)網(wǎng)絡(luò)模型進(jìn)行分別訓(xùn)練,最后將需要測(cè)距的RSSI 值對(duì)應(yīng)所在距離區(qū)域的網(wǎng)絡(luò)模型進(jìn)行測(cè)距.主要流程如圖2 所示.
圖2 改進(jìn)測(cè)距算法主要流程Fig.2 Process of the ranging optimization algorithm
2.1.1 數(shù)據(jù)采集
為使建立的網(wǎng)絡(luò)模型在訓(xùn)練時(shí)達(dá)到更好的效果,將之前基于BP 神經(jīng)網(wǎng)絡(luò)測(cè)距算法的訓(xùn)練數(shù)據(jù)進(jìn)行相同方式補(bǔ)充采集并作為下一步網(wǎng)絡(luò)訓(xùn)練的輸入數(shù)據(jù),如表1 所示.
表1 補(bǔ)充后的訓(xùn)練數(shù)據(jù)Tab.1 Supplementary training data
2.1.2 歸一化處理
對(duì)數(shù)據(jù)進(jìn)行歸一化處理后,分別找出RSSI 數(shù)據(jù)及距離的最大、最小值,然后將這些值通過mapminmax函數(shù)規(guī)范到[0,1]內(nèi),其作用是消除數(shù)據(jù)因?yàn)榱烤V不同對(duì)分析結(jié)果的影響,加快求出最優(yōu)解速度的同時(shí)還可以提高測(cè)試精度.
對(duì)輸入數(shù)據(jù)預(yù)處理之后,采用K-means 算法通過MATLAB 軟件將整理好的數(shù)據(jù)根據(jù)距離區(qū)間劃分為若干個(gè)類.本文以分兩類為例進(jìn)行算法研究.算法主要分為六步,步驟如下:
1) 確定輸入數(shù)據(jù).以RSSI 值和與其對(duì)應(yīng)的距離值建立坐標(biāo)系,確定所有輸入數(shù)據(jù)點(diǎn)Pi.
2) 確定分類個(gè)數(shù)K,然后隨機(jī)選取K個(gè)點(diǎn),作為K個(gè)類的聚類中心,用Kj表示.
3) 對(duì)所有數(shù)據(jù)點(diǎn)Pi進(jìn)行遍歷并計(jì)算其歐式距離,找到距每個(gè)數(shù)據(jù)點(diǎn)最近的中心點(diǎn)Kj,即第i個(gè)數(shù)據(jù)距離第j個(gè)中心點(diǎn)最近,Pi屬于第j類.
4) 計(jì)算每個(gè)類的樣本均值,更新其中心點(diǎn).
5) 重復(fù)步驟3、4,直到聚類中心點(diǎn)不再變化.
6) 輸出最終的聚類中心點(diǎn)以及j個(gè)類.
具體參數(shù)設(shè)置.首先是聚類個(gè)數(shù),本文旨在研究聚類后的擬合效果,為使BP 神經(jīng)網(wǎng)絡(luò)達(dá)到更好的訓(xùn)練目標(biāo),聚類個(gè)數(shù)K設(shè)置為2,初始聚類中心根據(jù)所有數(shù)據(jù)的分布范圍均勻生成,所以參數(shù)設(shè)置為uniform.由于本文主要是為了研究真實(shí)環(huán)境下距離與RSSI之間的關(guān)系,而歐式距離這種定義方式能更好地反映兩個(gè)點(diǎn)之間的真實(shí)距離,因此將距離參數(shù)設(shè)置為sqeuclidean.
把輸入數(shù)據(jù)通過K-means 算法分成兩類后,需要建立各自的BP 神經(jīng)網(wǎng)絡(luò)學(xué)習(xí)模型,這里將歸一化后的RSSI 值作為輸入數(shù)據(jù),真實(shí)距離作為輸出數(shù)據(jù).由于RSSI 與距離d之間的關(guān)系可大致擬合為按對(duì)數(shù)衰減,模型不復(fù)雜.經(jīng)過多次實(shí)驗(yàn)發(fā)現(xiàn),一直增加BP 神經(jīng)網(wǎng)絡(luò)層數(shù)以及隱含層節(jié)點(diǎn)個(gè)數(shù)并不會(huì)降低誤差,因此使用三層BP 神經(jīng)網(wǎng)絡(luò),并把隱含層節(jié)點(diǎn)設(shè)置為3 個(gè).以訓(xùn)練集70%、驗(yàn)證集15%、測(cè)試集15%的樣本分布對(duì)實(shí)驗(yàn)數(shù)據(jù)進(jìn)行訓(xùn)練.同樣設(shè)置tansig 和purelin 函數(shù)為模型的隱層傳遞函數(shù)以及輸出層傳遞函數(shù).對(duì)比trainlm、trainbr 和trainscg 三種算法,trainscg 函數(shù)占用內(nèi)存少,但訓(xùn)練結(jié)果誤差較大(trainlm 算法的誤差僅為trainscg 算法的55.1%).trainlm 算法雖然占用比trainbr 更多的內(nèi)存,但訓(xùn)練時(shí)間快,且結(jié)果誤差略小,因此本文設(shè)置trainlm 函數(shù)作為BP 神經(jīng)網(wǎng)絡(luò)的訓(xùn)練函數(shù).結(jié)構(gòu)如圖3 所示.
圖3 BP 神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)Fig.3 Network structure of BP neural network
3.1.1 輸入數(shù)據(jù)處理和分類
使用MATLAB 仿真軟件進(jìn)行實(shí)驗(yàn)仿真,首先導(dǎo)入所要使用和處理的數(shù)據(jù),經(jīng)過mapminmax 函數(shù)進(jìn)行歸一化處理后再通過K-means 算法以及上述的參數(shù)選取對(duì)所有輸入數(shù)據(jù)進(jìn)行分類,將所有數(shù)據(jù)展示在坐標(biāo)系上.如圖4 所示,(a)是所有的數(shù)據(jù)分布,(b)是經(jīng)過K-means 分類后的結(jié)果以及兩個(gè)類各自的簇中心點(diǎn).
圖4 K-means 算法分類前后數(shù)據(jù)分布Fig.4 Data distribution before and after K-means algorithm classification
3.1.2 BP 神經(jīng)網(wǎng)絡(luò)訓(xùn)練
對(duì)兩類數(shù)據(jù)分別進(jìn)行BP 神經(jīng)網(wǎng)絡(luò)訓(xùn)練,圖5 為訓(xùn)練效果.可以看出,第一類的輸出Output=0.98×Target+0.009 8,其中值為0.992;第二類Output=0.95×Target+0.007 9,中值為0.996.可見兩個(gè)BP 神經(jīng)網(wǎng)絡(luò)模型的擬合效果都比較理想,因此劃分為兩個(gè)類后建立的兩個(gè)BP 神經(jīng)網(wǎng)絡(luò)學(xué)習(xí)模型都是理想且可用的.
圖5 分類后BP 神經(jīng)網(wǎng)絡(luò)訓(xùn)練效果Fig.5 Training effect of BP neural network after classification
基于同樣的數(shù)據(jù),將RSSI 值作為輸入數(shù)據(jù),距離d作為輸出數(shù)據(jù),使用三層BP 神經(jīng)網(wǎng)絡(luò),3 個(gè)隱層節(jié)點(diǎn),傳遞函數(shù)和樣本分布皆與改進(jìn)算法一致的方式進(jìn)行仿真測(cè)試.圖6(a)是傳統(tǒng)BP 神經(jīng)網(wǎng)絡(luò)測(cè)距算法的擬合效果以及誤差分布,(b)和(c)分別是改進(jìn)算法第一類和第二類的擬合效果以及誤差分布.可以看出,本文改進(jìn)算法的誤差除個(gè)別因樣本數(shù)據(jù)不均導(dǎo)致較大以外,普遍比傳統(tǒng)BP 神經(jīng)網(wǎng)絡(luò)算法要小.
圖6 算法改進(jìn)前后擬合效果對(duì)比Fig.6 Comparison of fitting effect before and after the algorithm improvement
對(duì)改進(jìn)前后的算法以及一種信號(hào)加權(quán)算法進(jìn)行誤差分析,傳統(tǒng)BP 神經(jīng)網(wǎng)絡(luò)測(cè)距算法的均方根誤差為1.425 7,信號(hào)加權(quán)算法的均方根誤差為2.010 3,本文改進(jìn)測(cè)距算法的均方根誤差為1.288 7,綜上可以看出本文的改進(jìn)測(cè)距算法精度優(yōu)于其他兩種算法.
本文首先針對(duì)傳統(tǒng)的信號(hào)傳播路徑損耗模型對(duì)基于RSSI 的測(cè)距算法進(jìn)行研究,提出先用K-means算法對(duì)數(shù)據(jù)進(jìn)行預(yù)處理分類,再使用BP 神經(jīng)網(wǎng)絡(luò)建立多個(gè)網(wǎng)絡(luò)模型對(duì)RSSI 進(jìn)行分類測(cè)距.該方法優(yōu)化了由于不同距離區(qū)間的RSSI 值衰減程度不均勻?qū)е碌恼`差問題.根據(jù)MATLAB 實(shí)驗(yàn)仿真的擬合效果以及誤差分析結(jié)果可以看出優(yōu)化后的BP 神經(jīng)網(wǎng)絡(luò)測(cè)距算法對(duì)比傳統(tǒng)BP 測(cè)距算法擬合效果更好,誤差更小.