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