孟偉峰,呂瑞騰,孔 雨,楊子祥
(山東省天安礦業有限公司,山東 曲阜 273155)
本文選用三種現行的定位算法進行仿真比較。
假設n個錨節點的坐標分別為b1(x1,y1),b2(x2,y2),b3(x3,y3)…bn(xn,yn),各錨節點到未知節點的 a的距離分別為 d1,d2,d3…dn,假設節點 a 的坐標為 。
節點間的定位測距是通過接收信號強度指示(RSSI)來計算的,首先選定無線電傳播路徑損耗,在此基礎上獲得相對精確的測量距離。本文選用自由空間傳播模型和對數-正態分布模型來進行分析。自由空間傳播模型為:

式中:d為節點距離(km);f為頻率(MHz);k為路徑衰減因子,其范圍在2~5之間。信號衰減采用對數距離衰減模型:

式中:PL(d)為經過距離d后的路徑損耗(dB);PL(d0)是參考距離d0的接收信號強度;Xσ為平均值為0的正態分布隨機變數,標準差范圍為2~5;

即可解得D的坐標為:


解線性方程得:AX=b,其中 X=[x,y]T且:

解得節點D的坐標為:


圖1 最大似然估計定位算法原理圖
該算法假設b0(x0,y0)為距離目標節點最近的錨節點,設其為差分參考節點。b0到各錨節點的實際距離分別為 d01,d02,…,don;a 到各錨節點的差分測量距離分別為 d1,d2,…,dn。
定義1參考節點RSSI個體差異修正系數為:

定義2目標節點到第i個錨節點的距離差分系數為:

式中:λ為比例調整因子;ρi表示當前環境下依RSSI進行測距偏差程度的映射關系。
定義3目標節點到第i個錨節點的距離差分方程為

式中:di為目標節點到第i錨節點的修正距離;參考節點測量距離誤差為e0i=d'0i-d0i;將式(10)代入式(7),即可求得目標節點的差分修正最大似然估計坐標。
2.1.1 仿真假設
本文利用MATLAB對以上算法進行數學仿真,以便系統分析各算法定位效果。為方便仿真的進行,現假設如下:
1)所有節點的發射功率P、天線增益G都相同;
2)所有節點的信號頻率均為2.4GHz,信號覆蓋半徑均為200m;
3)只考慮信號單跳傳播方式;
4)的標準差為 5,且 k=3.2;
5)在100m×100m的二維區域內隨機分布著3個未知節點和5個錨節點;
6)比例調節因子λ取0.1。
2.1.2 建立節點分布模型
通過MATLAB建立一個100×100的區域,并隨機分布節點。
程序1①
a=100*rand(3,2)
b=100*rand(5,2)
global a,b;
2.1.3 距離與損耗的仿真
仿真出路徑與損耗的關系模型。假設d0=lm,根據公式(1)可求出Loss即PL(d0)的值,代入公式(2)可得到傳輸距離d與功率損耗p的關系方程及曲線。
程序2

可得到傳輸距離d與路徑損耗p的關系曲線。
這里的距離d即為信號傳輸的實際距離,路徑損耗越小RSSI越大。因此,可以得到傳輸距離與RSSI的關系。
2.1.4 測量距離的仿真
節點的測距是由對RSSI的分析得出的。我們可以通過對路徑損耗的計算分析得出實際距離對應的測量距離。
首先,根據程序1產生的節點實際坐標求出各節點間的實際距離。
程序3
x1=a(2,1);
y1=a(2,2);
d1=sqrt((x1-b(1,1))^2+(y1-b(1,2))^2)
以目標節點a2(60.6843,76.2097)為例,可求出α2到各錨節點的實際距離。
為實現對節點測距的仿真,我們做出以下分析:各個節點內都存有大量的RSSI值及相應的路徑距離的數據庫,我們試圖通過將實際距離d經過處理得到測量距離。
將d代入公式(1)可以得到路徑損耗值PL(d),將d=1代入公式(1)可以得到PL(d0),將二者代入公式(2)即可求得節點間定位的測量距離。
程序4
d=d1;
l=32.4+10*3.2*log10 (1/1000)+10*3.2*log10(2.4*1000);
p=32.4+10*3.2*log10 (d/1000)+10*3.2*log10(2.4*1000);
dd1=10^((p-2*randn-l)/(10*3.2))
即可求出目標節點到各錨節點的測量距離。
2.1.5 三邊算法仿真
在此次定位中共有5個錨節點參與,隨機抽取三個錨節點組成三邊定位模型來計算目標節點坐標。
程序5

改變參與定位的錨節點即可得到十組三邊定位結果,將結果放入名為BL的矩陣中備用。2.1.6 最大似然估計仿真
最大似然估計涉及到公式(7),使用標準的最小均方差估計方法可得到較為精確的定位結果。
程序6

進行五次仿真計算,將定位結果存入矩陣BM中。
2.1.7 基于RSSI的最大似然估計算法仿真
該算法的實現主要分為以下幾步:
(1)根據目標節點到各錨節點的測量距離選出差分參考節點。
根據程序4可以看出錨節點b2到目標節點a2的測量距離最小,故選定錨節點b2為差分參考節點。
首先,通過程序3求出b2到各錨節點的實際距離。
其次,通過程序4求出b2到各錨節點的測量距離。
(2)基于公式(8)和(9)建立距離差分模型。并根據公式(10)對目標節點到各錨節點的距離進行差分修正。
程序7
a1=(D01-d01)/D01;
a0=(a1+a3+a4+a5)/4;
r=0.1;
p1=r*exp(1-(D1/(D01*(1-a0))));
E1=D01-d01;
dc1=D1-p1*E1
dc2=dd2
global dc1 dc2
運行上述程序,可以得到目標節點到各錨節點的差分修正距離。
(3)將差分修正距離代入最大似然估計算法模型即程序6可得差分似然估計坐標。
將多次仿真得到的五組定位結果存入矩陣BN中。
為了對定位結果進行全面的分析,我們選取定位精度、穩定度及兩個方面來比較。對定位結果的橫縱坐標分別求取平均值和方差。平均值距目標節點的距離即為定位偏差。
程序8
bm=[(BM(1,1)+BM(2,1)+BM(3,1)+BM(4,1)+BM(5,1))/5,...
(BM(1,2)+BM(2,2)+BM(3,2)+BM(4,2)+BM(5,2))/5];
Rbm=sqrt((60.6843-bm(1,1))^2+(76.2097-bm(1,2))^2);
經過仿真計算我們可以得到以下結果:

表1 三種定位算法仿真結果分析(單位:米,保留兩位小數)
從表1中,我們不難看出第三種計算法由于在計算的過程中考慮了對測量誤差的修正,因而在仿真中展示了優良的定位精確性。
在下面的圖形中這種誤差對比將更為明顯。
程序9
c=0:pi/20:2*pi;
r=1.8;
x=a(2,1)+r*cos(c);
y=a(2,2)+r*sin(c);

圖2 定位誤差分析圖
我們發現第三種算法的定位方差比第二種算法稍大,這也就表明RSSI算法的引入有可能會增大定位結果的離散程度,但即便如此定位精度仍然得到了很大提高。
現在我們從數學算法上進行分析:
三邊定位算法中公式(1.4)的矩陣必需為方矩陣,這種算法在應用中會遇到很多限制,某些情況下會出現較大誤差。多次運算求平均也會帶來許多額外的開銷。
最大似然估計算法則無需考慮矩陣的維數。可以利用盡可能多的錨節點來進行運算。并且簡化了多次運算求平均的步驟,減小了計算開銷。由于算法未引入過多模型,故定位穩定性較好。
基于RSSI的最大似然估計算法中,我們可以從程序上清晰的看到定位計算的整個過程。這種算法得出的結果精度更高,并未犧牲過多穩定性,而且運算開銷較低。
本文針對現行定位算法,利用MATLAB進行建模仿真,從精確性及穩定性對定位結果進行了分析,得出了直觀的定位效果圖。最后又從數學角度,分析了各種算法的優缺點,進而預測了各種算法帶來的節點運算開銷大小。希望對開發人員有所幫助。