孟偉峰,呂瑞騰,孔 雨,楊子祥
(山東省天安礦業(yè)有限公司,山東 曲阜 273155)
本文選用三種現(xiàn)行的定位算法進(jìn)行仿真比較。
假設(shè)n個(gè)錨節(jié)點(diǎn)的坐標(biāo)分別為b1(x1,y1),b2(x2,y2),b3(x3,y3)…bn(xn,yn),各錨節(jié)點(diǎn)到未知節(jié)點(diǎn)的 a的距離分別為 d1,d2,d3…dn,假設(shè)節(jié)點(diǎn) a 的坐標(biāo)為 。
節(jié)點(diǎn)間的定位測距是通過接收信號強(qiáng)度指示(RSSI)來計(jì)算的,首先選定無線電傳播路徑損耗,在此基礎(chǔ)上獲得相對精確的測量距離。本文選用自由空間傳播模型和對數(shù)-正態(tài)分布模型來進(jìn)行分析。自由空間傳播模型為:
式中:d為節(jié)點(diǎn)距離(km);f為頻率(MHz);k為路徑衰減因子,其范圍在2~5之間。信號衰減采用對數(shù)距離衰減模型:
式中:PL(d)為經(jīng)過距離d后的路徑損耗(dB);PL(d0)是參考距離d0的接收信號強(qiáng)度;Xσ為平均值為0的正態(tài)分布隨機(jī)變數(shù),標(biāo)準(zhǔn)差范圍為2~5;
即可解得D的坐標(biāo)為:
解線性方程得:AX=b,其中 X=[x,y]T且:
解得節(jié)點(diǎn)D的坐標(biāo)為:
圖1 最大似然估計(jì)定位算法原理圖
該算法假設(shè)b0(x0,y0)為距離目標(biāo)節(jié)點(diǎn)最近的錨節(jié)點(diǎn),設(shè)其為差分參考節(jié)點(diǎn)。b0到各錨節(jié)點(diǎn)的實(shí)際距離分別為 d01,d02,…,don;a 到各錨節(jié)點(diǎn)的差分測量距離分別為 d1,d2,…,dn。
定義1參考節(jié)點(diǎn)RSSI個(gè)體差異修正系數(shù)為:
定義2目標(biāo)節(jié)點(diǎn)到第i個(gè)錨節(jié)點(diǎn)的距離差分系數(shù)為:
式中:λ為比例調(diào)整因子;ρi表示當(dāng)前環(huán)境下依RSSI進(jìn)行測距偏差程度的映射關(guān)系。
定義3目標(biāo)節(jié)點(diǎn)到第i個(gè)錨節(jié)點(diǎn)的距離差分方程為
式中:di為目標(biāo)節(jié)點(diǎn)到第i錨節(jié)點(diǎn)的修正距離;參考節(jié)點(diǎn)測量距離誤差為e0i=d'0i-d0i;將式(10)代入式(7),即可求得目標(biāo)節(jié)點(diǎn)的差分修正最大似然估計(jì)坐標(biāo)。
2.1.1 仿真假設(shè)
本文利用MATLAB對以上算法進(jìn)行數(shù)學(xué)仿真,以便系統(tǒng)分析各算法定位效果。為方便仿真的進(jìn)行,現(xiàn)假設(shè)如下:
1)所有節(jié)點(diǎn)的發(fā)射功率P、天線增益G都相同;
2)所有節(jié)點(diǎn)的信號頻率均為2.4GHz,信號覆蓋半徑均為200m;
3)只考慮信號單跳傳播方式;
4)的標(biāo)準(zhǔn)差為 5,且 k=3.2;
5)在100m×100m的二維區(qū)域內(nèi)隨機(jī)分布著3個(gè)未知節(jié)點(diǎn)和5個(gè)錨節(jié)點(diǎn);
6)比例調(diào)節(jié)因子λ取0.1。
2.1.2 建立節(jié)點(diǎn)分布模型
通過MATLAB建立一個(gè)100×100的區(qū)域,并隨機(jī)分布節(jié)點(diǎn)。
程序1①
a=100*rand(3,2)
b=100*rand(5,2)
global a,b;
2.1.3 距離與損耗的仿真
仿真出路徑與損耗的關(guān)系模型。假設(shè)d0=lm,根據(jù)公式(1)可求出Loss即PL(d0)的值,代入公式(2)可得到傳輸距離d與功率損耗p的關(guān)系方程及曲線。
程序2
可得到傳輸距離d與路徑損耗p的關(guān)系曲線。
這里的距離d即為信號傳輸?shù)膶?shí)際距離,路徑損耗越小RSSI越大。因此,可以得到傳輸距離與RSSI的關(guān)系。
2.1.4 測量距離的仿真
節(jié)點(diǎn)的測距是由對RSSI的分析得出的。我們可以通過對路徑損耗的計(jì)算分析得出實(shí)際距離對應(yīng)的測量距離。
首先,根據(jù)程序1產(chǎn)生的節(jié)點(diǎn)實(shí)際坐標(biāo)求出各節(jié)點(diǎn)間的實(shí)際距離。
程序3
x1=a(2,1);
y1=a(2,2);
d1=sqrt((x1-b(1,1))^2+(y1-b(1,2))^2)
以目標(biāo)節(jié)點(diǎn)a2(60.6843,76.2097)為例,可求出α2到各錨節(jié)點(diǎn)的實(shí)際距離。
為實(shí)現(xiàn)對節(jié)點(diǎn)測距的仿真,我們做出以下分析:各個(gè)節(jié)點(diǎn)內(nèi)都存有大量的RSSI值及相應(yīng)的路徑距離的數(shù)據(jù)庫,我們試圖通過將實(shí)際距離d經(jīng)過處理得到測量距離。
將d代入公式(1)可以得到路徑損耗值PL(d),將d=1代入公式(1)可以得到PL(d0),將二者代入公式(2)即可求得節(jié)點(diǎn)間定位的測量距離。
程序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))
即可求出目標(biāo)節(jié)點(diǎn)到各錨節(jié)點(diǎn)的測量距離。
2.1.5 三邊算法仿真
在此次定位中共有5個(gè)錨節(jié)點(diǎn)參與,隨機(jī)抽取三個(gè)錨節(jié)點(diǎn)組成三邊定位模型來計(jì)算目標(biāo)節(jié)點(diǎn)坐標(biāo)。
程序5
改變參與定位的錨節(jié)點(diǎn)即可得到十組三邊定位結(jié)果,將結(jié)果放入名為BL的矩陣中備用。2.1.6 最大似然估計(jì)仿真
最大似然估計(jì)涉及到公式(7),使用標(biāo)準(zhǔn)的最小均方差估計(jì)方法可得到較為精確的定位結(jié)果。
程序6
進(jìn)行五次仿真計(jì)算,將定位結(jié)果存入矩陣BM中。
2.1.7 基于RSSI的最大似然估計(jì)算法仿真
該算法的實(shí)現(xiàn)主要分為以下幾步:
(1)根據(jù)目標(biāo)節(jié)點(diǎn)到各錨節(jié)點(diǎn)的測量距離選出差分參考節(jié)點(diǎn)。
根據(jù)程序4可以看出錨節(jié)點(diǎn)b2到目標(biāo)節(jié)點(diǎn)a2的測量距離最小,故選定錨節(jié)點(diǎn)b2為差分參考節(jié)點(diǎn)。
首先,通過程序3求出b2到各錨節(jié)點(diǎn)的實(shí)際距離。
其次,通過程序4求出b2到各錨節(jié)點(diǎn)的測量距離。
(2)基于公式(8)和(9)建立距離差分模型。并根據(jù)公式(10)對目標(biāo)節(jié)點(diǎn)到各錨節(jié)點(diǎn)的距離進(jìn)行差分修正。
程序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
運(yùn)行上述程序,可以得到目標(biāo)節(jié)點(diǎn)到各錨節(jié)點(diǎn)的差分修正距離。
(3)將差分修正距離代入最大似然估計(jì)算法模型即程序6可得差分似然估計(jì)坐標(biāo)。
將多次仿真得到的五組定位結(jié)果存入矩陣BN中。
為了對定位結(jié)果進(jìn)行全面的分析,我們選取定位精度、穩(wěn)定度及兩個(gè)方面來比較。對定位結(jié)果的橫縱坐標(biāo)分別求取平均值和方差。平均值距目標(biāo)節(jié)點(diǎn)的距離即為定位偏差。
程序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);
經(jīng)過仿真計(jì)算我們可以得到以下結(jié)果:
表1 三種定位算法仿真結(jié)果分析(單位:米,保留兩位小數(shù))
從表1中,我們不難看出第三種計(jì)算法由于在計(jì)算的過程中考慮了對測量誤差的修正,因而在仿真中展示了優(yōu)良的定位精確性。
在下面的圖形中這種誤差對比將更為明顯。
程序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 定位誤差分析圖
我們發(fā)現(xiàn)第三種算法的定位方差比第二種算法稍大,這也就表明RSSI算法的引入有可能會增大定位結(jié)果的離散程度,但即便如此定位精度仍然得到了很大提高。
現(xiàn)在我們從數(shù)學(xué)算法上進(jìn)行分析:
三邊定位算法中公式(1.4)的矩陣必需為方矩陣,這種算法在應(yīng)用中會遇到很多限制,某些情況下會出現(xiàn)較大誤差。多次運(yùn)算求平均也會帶來許多額外的開銷。
最大似然估計(jì)算法則無需考慮矩陣的維數(shù)??梢岳帽M可能多的錨節(jié)點(diǎn)來進(jìn)行運(yùn)算。并且簡化了多次運(yùn)算求平均的步驟,減小了計(jì)算開銷。由于算法未引入過多模型,故定位穩(wěn)定性較好。
基于RSSI的最大似然估計(jì)算法中,我們可以從程序上清晰的看到定位計(jì)算的整個(gè)過程。這種算法得出的結(jié)果精度更高,并未犧牲過多穩(wěn)定性,而且運(yùn)算開銷較低。
本文針對現(xiàn)行定位算法,利用MATLAB進(jìn)行建模仿真,從精確性及穩(wěn)定性對定位結(jié)果進(jìn)行了分析,得出了直觀的定位效果圖。最后又從數(shù)學(xué)角度,分析了各種算法的優(yōu)缺點(diǎn),進(jìn)而預(yù)測了各種算法帶來的節(jié)點(diǎn)運(yùn)算開銷大小。希望對開發(fā)人員有所幫助。