?

基于RSSI參數動態修正的ZigBee室內定位算法

2024-03-05 08:20李世寶叢玉杰
計算機與現代化 2024年1期
關鍵詞:信標信號強度卡爾曼濾波

李世寶,叢玉杰

(中國石油大學(華東)海洋與空間信息學院,山東 青島 266580)

0 引 言

隨著無線傳感網絡技術(Wireless sensor Network,WSN)的發展,定位服務(Location Based Services,LBS)由于它的社會價值以及商業價值受到了廣泛關注。對于室外獲取地理位置信息,全球衛星定位系統(GPS)和北斗衛星導航系統(BDS)以其高定位精度為人們所熟知,并且是目前比較成熟的室外定位技術。然而在室內環境下,由于非視距(NLOS)等因素的影響,衛星信號受到較大的影響,不能滿足用戶對高精度定位的要求,所以不能用于室內定位中。室內定位技術目前不很成熟,所以尋找一種有效的室內定位技術方案成為了目前定位服務領域的一個關鍵技術。WSN 技術已經成為室內定位重要的支撐[1]。ZigBee 作為新興的WSN 技術,因其網絡協議簡單并且靈活,傳感器之間彼此通信具有成本低、功耗低的特點,能很好地滿足室內定位的客觀需求。

基于ZigBee 在室內進行定位的方法可分為基于測距的定位算法和無需測距的定位算法?;跍y距的算法包括三邊測量法、三角測量法和最大似然定位算法。常見的距離測量方法有TOA、TDOA、AOA 和RSSI[2]。非基于距離的算法與基于距離的算法不同,它們不考慮參考節點和移動節點之間的距離和角度,而是根據網絡連接等信息來計算移動節點的位置。其中,基于RSSI 的測距定位技術就是利用無線電波信號在傳播過程中會出現損耗的特性來測量節點間的距離的。信號強度和距離d之間有一定的相關性,該關系可用無線信號的路徑損耗參數模型來描述,RSSI 定位技術只需節點具備無線收發器即可。這種定位方法在不需要加設額外硬件設備的情況下容易獲取,因其成本低且易獲得的特點成為主流定位方法,但容易受到環境影響產生定位誤差。本文討論和分析的室內定位方法是基于ZigBee 平臺的接收信號強度(Received Signal Strength Indicator,RSSI)的定位算法。

已有研究表明:在沒有環境修正的情況下進行RSSI 對數路徑損耗模型定位,可能會產生150%的定位誤差[3]。由上可知,使用RSSI 固定傳播模型來描述信號強度與距離的關系會引起較大誤差。因此,構建基于RSSI 的動態修正對數路徑損耗模型是提高室內定位精度的關鍵。

1 相關研究

文獻[4]為了獲得每個RSSI 值的權值,使用了中位數法以及最短距離法,并對RSSI值進行修正,一定程度上抑制了RSSI 值隨環境改變帶來的波動,但是在計算復雜度方面結果不理想。文獻[5]采用比值法消除RSSI 定位模型中路徑損耗因子對發射功率的影響,計算節點坐標使用了搜索算法。文獻[6]用分布粒子群算法獲得未知節點的坐標并提出一種優選錨節點的算法,用來達到減少節點定位誤差的目的,但未考慮環境變化會對RSSI 定位產生的影響。文獻[7]的算法用RSSI 高斯濾波、修正權重值、使用極大似然估計、引入距離誤差因子等方法減少誤差,但環境因素對模型本身產生的影響沒有被考慮。文獻[8]利用鄰近信標點作為差分參考點,并且引入定位誤差因子α來修正未知點的定位,降低了環境因素對于RSSI 定位的影響,但沒有考慮不存在鄰近信標時的情況。文獻[9]根據實測環境得到2 組實測值(RSSIA,dA)、(RSSIB,dB)進行模型參數調整的算法提高了定位精度。文獻[10]為了求出當前環境中的信號強度A以及路徑損耗參數n,采用了線性回歸方法,然后根據2 種濾波方式分別處理,選擇更好的一種濾波方式來提高定位精度。文獻[11]提出一種改進的三角質心定位算法,經過線性插值濾波和卡爾曼濾波改進,通過在環境中測量得出信號強度A、路徑損耗參數n從而獲取模型參數。文獻[9~11]為了減小定位誤差從實測環境中測得模型參數信號強度A、路徑損耗參數n,但環境不停變化,使用固定參數定位會產生較大誤差,即使是相同環境中相同距離,也會因為同一環境中的不同位置、非視距、干涉衍射和多途效應等因素使信號強度A、路徑損耗參數n不同。文獻[12]為了加強了算法對環境的自適應性,設置了閾值剔除受障礙物影響的參考節點,但是僅僅剔除閾值外的點并不能有很大的提升。文獻[13]為了改變信標節點與未知節點之間的距離,引入環境因子改變網絡部署區域大小,提出一了種基于定向天線測距的分布式定位算法,提高了環境自適應性,有效地降低了由環境改變帶來的定位誤差問題,但是未考慮由于傳輸有延遲導致的環境變化引起的定位不準的問題。

上述文獻都沒有考慮因環境變化導致信道發生改變帶來的定位誤差問題。為了解決這一問題,基于ZigBee 技術平臺,本文展開基于環境變化的二次修正、動態調整路徑損耗模型參數的定位算法研究。主要工作如下:1)為了應對環境變化,對損耗模型中的固定路徑損耗參數進行更正,提出一種對數路徑損耗模型參數動態修正算法;2)對該算法利用卡爾曼濾波進行二次追蹤校正,進一步減少定位誤差;3)通過對比實驗,驗證該算法能減少因環境因素引發的RSSI定位誤差問題,提高室內的定位精度。

2 基于RSSI 參數動態修正的ZigBee室內定位算法

首先用高斯濾波對已知信標節點接收到的RSSI值進行預處理,根據加權系數篩選出未知節點所在區域內最佳的3 個信標節點;再利用信標節點的位置信息確定此處具體的路徑損耗參數n以及距節點附近的信號強度值A;最后再經過卡爾曼濾波算法對已經得到的定位信息進行二次追蹤修正,從而提高定位精度,減少定位誤差。

2.1 高斯濾波預處理

在本文算法中,待測節點以T=0.5 s 的時隙發送信號,每發送一次信號將其加入數據集U,共發送300組數據進行高斯濾波預處理。數據集U={RSSI1,RSSI2,RSSI3,…,RSSI300}。

基于高斯混合濾波對數據集U優化處理,選取高概率部分,求其有效值的算術平均,最后對該值進行定位。

本文算法所使用的高斯濾波模型概率密度函數表達式如下[14-18]:

式(1)中,μ為數據集U中RSSI 值的總體均值,單位為dBm;σ為RSSI值的總體方差,單位為dBm;RSSIi為第i次測量得到的RSSI 值;f(x)為RSSI 值的概率,n為RSSI值的個數。高概率發生區為概率大于0.6的范圍[19-20](0.6 的取值是工程中的經驗值)[14-15],由0.6≤f(RSSIi)≤1可以得出0.15σ+μ≤RSSIi≤3.09σ+μ。

經過高斯濾波后,本文算法將U中[0.15σ+μ,3.09σ+μ]范圍內的RSSI 值全部取出,為了得到最終可以用來進行模型修正的RSSI 值,需要再求其幾何平均值進一步加強數據的準確性。

假設m個RSSI 值經過高斯濾波后,在[0.15σ+μ,3.09σ+μ]范 圍 內 的 數 據 為RSSI(1),RSSI(2),···,RSSI(m),則RSSI最終測量值為:

2.2 RSSI路徑損耗參數修正算法

將經過高斯預處理后的RSSIgauss值代入對數距離路徑損耗模型,如式(3)所示:

式(3)中,RSSIgauss是經過高斯濾波處理后距離為d的信號強度衰減量;其中RSSI0為附近信標節點RSSI值;n為路徑損耗指數,與周圍的環境、空氣溫度和濕度等不定因素有關。路徑損耗參數的不確定性會帶來較大誤差[21-23]。

由式(3)推導可以得到距離d為:

由式(4)可知影響RSSI 定位精度的因素為節點附近的信號強度值A和路徑損耗參數n,信號強度值A的值可以通過多次測量節點附近的接收信號強度求加權平均獲得,路徑損耗參數n的取值隨著環境變化而改變[24],與電磁波傳播環境有很大的關系。

傳統的定位模型通常使用經驗值法或者確定法來獲得RSSI 定位模型參數A和n,并將其作為整個室內環境的固定參考模型。但實際生活中室內環境復雜,一旦環境中的因素發生變化,信號的傳播速度也會隨之改變。在室內,不同區域內的環境也不盡相同,即使距離相同在不同環境下也會產生不同的傳輸損耗,所以在整個網絡中使用固定的參數來描述傳播模型是不準確的。

具體改進算法如圖1 所示,A、B、C為未知節點D所在范圍內的3 個已知信標節點,但是所選信標節點可能是在協作定位時由未知節點轉化過來的,本身位置信息存在誤差,且可能不是信號強度最好的3 個信標節點,所以本文算法引入加權系數,進一步優化路徑損耗因子n以及信號強度A。用加權后的路徑損耗因子值代替原始路徑損耗因子,可以降低因環境因素影響信號強度而對定位結果產生的誤差。

圖1 中,區域內的3 個已知信標節點兩兩之間能夠互相通信,距離分別是dAB、dAC和dBC。

D點發射信號,A、B和C點接收信號,其接收到的RSSI分別為RB和RC,根據公式(4)建立方程組:

解得A相當于△ABC區域的參數AA和nA;

同時,分別可以得到B和C相對△ABC區域的參數值AB、nB、AC、nC。再對得到的參數信息進行加權算法處理,具體步驟如下:

步驟1求得未知節點的路徑損耗參數ni和附近信號強度Ai的平均值:

步驟2對于來自3個信標節點的信號強度進行加權處理,如果Amean、nmean與Ai、ni相差較小,給予一個相對大的權值,反之則給予一個相對小的權值,得到權重因子ki、mi。

步驟3得到3 個信標節點修正后的信號強度A'i以及路徑損耗參數n'i:

步驟4利用步驟3 得到修正后的A'、n',重復上述步驟,對其余的未知節點進行定位。

由于信標節點A、B、C與未知節點D同在一個相對小的范圍,可以近似認為錨節點之間的信號傳輸環境與錨節點與未知節點信號傳輸環境相同。因此,可以利用已知信標節點的位置信息加權后得到的路徑損耗模型參數數據,來估計該定位區域內節點附近的信號強度值A和路徑損耗模型參數n,確定當前環境下的對數路徑動態損耗參數傳播模型。

2.3 卡爾曼濾波修正算法

動態更新參數定位算法相較于其他定位算法精度較高,但仍存在誤差,產生誤差的原因主要有2 個方面:時間同步精度和時間延遲問題,這使得上一時刻測得的路徑損耗參數已不能滿足此刻的需求。

上文的算法已經完成了對定位初步動態修正,接下來采用卡爾曼濾波(Kalman filtering)對路徑損耗參數模型進行二次修正,以達到更好的定位效果。

在本文算法中可將其劃分為2 個部分:1)預測,只需使用當前的RSSI測量值和前一個周期的RSSI估計值即可實現下一時刻的RSSI取值估計;2)更新,對前面已經估計出的RSSI 取值進行更新,應用于后續的定位中。

離散卡爾曼濾波的預測方程為:

離散卡爾曼濾波的測量更新方程為[25-27]:

上式中各變量含義如表1所示。

表1 式(14)~式(18)中各參數含義

在本文修正算法中,首先將每個基站計算得到的距離參數傳遞給卡爾曼濾波函數,對數據進行卡爾曼濾波處理。經過卡爾曼濾波處理后,將位置信息匯總至主機站,由主機站上傳至上位機進行位置解算。流程設計如圖2所示。

圖2 再次修正算法設計流程圖

2.4 路徑損耗模型動態修正算法定位流程

由上述分析可知,未知節點向周圍發送信號,在預處理階段信標節點所接收到的RSSI 值首先經過高斯濾波優化處理后去掉了噪聲波動和突變數據,更加平滑;在定位階段首先通過加權質心算法確定移動節點所在區域,利用該區域內的信標節點估計出當前的信號強度A、路徑損耗參數n;二次修正階段利用卡爾曼濾波進行跟蹤修正處理。為了簡單說明本文算法,以3個參考節點為例,本文定位步驟如下:

1)初始化信標節點設置。

2)待測未知節點持續向周圍發送信號。

3)高斯濾波預處理信標節點接收到的RSSI值。

4)選取經混合高斯濾波后的3 組RSSIgauss數據,同時選取3個信標節點。

5)首先運用加權算法計算出該定位區域內的參數A和n,通過實驗得到動態調整因子的值。

6)使用步驟5 得到的參數估算出信標節點到移動節點的距離dDB、dDC和dDA。

7)將上述步驟中估計的距離參數傳輸給卡爾曼濾波函數。

8)對路徑損耗模型參數進行卡爾曼濾波跟蹤修正處理。

9)將卡爾曼濾波處理后的數據匯總至總基站。

10)利用上位機進行位置解流。

11)使用傳統三邊定位算法,結合上述步驟估計移動節點位置信息。

12)當移動節點移動到新的位置時,重復步驟2~步驟11。

3 實驗與結果分析

為驗證本文算法的定位性能,選用CC2530 芯片作為定位系統的微處理器,使用ZigBee 協議棧,并在IAR 集成環境下實現各類節點的功能編寫和流程設計,實時位置信息可以顯示在上位機中。以彩椒種植溫室為例,在50 m×100 m 的溫室內均勻布置9 個傳感節點作為實驗進行的定位區域,彩椒種植行內固定可以自由調節的傳感節點,溫室結構如圖3、圖4 所示,紅色圓圈部分即為ZigBee 測距模塊。圖5 為在本文實驗中使用的ZigBee 測距模塊,包括中心節點S以及路由節點。

圖3 溫室結構示意圖

圖4 實驗環境

圖5 實驗中使用的ZigBee模塊

發射器和接收器分別放置在塑料支架上,且支架絕緣與地面垂直,信標發射器放置在溫室內側壁上的不同已知位置。發射器ZigBee 節點采用同頻干擾較小的14信道,發射功率固定為4.5 dBm。每個測試點每5 min廣播信標,信標包含發送器的位置坐標。

圖6 顯示了溫室內錨釘一天內的溫度以及濕度測量結果??梢园l現,溫度在4 ℃~27 ℃之間變化;濕度在61.7 %rh~99.9 %rh 之間變化。加熱和冷卻系統以及具有熱隔離的壁和窗的存在可以防止溫度急劇地變化。溫度變化范圍約為23 ℃,濕度的變化范圍在38.2 %rh。

圖6 溫室內溫度濕度變化

為了顯示出環境變化對RSSI 的影響,分別選擇在發送器與接收器之間特定距離為5 m,結果如圖7所示。

圖7 環境變化對RSSI的影響(d=5 m,rh=44% rh=25%)

實驗數據表明環境中溫度、濕度變化會影響RSSI 值。溫度與RSSI 值具有負相關性,當溫度升高時,RSSI線性降低;相對濕度與RSSI之間存在強的正相關性,當濕度升高時,RSSI也隨之線性升高。

如圖8、圖9 所示,由于環境在不斷變化,在電磁波影響下采樣后的RSSI 值波動很大,對比原始采樣得到的300 個RSSI 數據經過高斯濾波模型處理后的只剩150個RSSI數據,通過高斯濾波處理之后去掉了噪聲波動和突變數據,使得所得RSSIgauss值更平滑,此時RSSI值波動范圍已縮小到10 dBm以內。

圖8 原始RSSI數據

圖9 高斯濾波后的RSSI數據

由上述實驗結果可知,高斯濾波預處理有效抑制了信號強度大幅度變化對定位產生的影響,提高了信號強度的穩定性,為下一步提高定位精度打下基礎。

相比固定參數路徑損耗模型,本文提出的基于RSSI動態修正路徑損耗因子算法測量的待測節點的位置更接近于實際位置,其定位誤差對比如圖10所示。

圖10 相對誤差結果圖

為了進一步降低環境對定位精度的影響,使用卡爾曼濾波算法對定位算法進行二次修正補償。使用Matlab 軟件對本文算法進行了仿真驗證其可行性,對比分析了卡爾曼濾波前后的誤差變化,如圖11所示。

圖11 卡爾曼濾波處理前后誤差對比圖

圖11中虛線是經過RSSI固定路徑損耗模型修正算法計算出來的位置與實際位置的相對誤差,星型線是經過RSSI 路徑損耗模型修正算法處理后再經過卡爾曼濾波進行二次修正后的相對誤差。從圖11 中可以看出,本文所提算法處理后的數據曲線更平滑,誤差進一步縮小。由此可說明本文算法可以降低基于RSSI 固定路徑損耗模型修正算法因環境變化而產生的定位誤差,達到提高定位精度的目的。

空間測試中,首先將未經過改進的固定參數損耗模型的算法程序下載到信標節點以及基站中,此時將上位機界面顯示的坐標記錄下來,再將本文改進的修正動態參數損耗模型的算法程序下載到信標節點和基站中,其測量結果如表2所示。

表2 定位測試對比

從表2 中可以看出,采用固定損耗參數模型,平均定位誤差為0.271 m;采用動態損耗參數模型,平均定位誤差為0.144 m,相對誤差降低了46.8%,有利于提升定位效果。

4 結束語

為解決信號因環境變化衰減而導致的定位精度不高的問題,本文提出了一種二次修正動態更新路徑損耗參數的算法。通過實驗分析RSSI 對數路徑損耗模型會因環境變化對測距產生誤差,進一步影響定位精度。待測節點自身向周圍發送信號,本文采用高斯濾波先對數據進行濾波預處理,減少部分突變數據以及波動數據,找到待測節點所在的最佳鄰近區域,為下一步提高精度提供基礎,利用加權平均計算得到路徑損耗參數n以及未知節點附近的信號強度值A,為了修正因時延產生的定位誤差,使用卡爾曼濾波對信號進行預測以及二次修正,最后采用三邊測量定位算法獲得待測節點的位置坐標。本文在溫室內進行實驗,驗證了本文使用基于RSSI 路徑損耗參數動態修正的ZigBee室內定位算法相比修正前定位精度顯著提高。

猜你喜歡
信標信號強度卡爾曼濾波
光學相干斷層成像不同掃描信號強度對視盤RNFL厚度分析的影響
RFID電子信標在車-地聯動控制系統中的應用
室內定位信號強度—距離關系模型構建與分析
基于遞推更新卡爾曼濾波的磁偶極子目標跟蹤
WiFi信號強度空間分辨率的研究分析
基于模糊卡爾曼濾波算法的動力電池SOC估計
基于信標的多Agent系統的移動位置研究
基于擴展卡爾曼濾波的PMSM無位置傳感器控制
基于改進接收信號強度指示的四面體模型井下定位研究
無姿態補償的水下信標絕對位置傳遞研究
91香蕉高清国产线观看免费-97夜夜澡人人爽人人喊a-99久久久无码国产精品9-国产亚洲日韩欧美综合