基于移動(dòng)節(jié)點(diǎn)的無線傳感器網(wǎng)絡(luò)定位算法
掃描二維碼
隨時(shí)隨地手機(jī)看文章
引言
無線傳感器網(wǎng)絡(luò)(WirelessSensorNetwork,WSN)是可以通過自組織快速形成的一種分布式網(wǎng)絡(luò)。在無線傳感器網(wǎng)絡(luò)中,每個(gè)節(jié)點(diǎn)采集到的數(shù)據(jù)必須與其位置信息相結(jié)合才有意義,且傳感器的覆蓋、布局和目標(biāo)跟蹤等操作都依賴于各個(gè)節(jié)點(diǎn)的有效定位虬所以,確定每個(gè)節(jié)點(diǎn)的自身位置是無線傳感器網(wǎng)絡(luò)領(lǐng)域的基礎(chǔ)問題之一。
目前,節(jié)點(diǎn)定位算法主要分為Rangebased算法和Rangefree算法兩大類。Rangebased算法包括信號(hào)到達(dá)時(shí)間(TOA)、信號(hào)到達(dá)時(shí)間差(TDOA)、信號(hào)到達(dá)角度(AOA)、信號(hào)強(qiáng)度(RSSI)等。Rangefree算法包括質(zhì)心算法、DV-HOP算法、Amorphous算法、MDS-MAP算法及APIT算法等。
在實(shí)際應(yīng)用中,傳感器節(jié)點(diǎn)的位置一般是未知的,要使目標(biāo)節(jié)點(diǎn)的移動(dòng)軌跡包含所有節(jié)點(diǎn)是不合理的叫為此,本文提出基于一個(gè)移動(dòng)節(jié)點(diǎn)的兩步定位算法,該方法利用移動(dòng)目標(biāo)節(jié)點(diǎn)輔助定位未知節(jié)點(diǎn)。在傳感器分布區(qū)域,目標(biāo)節(jié)點(diǎn)沿一定的軌跡周期性地向周圍發(fā)送自身的位置信息,各個(gè)未知傳感器節(jié)點(diǎn)在其感知范圍內(nèi)接收目標(biāo)節(jié)點(diǎn)信息,并計(jì)算與目標(biāo)節(jié)點(diǎn)的距離。之后再選取不共線的3個(gè)目標(biāo)節(jié)點(diǎn)信息來計(jì)算自身的位置,然后再將它作為下一步狀態(tài)濾波的初始狀態(tài),并利用UKF狀態(tài)濾波器進(jìn)行更精確的定位計(jì)算。
1基于X移動(dòng)錨節(jié)點(diǎn)的UKF濾波定位方法
UKF是目標(biāo)跟蹤中處理非線性模型的一種濾波器,它有適中的計(jì)算量和較好性價(jià)比。對(duì)于只有一個(gè)移動(dòng)節(jié)點(diǎn)的無線傳感器來說,可將位置未知的傳感器節(jié)點(diǎn)認(rèn)為是待觀察目標(biāo),將移動(dòng)的目標(biāo)節(jié)點(diǎn)認(rèn)為是已知傳感器節(jié)點(diǎn),那么,就可利用類似于目標(biāo)跟蹤中的UKF濾波方法來處理傳感器節(jié)點(diǎn)的定位問題。
有人曾提出一種利用UKF濾波與三角定位算法相結(jié)合的兩步定位算法,此算法利用一個(gè)移動(dòng)錨節(jié)點(diǎn)遍歷整個(gè)網(wǎng)絡(luò),并周期性地廣播包含自身當(dāng)前位置的信息,把傳感器節(jié)點(diǎn)的自身定位過程用UKF的目標(biāo)跟蹤方法來實(shí)現(xiàn)。利用三邊定位法可提高濾波的初始位置精度,從而改善定位效果。此算法證明可以改善對(duì)錨節(jié)點(diǎn)移動(dòng)軌跡的特殊要求限制,更適合實(shí)際情況,并獲得較好的定位精度。但是,此算法也有一定的不足之處,當(dāng)節(jié)點(diǎn)具有RSSI測(cè)距能力時(shí),此算法不能有效地進(jìn)行定位,所以,本文提出了利用Euclidean定位算法結(jié)合UKF濾波來有效解決此種情況下所出現(xiàn)的問題。
2改進(jìn)的基于目標(biāo)節(jié)點(diǎn)的兩步定位算法
假設(shè)節(jié)點(diǎn)擁有RSSI測(cè)距能力,那么,Euclidean定位算法的示意圖如圖1所示。圖中,已知未知節(jié)點(diǎn)B、C在目標(biāo)節(jié)點(diǎn)L的無線射程內(nèi),BC距離已知或可通過RSSI測(cè)量獲得;節(jié)點(diǎn)A與B、C相鄰。那么,對(duì)于四邊形ABCL,所有邊長和一條對(duì)角線BC已知,根據(jù)三角形的性質(zhì)可以計(jì)算出AL的長度(節(jié)點(diǎn)A與L的距離)。使用這種方法,當(dāng)未知節(jié)點(diǎn)獲得與3個(gè)或更多目標(biāo)節(jié)點(diǎn)之間的距離后,就可定位自身。
Euclidean算法和三邊定位算法是一種低耗能、定位精度適中、同時(shí)具有較高覆蓋度的定位算法。但是,在整個(gè)定位測(cè)距過程中,三邊定位算法只能測(cè)量普通傳感器節(jié)點(diǎn)的位置,當(dāng)傳感器節(jié)點(diǎn)具有RSSI測(cè)距能力時(shí),便無法測(cè)量其位置,而Euclidean算法則能很好地改善此種狀況。只是應(yīng)用Euclidean算法測(cè)量,雖然能獲得較好的結(jié)果,可是還會(huì)受到一些外界因素的干擾(如噪聲),因此,本文結(jié)合UKF濾波來消除噪聲的干擾,從而獲得較準(zhǔn)確的結(jié)果,此算法稱為兩步定位算法。
3兩步定位算法設(shè)計(jì)
3.1模型描述
根據(jù)上面的設(shè)定,對(duì)于第i(i=1,-,I)個(gè)傳感器節(jié)點(diǎn),在第k(k=1,…,K)個(gè)迭代周期的狀態(tài)方程為:
Xi=X<k-1)+Wi(k) (1)
相應(yīng)的目標(biāo)節(jié)點(diǎn)對(duì)此傳感器節(jié)點(diǎn)的量測(cè)方程為:
Z(k)=g(X(k))+Mk) (2)
其中,X,(k)表示目標(biāo)狀態(tài)向量,XM)=[X?,&(k),&(k)]T,即X-Y-Z坐標(biāo)軸上的傳感器節(jié)點(diǎn)i的位置信息;Z(k)為量測(cè)向量,這里指移動(dòng)目標(biāo)節(jié)點(diǎn)和第i個(gè)傳感器節(jié)點(diǎn)之間的距離。因此,式(2)可以改寫為:
厶(k)=J(DXn(k)V+(AX(k))2+(AX(k))2+v,(k) (3)
式中:
分別表示各個(gè)坐標(biāo)軸方向上第i個(gè)傳感器節(jié)點(diǎn)與目標(biāo)節(jié)點(diǎn)之間的距離,X(k)= (k),x¥(k),X3(k)]T為移動(dòng)目標(biāo)節(jié)點(diǎn)的位置
信息。
此外,Wi(k)和Vi(k)分別表示系統(tǒng)噪聲和量測(cè)噪聲,假設(shè)它們?yōu)榛ゲ幌嚓P(guān)的,均值為零的斯白噪聲,那么,其協(xié)方差矩陣分別為Rk和Q。
3.2UKF在狀態(tài)估計(jì)中的應(yīng)用
UKF的處理流程如下:
(1) 初始化目標(biāo)狀態(tài)向量Xi(0|0)及其誤差協(xié)方差Pi(0|0);
(2) 計(jì)算sigma點(diǎn):
lik-i=Xi(k—1|k—1) (4)
Xh-1=X,(K-1|K-1)土+ P,(k-1|k-1))j(5)
⑶時(shí)間更新:
Xi(k\k-1)= xU-1 (6)
P(k|k-1)= -Xx(k|k-1)]x
jf (7)
[xluk-i—Xi(k|k—1)]T+Qk
(4) 量測(cè)更新:
pi.ut-i=h(xlm-i'), j=0,土1,…,土n (8)
Z(k\k-1)= 部" (9)
(5) 狀態(tài)更新:
Xi(k|k)=Xi(k|k—1)+Ki(k)(Zi(k)—Zi(k|k—1)) (10)
P(k|k-1)=P(k|k-1)-K,(k) k|k-1) (11)
當(dāng)模型一定時(shí),對(duì)濾波精度影響比較大的因素:一是初始狀態(tài)向量的選取,二是量測(cè)噪聲的選取[6]。對(duì)于文中所用的狀態(tài)估計(jì)模型,它其實(shí)沒有很好地模擬目標(biāo)狀態(tài),這是因?yàn)閭鞲衅鞴?jié)點(diǎn)和移動(dòng)目標(biāo)節(jié)點(diǎn)之間的距離是不可預(yù)測(cè)的。濾波的流程必須要求一個(gè)目標(biāo)狀態(tài)方程進(jìn)行下一時(shí)刻的預(yù)測(cè),那么,式⑴所示的狀態(tài)方程一般認(rèn)為下一時(shí)刻的位置和當(dāng)前位置基本一致,但是,再加上一個(gè)系統(tǒng)噪聲將表示可能的不一致。顯然,這個(gè)狀態(tài)方程不能很好地進(jìn)行相應(yīng)的狀態(tài)預(yù)測(cè),這就是所謂的協(xié)方差預(yù)測(cè)。但是,當(dāng)初始值和真實(shí)值比較接近時(shí),這個(gè)狀
態(tài)預(yù)測(cè)方程接近成立。因此,要得到精確的濾波結(jié)果,對(duì)初始值的選取要求就要提高。對(duì)于量測(cè)噪聲Q,它將影響每步迭代濾波估計(jì)值的濾波速度。一般當(dāng)移動(dòng)目標(biāo)節(jié)點(diǎn)運(yùn)動(dòng)變化比較快時(shí),應(yīng)取比較大的值,而當(dāng)估計(jì)值和真實(shí)值比較接近時(shí),應(yīng)取比較小的值叫對(duì)于Q值來說,由于移動(dòng)節(jié)點(diǎn)的速度可控,可以根據(jù)它來設(shè)置比較適中的值。對(duì)于初始狀態(tài)的設(shè)置,通??梢岳肊uclidean定位算法。
3.3工作流程
若一個(gè)擁有RSSI測(cè)距能力的移動(dòng)節(jié)點(diǎn)能在傳感器節(jié)點(diǎn)的通信范圍內(nèi)移動(dòng)三次(或以上)且不在一條直線上,這就相當(dāng)于滿足Euclidean定位法中三個(gè)目標(biāo)節(jié)點(diǎn)的要求。假設(shè)目標(biāo)節(jié)點(diǎn)和未知位置的傳感器節(jié)點(diǎn)距離是可測(cè)的,那么,傳感器節(jié)點(diǎn)就可收集三個(gè)移動(dòng)節(jié)點(diǎn)的數(shù)據(jù),并且離線采用Euclidean測(cè)距法來計(jì)算自己的位置。
根據(jù)上面的討論,可將定位方法分為兩步來完成:先用Euclidean定位測(cè)距法確定傳感器節(jié)點(diǎn)的初始位置,再用UKF濾波方法精確定位。由于每個(gè)傳感器的工作是獨(dú)立的,對(duì)于傳感器,來說,在時(shí)間閾值T符合一定條件的情況下,其工作流程圖如圖2所示。
4仿真分析
假設(shè)存在這樣的場(chǎng)景:在X-Y平面,區(qū)域[0,1000m]X[0,1000m]內(nèi)由飛機(jī)隨機(jī)灑落50個(gè)位置未知的傳感器節(jié)點(diǎn)和一個(gè)可移動(dòng)、位置可知的目標(biāo)節(jié)點(diǎn),同時(shí)假設(shè)節(jié)點(diǎn)可起飛,那么,它將按照預(yù)定軌跡,在空中邊飛行邊向地面的傳感器節(jié)點(diǎn)按預(yù)定的時(shí)間間隔周期性發(fā)布自己的位置信息。而未知位置的傳感器節(jié)點(diǎn)能夠測(cè)量它與節(jié)點(diǎn)的距離。若節(jié)點(diǎn)是用GPS定位的,可在仿真中假設(shè)移動(dòng)目標(biāo)節(jié)點(diǎn)的自身定位時(shí)有協(xié)方差均值為50m的定位誤差。另外,在傳感器節(jié)點(diǎn)和目標(biāo)節(jié)點(diǎn)的距離測(cè)量時(shí),無論采用哪種方法,誤差肯定會(huì)存在。假設(shè)它們之間的真實(shí)距離為r時(shí),存在[r~rs,r+r]的隨機(jī)誤差,那么,仿真分析5=0.1或0.2兩種情況時(shí),傳感器節(jié)點(diǎn)的分布圖和錨節(jié)點(diǎn)的移動(dòng)軌跡如圖3所示。為了比較不同算法對(duì)軌跡的不同要求,另外設(shè)計(jì)的兩種節(jié)點(diǎn)移動(dòng)軌跡如圖4所示。
分別用本文所述的兩步定位法(以下簡(jiǎn)稱方法1)、單獨(dú)基于UKF的濾波定位方法(以下簡(jiǎn)稱方法2)和單獨(dú)使用的Euclidean定位法(以下簡(jiǎn)稱方法3)在錨節(jié)點(diǎn)按軌跡1、2、3移動(dòng)時(shí),分別計(jì)算各個(gè)待定位傳感器節(jié)點(diǎn)位置。那么,在5=0.1時(shí),方法1、2的定位效果圖如圖5所示。很明顯,本文所述方法的定位效果要好很多,而且各個(gè)待定位節(jié)點(diǎn)的位置基本正確。
為了更清楚地說明算法的性能,再將不同算法在不同軌跡情況下,在100次MonteCarlo實(shí)驗(yàn)[9]后,它們定位后的位置均方差誤差如圖6所示。
由圖6所示的誤差比較圖可以清楚地看出,無論在5=0.1還是0.2,當(dāng)目標(biāo)節(jié)點(diǎn)按軌跡1、軌跡2移動(dòng)時(shí),方法1均比方法2要好。當(dāng)5=0.1時(shí),方法1、方法2的定位誤差均比5=0.2時(shí)的小,而且方法1的改善效果更好。這說明,節(jié)點(diǎn)與待定位節(jié)點(diǎn)的距離測(cè)量誤差越小,本文所述的方法越有效。方法3的定位誤差比另外兩種方法大很多,且當(dāng)5=0.2時(shí),方法3的定位誤差與方法1、方法2的差別更大。這也說明了基于UKF濾波的定位方法對(duì)定位精度的提高是顯著的。分析不同方法產(chǎn)生不同程度的誤差原因可以發(fā)現(xiàn),這些出現(xiàn)較大誤差的節(jié)點(diǎn),都沒有出現(xiàn)在目標(biāo)節(jié)點(diǎn)的移動(dòng)軌跡內(nèi),因而導(dǎo)致了定位的誤差。而只有在軌跡3的情況下,所有待定位傳感器節(jié)點(diǎn)均在節(jié)點(diǎn)移動(dòng)軌跡之內(nèi),而兩種算法的定位精度基本差不多。
5結(jié)語
本文提出了一種改進(jìn)的利用一個(gè)移動(dòng)目標(biāo)節(jié)點(diǎn)進(jìn)行節(jié)點(diǎn)定 位的方法。該方法降低了移動(dòng)節(jié)點(diǎn)的移動(dòng)軌跡要求,節(jié)點(diǎn)即使 隨意移動(dòng)也能得到滿意的定位精度,同時(shí),也可實(shí)現(xiàn)判斷節(jié)點(diǎn) 是否擁有RSSI測(cè)距能力,多種情況下的仿真結(jié)果都表明了本 算法的有效性。但是,本方法是在犧牲一定計(jì)算量的基礎(chǔ)上 得到的提高,如果誤差幅度s非常小,Euclidean定位法就能 得到精確的結(jié)果;如果節(jié)點(diǎn)的范圍明確已知,并能精確控制移 動(dòng)錨節(jié)點(diǎn)的移動(dòng)軌跡,本文的方法可得到滿意的結(jié)果;而如 果以上的條件不成立,且對(duì)定位結(jié)果要求較高,那么,本文 方法也可以適用。