汪 明,許 亮,何小敏
(廣東工業大學 自動化學院,廣州 510006)(*通信作者電子郵箱celiangxu@gdut.edu.cn)
目標定位與追蹤是物聯網系統的重要需求。傳統定位技術有全球定位系統(Global Positioning System, GPS)、無線網絡通信技術WiFi(Wireless Fidelity)、藍牙等,這些技術都需要附屬設備實現目標定位且成本較高、不易部署,而無線傳感器網絡具有隨機部署、成本低等優點。利用無線傳感器網絡節點自定位技術實現目標定位與追蹤是當前無線傳感器網絡一個重要應用方向,而高精度和快速定位是節點自定位追求的目標,因此研究精度高和速度快的無線傳感器網絡定位算法是關鍵[1-3]。
現存的無線傳感器網絡定位算法主要有兩類:基于距離的定位算法和距離無關的定位算法。距離無關定位算法主要有:質心算法、距離向量-跳段(Distance Vector-Hop, DV-Hop)算法、無定形(Amorphous)定位算法、近似三角形內點測試法(Approximate Point-In-Triangulation Test, APIT)算法[4],這類算法實現簡單,但定位精度低,無法滿足高精度定位應用需求[5]。基于距離的定位算法能夠實現精確定位,但是對節點硬件要求較高,這類算法主要有到達時間(Time Of Arrival, TOA)、到達時間差(Time Difference Of Arrival, TDOA)、到達角度(Angle Of Arrival, AOA)、接收信號強度指示(Received Signal Strength Indicator, RSSI),前三者都要求增加額外硬件設備,對傳感器節點成本要求較高[6]。由于節點本身具有無線發射模塊,無需增加額外硬件,因此基于RSSI測距的定位算法得到廣泛研究[7];但RSSI測距受環境障礙物和多徑效應影響較大,從而影響定位精度。如何減小環境因素對RSSI測距的影響,成為現代學者研究的重點[8]。文獻[9]提出一種混合預處理模型處理得到的RSSI值,提高了RSSI測距精度和抗干擾能力,但受環境影響較大,無法實現精確定位。文獻[10-11]認為較大的RSSI值估算出的距離精度越高,因而提出一種加權質心定位算法,一定程度上提高了節點定位精度;但節點一致性不是很好,無法實現精確定位。文獻[12-13]根據節點測量功率和平面幾何約束關系,提出一種動態獲取區域路徑損耗指數的方法,可有效提高信號強度轉換成距離的精度;但該方法要求功率測量時無噪聲,實際環境中很難實現。文獻[14]提出一種將接收信號強度與行人航位推算系統(Pedestrian Dead Reckoning, PDR)相結合的室內定位算法,該算法可有效減小非視距情況下障礙物對定位精度的影響;但引進慣性裝置,使得節點硬件成本較高,不適合大規模部署。文獻[15]提出一種針對定位各階段實施定位誤差抑制的基于接收信號強度的協作定位算法,該算法在一定程度上提高了節點定位精度;但忽略了未知節點間的信息,造成了大量冗余信息的浪費。文獻[16]提出一種基于RSSI概率估計函數的網格定位算法,該算法提高了節點定位精度,適合局部定位;但穩定性較差,具有較大的偶然性。文獻[17]根據節點隸屬度建立骨干網,采用兩跳距離估計,結合協作技術,充分利用未知節點間的冗余信息,該算法定位精度高;但算法復雜,難以實現快速定位要求。文獻[18-19]在不知道節點發射功率的情況下,采用一種改進半定規劃的基于RSSI的協作定位算法,有效提高了節點定位精度;但算法計算復雜,對節點硬件要求高,不適合大規模部署。上述文獻基于RSSI測距定位算法,主要有以下不足:一是只利用未知節點與錨節點間的接收信號強度進行定位,而忽略未知節點與未知節點間接收信號強度信息,對未知節點間冗余信息利用不足,造成信息浪費;二是不加篩選利用未知節點間接收信號強度RSSI,增加了算法時間復雜度。
針對目前定位算法對未知節點間接收信號強度RSSI利用不足及盲目利用的問題,本文提出了一種精度優選協作策略的RSSI協作定位算法,利用未知節點間接收信號強度RSSI參與節點位置修正,根據定位精度篩選參與協作的未知節點,有效提高了節點定位精度和算法效率。與已有定位算法相比,主要有以下改進;
1)根據RSSI閾值,從大量未知節點中粗篩選出定位精度相對較高節點;利用subset子集判斷方法和錨節點置換準則,進一步挑選出兩級精度協作骨干節點,為下一步協作求精準備條件。
2)以鄰居骨干節點作為協作對象,利用未知節點間的接收信號強度對未知節點進行協作求精,避免因參與協作的未知節點因自身精度低而無法達到對定位精度修正的效果,提高了節點定位精度,減小了算法復雜度。
研究分析RSSI信號傳播模型可以知道,路徑損耗指數λ是信號強度RSSI轉換為距離的重要參數。利用定位區域內錨節點已知的位置信息和相互間的通信,結合信號傳播模型,可以實時動態獲取路徑損耗指數,建立動態信號傳播模型,減小環境對測距的影響。根據定位區域內錨節點間已知的實際距離和由信號傳播模型得到的測量距離,建立測距誤差修正函數,可以進一步提高測距精度。根據動態信號傳播模型和測距誤差修正函數,在測距階段對測量距離進行預處理,可以有效提高定位階段的定位精度。
基于信號強度指示RSSI的定位中,根據節點接收到的射頻信號強度,采用適當的無線信號傳輸模型,將其轉換為距離,最后再利用三邊測量法計算出節點的位置。實踐表明,射頻信號在傳播時隨著距離逐漸衰減的,其衰減特性服從對數正態分布,常用對數常態分布模型,作為信號強度和傳播距離的轉換關系,其表達式如下:
P(d)=P(d0)-10λlg (d/d0)+Xσ
(1)
其中:P(d)表示距離發射節點距離為d處的接收信號功率,單位為dBm;P(d0)表示距離發射節點d0處的接收信號功率,單位為dBm;d0為參考距離,一般取為1 m;λ為路徑損耗指數,其值受環境的影響,一般在2~4;Xσ代表環境噪聲,信號傳輸過程中易受環境噪聲影響,如信號串擾,式中取Xσ為零均值的高斯噪聲模擬環境噪聲。接收節點可根據接收到的信號強度,利用式(1)計算出與發射節點間的距離。
路徑損耗指數λ表示信號強度RSSI隨距離增加衰減的速率,是測距估計的一個重要參數,其值取決于特定的傳播環境。準確獲取路徑損耗指數的值,可以有效減小測距誤差。傳統方法都是根據經驗取λ值,無法得到適應相應環境的λ值,導致計算距離與實際距離存在較大誤差,而且一旦應用環境發生改變,就要重新調整λ值,使應用不夠靈活。本文結合位置信息已知的錨節點,動態獲取路徑損耗指數。未知節點周期性地探測其鄰居錨節點,選擇其中接收信號強度最大的3個鄰居錨節點,根據錨節點相互間的接收信號強度,結合信號傳播模型即可實時獲取未知節點所在定位區域的路徑損耗指數。
假設A、B、C為未知節點N的3個鄰居錨節點,A與B、C兩個錨節點間的接收信號強度RSSI分別為P(dB)、P(dC),代入式(1)可得:

(2)
P(dB)-P(dC)=10λlg (dAB/dAC)
(3)
錨節點A、B、C位置已知,dAB、dAC的實際距離可以計算出來,根據式(3)即可求出路徑損耗指數λ的值。將此時所求得的路徑損耗指數λ代入信號傳播模型,根據未知節點N與錨節點A、B、C間的接收信號強度,計算出未知節點與錨節點間的距離,可以有效減小環境對測距誤差的影響。
為進一步減小環境對測距誤差的影響,減小測距誤差,由定位區域內錨節點間的實際距離和錨節點間利用信號傳播模型得到的測量距離,根據誤差變化的整體趨勢,利用最小二乘法擬合出一條誤差隨距離變化的測距誤差曲線,最后利用測距誤差曲線對未知節點得到的測量距離進行修正。設實際距離與測量距離之間滿足誤差函數,其表達式如下:
s′=β1si+β0
(4)
其中si表示測量距離。
平方損失函數:
(5)
其中:si表示兩個錨節點間測量距離;Δsi表示錨節點間實際距離與測量距離之差;n表示定位區域內通信錨節點的數量。使用最小二乘法,求得使平方損失函數最小時的系數β0、β1,得到測距誤差修正函數,根據式(6)修正未知節點與信標節點間測量距離:
(6)
根據定位區域內錨節點的信息,建立具體環境下的RSSI信號傳播模型和測距誤差函數,對測量距離進行預處理,可以有效提高后續節點定位精度。
傳統定位算法主要關注未知節點與錨節點間的信息,并將其轉換成距離進行定位。無線傳感器網絡中,未知節點不僅可以與錨節點通信,未知節點之間也可以相互通信,這樣就會存在大量冗余信息。在協作定位中,未知節點間信息被用來對定位節點進行誤差矯正。對于一個已定位未知節點,可根據與其鄰居未知節點間的信息對自身位置進行矯正,提高節點定位精度。由協作定位原理可知,因為需要未知節點參與協作求精,在迭代求精的過程中可能會產生累計誤差,因此必須保證協作節點的精度足夠高,這樣就可以將協作過程中的累計誤差降低到最低,同時參與協作的未知節點精度越高,對鄰居未知節點誤差修正效果越好。基于此,本文提出一種基于精度優選的協作策略。對粗定位節點,利用RSSI閾值、subset子集和錨節點置換準則篩選出符合精度要求的節點,并以篩選出的節點作為協作對象,對未知節點進行位置優化求精。以篩選出鄰居協作骨干節點作為協作對象,對未知節點位置進行協作求精,提高節點定位精度,同時也避免因參與協作未知節點因為自身精度低而無法達到對定位精度修正的效果,提高了協作效率。
算法流程如圖1所示。1)RSSI粗定位。根據接收信號強度RSSI計算待定位節點與錨節點距離,最后使用極大似然法對未知節點進行粗定位。2)篩選協作骨干節點。根據信號強度與測距誤差關系,設置RSSI閾值,快速從大量未知節點中挑選出定位精度較高的節點;對挑選出的節點使用subset子集判定,剔除受環境影響而不穩定的節點,得到次選協作骨干節點;最后利用錨節點置換原則,篩選出符合精度要求的節點作為優選骨干節點。3)協作求精。以鄰居優選協作骨干節點作為優選協作對象,在鄰居優選協作骨干節點不足的情況下,再選擇鄰居次選協作骨干節點作為協作對象,對未知節點進行位置誤差修正。

圖1 精度優選協作定位算法流程
在定位區域內,當未知節點鄰居錨節點數大于或等于3個時,根據未知節點和錨節點間的接收信號強度RSSI,利用信號傳播模型和測距誤差修正函數計算出未知節點與相應錨節點間距離,最后使用極大似然法對未知節點進行定位。對鄰居錨節點數小于3個的未知節點,先以一級鄰居骨干節點作為補充錨節點進行定位;若錨節點數仍低于3個,則再以二級鄰居骨干節點作為進一步的補充錨節點進行定位,可有效擴大節點定位范圍。具體算法如下。
算法1 RSSI粗定位算法。
Input:錨節點坐標(xanchor,yanchor),未知節點i∈1,2,…,n。
Output:未知節點估計坐標(xN,yN)。
Method:
for alli← 1:ndo
j→ 鄰居錨節點
ifj≥3 then
(xN,yN) ← ML(Max Likehood Estimation)
else
b1 ← 鄰居優選協作骨干節點
j←j+b1
ifj≥3 then
(xN,yN) ← ML
else then
b2 → 鄰居次選協作骨干節點
j←j+b2
(xN,yN) ← ML
end if
end if
end for
參與協作的節點精度直接影響著誤差修正效率,本文根據RSSI閾值、subset子集判斷方法以及錨節點置換原則,有效篩選出RSSI粗定位精度較高的節點。首先,使用RSSI閾值,可快速從大量的未知節點中的篩選出精度相對較高的節點,減少計算時間。subset子集判斷方法和錨節點置換原則由于要再次進行定位運算,計算復雜,因此,在使用RSSI閾值篩選出的節點中,使用subset子集判斷方法和錨節點置換原則,不僅可以剔除受環境影響的節點,篩選出精度高的節點,同時也能極大減少計算時間,節省能量。最后以篩選出的節點作為協作節點參與位置誤差修正。
2.2.1 確定RSSI閾值
RSSI值受多徑效應影響較大,同一條件下,RSSI值越大,測距誤差越小,節點定位精度越高。通過實驗確定不同環境下的RSSI閾值,再根據RSSI閾值可以快速從大量未知節點中篩選出粗定位精度較高的未知節點。實驗中,信號傳播模型各變量取值如下:參考距離d0為1 m;在參考距離處節點接收信號強度P(d0)為-40 dBm;Xσ為零均值、方差為2的正態分布。在仿真環境下,得到的測距誤差與接收信號強度之間的關系如表1所示。

表1 測距誤差與信號強度的關系
由表1的實驗結果可知,外部條件一定情況下,在路徑損耗指數相同時,不同節點間距對應的測距誤差相差很大;在相同節點間距時,不同路徑損耗指數對應的測距誤差也存在較大差別。為提高節點定位精度,應盡量減小測距誤差。根據表1,取測距誤差參考值為1.5 m,初步篩選出定位精度較高的節點。由測距誤差得到RSSI閾值如下:當路徑損耗指數λ在[2,2.5)時,取RSSI閾值為RSSIthres=-65 dBm;當路徑損耗指數λ在[2.5,3)時,取RSSI閾值為RSSIthres=-80 dBm;當路徑損耗指數λ在[3,3.5)時,取RSSI閾值為RSSIthres=-90 dBm;當路徑損耗指數λ在[3.5,4)時,取RSSI閾值為RSSIthres=-100 dBm。
2.2.2 RSSI閾值篩選節點
由信號傳播模型可知,接收信號強度RSSI隨著節點間收發距離的增大而減小。接收信號強度RSSI值越大,根據信號傳播模型計算得到的測量值與真實值越接近;RSSI值越小,測量值與真實值誤差越大。根據表1得到的RSSI閾值當來自錨節點信號強度平均值RSSIav>RSSIthres時,表明此時節點的測距較精確,定位精度較高。
未知節點N在同一位置接收來自n1個錨節點的RSSI值,使用高斯模型對RSSI值進行處理,減少小概率、大干擾事件的影響。最后,對來自不同錨節點的接收信號強度RSSI求均值:
(7)
其中,n1為鄰居錨節點數;RSSIi為與第i個錨節點間的接收信號強度。結合路徑損耗指數判斷其與RSSI閾值的關系,如果
RSSIav≥RSSIthres
(8)
表示此節點粗定位精度相對較高。可見,利用RSSI閾值,可以快速從大量未知節點中初步篩選出定位精度相對較高的節點。
2.2.3 用subset子集提取次選協作骨干節點
RSSI閾值受環境影響較大,具有不穩定性。為進一步消除環境的影響,本文提出一種subset子集判定的方法。由表1可知,在相同條件下,RSSI值越大,節點測距誤差越小,定位精度也相應更高。使用極大似然法對未知節點定位,其實是一個迭代使用三邊測量法縮小定位區域的過程,未知節點最終位置實際上是由測距誤差最小的幾個錨節點決定的。在未知節點鄰居參考節點中取4個具有最大RSSI值的錨節點,取4個錨節點中的任3個錨節點為一組,使用三邊測量法定位,可以得到未知節點的4個估計位置。相應地,這4個估計位置相互間的誤差應該是未知節點所有鄰居錨節點的組合中使用三邊測量法時最小的。正常情況下,未知節點在同一位置的這4個估計位置應該是很接近的,如果4個估計位置相互間的誤差較大,超過某一閾值k,則表示該節點受環境影響較大,位置估計不穩定。基于此,選取未知節點4個具有最大RSSI值的鄰居錨節點建立一個subset(4,3)子集,subset(4,3)表示在接收信號強度最大4個錨節點中任意3個錨節點為一組的一個集合。對每組subset(4,3)中來自3個錨節點的RSSI值使用三邊測量法進行定位,最終可以得到未知節點的4個位置估計值,取4個位置相互間誤差最小值:
E=min{dis(ck1,ck2),?k1∈1,2,3,4,
k2∈1,2,3,4 andk1≠k2}
(9)
其中:k1,k2為subset子集序號;ck1為第k1個subset子集得到的位置估計;dis(ck1,ck2)為第k1個subset子集位置估計和第k2個subset子集位置估計之間的誤差距離。當位置誤差滿足:
E≤θ
(10)
則表明節點估計位置穩定,受環境干擾小,精度較高。實驗中,θ取0.5,將滿足條件式(10)的節點作為次選協作骨干節點。
RSSI閾值篩選節點計算簡單,但是易受環境影響,使得RSSI閾值具有不穩定性。使用subset(4,3)子集判定條件,可以從RSSI閾值篩選出的節點中進一步剔除受環境影響較大的節點,確保篩選出節點的高精度和穩定性。
2.2.4 用錨節點置換原則篩選優選協作骨干節點
因為參與協作的節點精度越高,對未知節點誤差修正效果越明顯,可有效提高協作效率。為了滿足協作節點的高精度要求,還需采取一定的措施對節點進行再提取,使篩選出的節點精度盡可能高。這里提出一種錨節點置換原則,對上面篩選的優選協作骨干節點進行再處理:設未知節點N的估計坐標為(xN,yN),參與定位的3個信標節點分別為A(xA,yA)、B(xB,yB)、C(xC,yC)。現在將未知節點N看成位置已知的信標節點,坐標為(xN,yN),稱為轉化信標節點。在信標節點A、B、C中任選一個節點,這里選擇信標節點B,將其看成未知節點。最后利用信標節點A、C和未知節點N對B采用三邊測量法進行定位,估計坐標為B′(xB′,yB′),最后與B的實際位置進行比較,計算估計誤差:
(11)
最終的誤差由確定δ。δ越小,表明節點定位誤差越小,實驗中取δ=0.2 m。如果信標節點B的估計誤差滿足式(11),可以認為未知節點N的精度滿足要求,因此將未知節點N作為協作節點。根據錨節點置換原則,將篩選出的所有符合條件的未知節點作為優選協作骨干節點。
2.3.1 協作縮小定位區域
未知節點在RSSI定位階段,由于信號強度的測量存在誤差,轉化為距離使用三邊測量法進行定位時,得到的只是一個區域,最后將這個區域的質心作為未知節點估計位置,使未知節點的定位精度較低。利用未知節點間相互通信的協作信息,可以進一步縮小使用三邊測量法得到的定位區域,有效提高未知節點定位精度。
圖2所示為協作縮小定位區域圖。O1未知節點B使用三邊測量法的定位區域,根據節點A與節點B間的接收信號強度RSSI,利用信號傳播模型可以得到節點A與節點B間的測量距離為d12,以節點A為圓心,d12為半徑作圓與節點B定位區域O1相交得到區域O1′,可將節點B的位置區域縮小到O1′里,這樣對節點B的位置估計就會更加精確。

圖2 協作縮小定位區域原理
2.3.2 精度優選協作節點的協作策略
根據協作縮小定位區域原理可知,協作時要根據協作節點的位置對未知節點進行誤差修正,協作節點本身存在誤差,但在協作時可能會產生累計誤差。正是因為協作求精時可能會產生累計誤差,所以前面才會采用subset子集判斷方法和錨節點置換準則以確保篩選出的協作節點精度足夠高,這樣協作節點參與協作時,就可以將協作求精時的累計誤差降到最低,同時也能提高協作效率。基于此,本文提出一種基于精度優選協作節點的協作策略,在每次協作中,分為骨干節點和普通未知節點的協作求精。骨干節點協作求精:對每個骨干節點,以鄰居優選協作骨干節點作為優選協作對象,如果沒有鄰居優選協作骨干節點,則以鄰居次選協作骨干節點作為次選協作對象,使用協作算法對節點位置進行協作求精。普通未知節點協作求精:未知節點同樣以鄰居優選協作骨干節點作為優選協作對象,以鄰居次選協作骨干節點作為次選協作對象,使用協作算法對節點位置進行協作求精。最后,直到協作前后節點位置無變化則停止。這樣,既可以提高節點定位精度,同時也減少了計算時間。協作策略的具體步驟如算法2所示。
算法2 精度優選協作節點的協作算法。
Input:低精度未知節點i粗定位坐標(xN,yN),骨干節點j粗定位坐標(xbackbone,ybackbone)。
m→ 骨干節點數
for allj← 1:mdo
p→ 鄰居優選骨干節點
ifp>0 then
以p為協作對象
(xbackbone′,ybackbone′) ← 協作求精
else
p′ → 鄰居次選協作骨干節點
以p′為協作對象
(xbackbone′,ybackbone′) ← 協作求精
end if
X←xbackbone-xbackbone′
Y←ybackbone-ybackbone′
end for
m1← 低精度未知節點數
for alli← 1:m1do
l← 鄰居優選協作骨干節點
ifl>0 then
以l為協作對象
(xN,yN) ← 協作求精
else
l′ ← 鄰居次選協作骨干節點
以l′為協作對象
(xN,yN) ← 協作求精
end if
X′ ←xN-xN′
Y′ ←yN-yN′
end for
ifX′=0 andY′=0 andX=0 andY=0 then
stop
Output:未知節點協作求精坐標(xN′,yN′)、(xbackbone′,ybackbone′)。
整個協作過程中,都是盡量選擇精度高節點作為協作對象,以協作節點精度決定協作次序,提高協作效率,避免因參與協作未知節點因為自身精度低而無法達到對定位精度修正效果,減少計算時間。
正文內容這里采用大O記法O()來體現本文算法中各部分的時間復雜度,O1~O3分別表示RSSI粗定位、篩選協作骨干節點和協作算法的時間復雜度。
1)RSSI粗定位算法。
設初始未知節點總數為P,對每個節點進行三邊定位判斷,時間復雜度為:
T1=O1(P)
(12)
2)篩選協作骨干節點。
最壞的情況是每個未知節點都滿足RSSI閾值判斷和錨節點置換原則,因此要進行P次運算,則時間復雜度為:
T2=O2(P)
(13)
3)協作定位。
設優選協作骨干節點數為M,次選協作骨干節點數為N,迭代次數為Q,則骨干節點協作求精的時間復雜度為:
T3′=O3′((M+N)×Q)
(14)
未知節點協作求精時間復雜度為:
T3″=O3″((P-M-N)×Q)
(15)
總的時間復雜度為:
T3=O3(P×Q)
(16)
RSSI粗定位和篩選協作骨干節點計算簡單,為后期協作求精作準備,算法代價不高。最后的協作求精階段,基于一種精度優選協作策略,前面的節點篩選減少了該階段的計算時間,整體算法時間復雜度相對較低。
為驗證所提出定位算法效果,本文在CPU Intel Core i5- 4590@ 3.30 GHz、內存4 GB、Matlab R2015a仿真平臺下,對所提算法定位效果進行模擬仿真。
實驗中,設置定位區域為100 m×100 m正方形區域,節點隨機部署在該區域內,節點總數目、參考節點數和通信半徑等參數根據具體實驗要求來設置。設第i個未知節點實際位置坐標為(xi,yi),估計位置坐標為(xei,yei),節點定位誤差Ei定義如下:
(17)
其中:i=1,2,…,N,代表未知節點序號;R代表通信半徑。節點平均定位誤差定義如下:

(18)
節點平均定位誤差越小,表明算法定位精度越高。
實驗中,將本文算法分別與文獻[15]、文獻[16]和傳統協作定位算法定位效果進行對比分析。其中,文獻[15]是一種改進的針對各階段實施定位誤差抑制的基于RSSI定位算法;文獻[16]是一種改進的基于RSSI概率估計函數的網格定位算法。文獻[15-16]相較于傳統的RSSI協作定位算法,定位精度都有較大的提升。傳統協作定位算法,即對鄰居未知節點信息不加篩選盲目利用的協作定位算法。本文通過分析錨節點數、未知節點數以及節點通信半徑對定位精度影響,分別將本文算法與文獻[15-16]兩種改進的RSSI定位算法進行對比。在時間效率上將本文算法和傳統協作定位算法進行了對比。
圖3為在100 m×100 m的網絡區域內,節點最大通信半徑為20 m時,優選協作骨干節點分布。圖3(a)為未知節點數為50,錨節點數為25時,得到優選協作骨干節點分布圖;圖3(b)為未知節點數為100,錨節點數為25時,得到的優選協作骨干節點分布。
由圖3可知,在其他條件相同的情況下,優選協作骨干節點數隨著未知節點數的增加而增加。
圖4為在100 m×100 m的網絡區域內,節點最大通信半徑為20,未知節點數為100,錨節點數為10,15,20,25,30,35,40時本文算法和文獻[15-16]改進RSSI定位算法對比曲線。
由圖4可知,在外部條件相同的情況下,本文算法明顯優于文獻[15-16]算法。在錨節點數較小時,節點平均定位精度較文獻[15-16]算法也有所提高,但定位精度仍較低;隨著錨節點數增加,節點平均定位精度也不斷提高;當錨節點數增加到35以后,節點平均定位精度變化緩慢趨于穩定。實驗表明,本文算法具有很好的魯棒性和穩定性。

圖3 優選協作骨干節點分布

圖4 錨節點數對定位精度影響
圖5為在100 m×100 m的網絡區域內,節點最大通信半徑為20,未知節點數分別為20,50,100時,使用本文算法得到的節點平均定位誤差對比曲線。

圖5 未知節點數對定位精度影響
從圖5可知,未知節點數越多,節點定位精度越高。未知節點的密度影響著協作骨干節點的數量,因為未知節點數越多,協作骨干節點也越多,協作后節點定位精度相應越高。由此可見,本文算法在節點密集部署環境下能取得較好的效果。
圖6為100 m×100 m網絡區域內,未知節點總數為100個,錨節點數為20,節點通信半徑分別設置為10,15,20,25,30,35,40時,本文算法與文獻[15]、文獻[16]兩種改進RSSI算法平均定位誤差隨節點通信半徑變化對比。

圖6 通信半徑對定位精度影響
由圖6可知,隨著通信半徑的增大,本文算法節點平均定位精度逐漸提高。在外部條件相同的情況下,本文算法明顯由于文獻[15]算法、文獻[16]算法。在通信半徑較小的情況下,本文算法節點平均定位精度相較于文獻[15]算法、文獻[16]算法有所提高,但效果不明顯;當節點通信半徑大于20 m時,本文算法能夠取得較好的效果,節點平均定位精度較文獻[15]算法、文獻[16]算法有較大提升。可見,本文算法在大范圍網絡能取得較好的效果。
在100 m×100 m的網絡區域里,設置節點最大通信半徑為20,錨節點的數量為20,未知節點數為100,圖7是本文算法、傳統協作定位算法和文獻[15]改進RSSI定位算法平均定位誤差與協作次數的關系。

圖7 協作次數對定位精度影響
從圖7中節點平均定位誤差與協作次數關系曲線可知:本文算法和傳統協作定位算法,節點定位精度隨著協作次數的增加而不斷提高;在相同的協作次數下,本文協作定位算法節點定位精度明顯高于傳統協作定位算法。因為本位算法實行的精度優選協作節點的策略,避免了因參與協作的未知節點因為自身精度低而無法對定位精度修正,提高了協作效率,因此在相同時間內,本文算法要比傳統協作算法取得更高的定位精度。
圖8是在100 m×100 m網絡區域內,節點最大通信半徑為20 m時,錨節點數為20時,本文算法和傳統協作算法定位時間隨未知節點數變化對比。

圖8 節點定位時間對比
由圖8可知,節點定位消耗的平均時間隨著未知節點數的增加而增大。在外部條件相同,未知節點一定的情況下,本文算法節點平均定位時間比傳統協作定位算法下降了20%,在定位效率上取得極大提升。
無線傳感器網絡定位是無線傳感器網絡應用的一個重要前提,考慮到傳統算法定位精度不足、時間復雜度高等不足,本文提出了無線傳感器網絡RSSI協作定位算法。仿真實驗結果表明,在外部條件相同的情況下,相較于傳統算法,本文算法在定位精度上提高了15%,在時間效率提高了20%,在定位精度和時間效率上都有大幅提升,適合節點在大規模密集環境下實現快速精確定位。本文算法主要適用于大規模密集部署的網絡,下一步將考慮如何實現在稀疏網絡中的高精度快速定位,已進一步減小其在實際應用中的成本。