陳 靜,夏 超
(安徽理工大學 電氣與信息工程學院,安徽 淮南 232001)
為了在工程應用中提供精確的監(jiān)控服務,必須要應用WSN節(jié)點位置的相關信息[1-2].WSN中有多種目標節(jié)點的定位算法,基于RSSI測距的定位算法因其成本和能耗低等優(yōu)點被廣泛采用[3].
然而,WSN中RSSI信號傳輸噪聲嚴重影響了目標節(jié)點的定位精度,引起相關領域專家和學者的廣泛關注.文獻[4]提出了一種三角形質心定位算法(Triangle Centroid Positioning, TCP),該算法沒有充分考慮節(jié)點分布特性,定位誤差比較大.文獻[5-6]提出了一種改進加權質心定位算法(Weighted Centroid Positioning, WCP),該算法在距離估計過程中存在偏差,易產生較大定位誤差.文獻[7-8]提出了一種基于RSSI信號指紋數據庫的定位算法,該定位算法高度依賴指紋數據庫數據,一旦環(huán)境發(fā)生變化,定位精度會明顯下降.文獻[9]提出了一種基于神經網絡的定位算法,該算法學習規(guī)則簡單,在數據不充分的情況下,會產生明顯的定位誤差.針對單一定位算法定位精度低的問題,研究人員提出了融合定位的解決方案.文獻[10-11]提出了一種將行人航位推算法與RSSI融合的定位算法;文獻[12-13]提出了將慣性測量單元和超寬帶測距測量融合的定位方法;文獻[14]提出了一種將慣性測量單元與遠程WiFi和短程超寬帶測距測量融合的定位方法.然而,上述融合定位方法需要額外的設備,對硬件的成本要求較高.
針對上述問題,為了提高節(jié)點的定位精度,同時又不增加硬件成本,本文提出用距離偏差因子對參考點進行迭代定位,獲得了目標節(jié)點的精確定位坐標.
RSSI測距算法是通過測量接收到的RSSI信號來計算目標節(jié)點和信標節(jié)點之間的距離.目前常用的測距模型是對數-距離路徑損耗(Log-Distance Pass Loss, LDPL)模型,其表達式如式(1)所示.
P(d)=P(d0)-10nlog10(d/d0)+Xσ,
(1)
式(1)中,n表示路徑損耗因子;X為陰影系數,是一個以0為均值、以σ為方差的高斯隨機變量;P(d)為兩個節(jié)點之間距離為d時的RSSI值;P(d0)為兩個節(jié)點之間距離為d0時的RSSI值,其中d0為參考距離,一般取1 m.
當d0取1 m,并用RSSI表示d處的信號強度時,式(2)可簡化為:
RSSI(d)=A-10nlog10(d)+Xσ,
(2)
式(2)中,A是節(jié)點間距為1 m時的RSSI標準值.
在實際的物理環(huán)境中,信號在傳輸過程中很容易受到噪聲的干擾.因此,由LDPL模型獲得的距離與真實距離值之間存在較大偏差.為了進一步減小定位誤差,引入了參考點迭代定位算法(Iterative Positioning Algorithm of Reference Point, IPAoRP).該算法首先基于所測得的距離分別計算位于3個定位圓重疊部分弧上的3個參考點坐標,以3個參考點的質心作為目標節(jié)點的初始定位坐標,其次引入距離偏差因子重新計算節(jié)點間距離,基于新的距離反復迭代參考點坐標,更新目標節(jié)點的定位坐標,直到滿足迭代準則.
參考點的計算原理圖如圖1所示,以參考點A1(xr1,yr1)的計算為例.
圖1 參考點的計算原理圖
圖1中,由于A1(xr1,yr1)在以信標節(jié)點M1(x1,y1)為圓心、M1與目標節(jié)點間的距離d1為半徑的圓周上,于是有:
(xr1-x1)2+(yr1-y1)2=d12.
(3)
同時,A1(xr1,yr1)需要滿足的條件可由式(4)來表示:
(4)
式(4)中,d2和d3分別是圓M2和圓M3的半徑,|A1M2|、|A1M3|分別是參考點A1(xr1,yr1)和信標節(jié)點M2(x2,y2)、M3(x3,y3)之間的距離,可表示為:
(5)
(6)
由式(3)-式(6)計算出的參考點A1可能會有多解,只需要保留ΔM1M2M3內部的解A1(xr1,yr1),通過以下方法判斷:①點A1和點M1位于直線M2M3同側;②點A1和點M2位于直線M1M3同側;③點A1和點M3位于直線M1M2同側.如果以上3個條件同時滿足,則參考點A1位于ΔM1M2M3內部,否則參考點A1位于ΔM1M2M3外部.同理,可以計算得到圓M2和圓M3上的參考點A2(xr2,yr2)和A3(xr3,yr3).
將上述所求的3個參考點作為頂點構成一個三角形,以這個三角形的質心作為目標節(jié)點的初始定位坐標GI(xg,yg),其可由公式(7)獲得.
(7)
在上述參考點的基礎上,引入距離偏差因子,根據距離偏差因子重新計算給定信標節(jié)點與未知目標節(jié)點之間的距離,并進一步計算新的參考點,通過不斷迭代更新參考點,計算目標節(jié)點的坐標.
將上述目標節(jié)點的初始定位坐標與信標節(jié)點坐標之間的距離記為dOi,采用LDPL模型計算出目標節(jié)點和信標節(jié)點的距離,記為dIi,距離偏差因子Ci可由式(8)定義,用于表示dIi和dOi之間的偏差程度.
Ci=dIi/dOi,
(8)
式中,I為參考點的迭代次數,i= 1, 2, 3.
每次迭代可計算出3個距離偏差因子,通常采用它們的平均值和中位數作為統(tǒng)計總體特征的參數.由于可能會出現3個距離偏差因子的極值太大或太小的情況,其平均值用于計算會使得最終結果偏離實際值,因此通常采用它們的中位數(記為Cmid)來表達總體距離偏差特征,基于Cmid重新計算信標節(jié)點與目標節(jié)點間距離(記為d(I+1)i),其可由式(9)表示:
d(I+1)i=dIi/Cmid.
(9)
基于新的距離d(I+1)i對參考點進行迭代,進而不斷更新目標節(jié)點的定位坐標.
迭代定位算法的關鍵在于終止條件的設置,如果設置正確的終止條件,可以在少量的迭代次數內獲得較高的定位精度.常用的迭代準則有預設精度和預設迭代次數兩種.然而通過仿真發(fā)現,如果終止條件設置成前者時,它的計算復雜度將變得很高,甚至高于算法本身.因此,選擇預設迭代次數作為迭代的終止條件.
為了確定合適的迭代終止次數,在不同的節(jié)點通信半徑(通信半徑R=10 m和R=20 m)及不同的信標節(jié)點數量(信標節(jié)點數量J=10和J=20)條件下進行了20次迭代仿真.每次迭代對應的平均定位誤差率如圖2所示.
由圖2可以看出,在不同的條件下,迭代次數小于6時,平均定位誤差率隨著迭代次數的增加而減小,迭代6次以后不再變化,即目標節(jié)點的定位精度達到收斂,因此本文將迭代終止次數設置為6次.參考點迭代定位算法的具體流程如圖3所示.
圖2 不同迭代次數的平均定位誤差率
圖3 參考點迭代定位算法流程圖
在MATLAB R2016b環(huán)境下進行基于DBSCAN的參考點迭代定位算法的性能仿真實驗.定位區(qū)域設置為一個50 m×50 m的二維平面,區(qū)域內隨機布置20個信標節(jié)點和30個目標節(jié)點.在測距模型中,節(jié)點間距為1 m時的接收信號強度A設置成-45 dBm,路徑損耗因子n設置成3,添加了均值為0和標準差為2.5的高斯隨機變量.
(10)
(11)
式中,r是節(jié)點的通信半徑,(Xg,Yg)是目標節(jié)點的真實位置,(xg,yg)是目標節(jié)點的估計位置,N是目標節(jié)點的個數.
為了驗證本文提出的參考點迭代定位算法的可行性,構建一個邊長為50 m的正方形定位區(qū)域,區(qū)域內內隨機布置20個信標節(jié)點和30個目標節(jié)點,每個節(jié)點之間的通信半徑設為20 m,節(jié)點分布如圖4所示.采用TCP算法、WCP算法和IPAoRP對目標節(jié)點進行定位,定位結果分別如圖5-圖7所示.
上述3種定位算法針對目標節(jié)點的定位坐標如表1所列.
圖4 信標節(jié)點和目標節(jié)點的分布圖
圖5 TCP定位結果
圖6 WCP定位結果
圖7 IPAoRP定位結果
表1 3種定位算法目標節(jié)點的定位坐標
基于式(10)計算出目標節(jié)點的定位誤差率,如表2所列,誤差率對比情況如圖8所示.
表2 3種定位算法的定位誤差率
圖8 3種定位算法的定位誤差率對比
基于式(11)可計算出3種定位算法的平均定位誤差率,如表3所列.
表3 3種定位算法的平均定位誤差率
由表2、3和圖8可知:①IPAoRP的定位誤差率明顯小于另外兩種定位算法的定位誤差率;②IPAoRP的平均定位誤差率為5.45%,比TCP算法的平均定位誤差率低33.87%,比WCP算法的平均定位誤差率低8.99%.
本文針對RSSI信號傳輸過程中噪聲干擾導致定位精度降低的問題,提出了一種基于距離偏差因子的WSN參考點迭代定位算法.基于節(jié)點間的距離計算3個參考點,以其質心作為目標節(jié)點的初始坐標,引入距離偏差因子對參考點進行迭代,進而迭代目標節(jié)點的坐標.解決了傳統(tǒng)質心定位算法定位圓不相交而無法定位的問題,提高了定位的精度.接下來將在本文提出的定位算法的基礎上進一步開展無線傳感器網絡中移動節(jié)點的實時跟蹤、路徑規(guī)劃等相關研究.