汪子為,房亮
(延安大學(xué) 物理與電子信息學(xué)院,陜西延安 716000)
無(wú)線傳感器網(wǎng)絡(luò)被應(yīng)用于許多領(lǐng)域,例如環(huán)境監(jiān)控,醫(yī)療機(jī)構(gòu)中的患者跟蹤,軍事行動(dòng)和活動(dòng)區(qū)域識(shí)別[1]。在上述應(yīng)用場(chǎng)景中,無(wú)線傳感器網(wǎng)絡(luò)的大多數(shù)應(yīng)用都需要通過(guò)傳感器定位獲取目標(biāo)的位置信息,才能更好地了解該目標(biāo)地區(qū)的情況,以便及時(shí)采取有效的措施和控制[2]。但是,當(dāng)無(wú)線傳感器被部署在偏遠(yuǎn)和惡劣的環(huán)境中時(shí),其性能則會(huì)受到資源和傳輸?shù)南拗芠3],因此提高節(jié)點(diǎn)定位精度和網(wǎng)絡(luò)效率成為無(wú)線傳感器網(wǎng)絡(luò)中的主要挑戰(zhàn)。
無(wú)線傳感器網(wǎng)絡(luò)的定位技術(shù)一般可分為兩種:基于測(cè)距的定位技術(shù)和無(wú)需測(cè)距的定位技術(shù)[4]。其中無(wú)需測(cè)距的技術(shù)只能進(jìn)行粗略定位,無(wú)法滿足高精度需求,而基于測(cè)距的技術(shù)雖然定位精度相對(duì)較高,但對(duì)軟硬件同時(shí)也有更高的要求[5]?;诮邮招盘?hào)強(qiáng)度(Received Signal Strength Indication,RSSI)的測(cè)距技術(shù)是無(wú)線傳感器網(wǎng)絡(luò)定位中常用的測(cè)距方法之一,網(wǎng)絡(luò)中每個(gè)節(jié)點(diǎn)之間的距離可由RSSI估算[6]。但是由于反射、多徑傳播等因素的影響,RSSI值可能會(huì)不準(zhǔn)確,導(dǎo)致定位出現(xiàn)較大的誤差。為了減小RSSI測(cè)距誤差,研究人員進(jìn)行了許多角度的嘗試。Shen等[7]通過(guò)使用加權(quán)質(zhì)心算法將RSSI測(cè)量值加權(quán)使定位更加精準(zhǔn)。Hussein等[8]則將梯度下降算法應(yīng)用于表示RSSI測(cè)距精度的目標(biāo)函數(shù)中,達(dá)到減小誤差的效果。Hongbo等[9]設(shè)計(jì)深度神經(jīng)網(wǎng)絡(luò)作為分類(lèi)器,將定位問(wèn)題建模為分類(lèi)問(wèn)題,在利用RSSI測(cè)距時(shí)輔以信道狀態(tài)信息和基于定位的深度學(xué)習(xí)來(lái)提高定位精度,有效減小了定位誤差。
與使用單個(gè)傳感器相比,顯而易見(jiàn)地,使用多個(gè)傳感器作為參考節(jié)點(diǎn)匯集其數(shù)據(jù)可以提高信息的準(zhǔn)確性。但這些傳感器并非隨意組合,參考節(jié)點(diǎn)的選擇及數(shù)據(jù)的處理至關(guān)重要,因此許多研究者將聚類(lèi)方法應(yīng)用到節(jié)點(diǎn)選擇中以提高定位精度。Nomura等[10]使用基于層次聚類(lèi)的方法來(lái)選擇屬于不同簇的參考節(jié)點(diǎn),通過(guò)考慮參考節(jié)點(diǎn)的位置偏差來(lái)縮小用于位置估計(jì)的信標(biāo)節(jié)點(diǎn),從而選出合適位置的信標(biāo)節(jié)點(diǎn)來(lái)縮小定位誤差。Guo等[11]提出一種自聚類(lèi)的測(cè)量組合方法,使用通過(guò)雙曲線定位算法獲得的源位置估計(jì)用作聚類(lèi)模式,調(diào)整單位RSSI值,以使估計(jì)的未知節(jié)點(diǎn)位置與實(shí)際位置之間的差異最小。Shi等[12]設(shè)計(jì)了一種新的基于k均值聚類(lèi)的跟蹤算法,將RSSI分為減少、正常和增加三類(lèi),借此選取更符合實(shí)時(shí)情況的參考節(jié)點(diǎn),提高了定位精確性和穩(wěn)定性。
上述工作在提高無(wú)線傳感器網(wǎng)絡(luò)中定位精度方面有一定的應(yīng)用價(jià)值,然而,鮮有算法考慮定位目標(biāo)分布廣且彼此相距較遠(yuǎn)的場(chǎng)景。由于定位范圍廣、信標(biāo)節(jié)點(diǎn)分布隨機(jī)且稀疏,若直接令信標(biāo)節(jié)點(diǎn)對(duì)未知節(jié)點(diǎn)進(jìn)行定位,不僅開(kāi)銷(xiāo)龐大,RSSI測(cè)距信息還會(huì)受周?chē)h(huán)境因素影響導(dǎo)致定位精度下降。為了彌補(bǔ)這一不足,本文提出基于模糊聚類(lèi)的加權(quán)協(xié)作定位算法WCFC(Weighted collaborative positioning algorithm based on fuzzy clustering),針對(duì)信標(biāo)節(jié)點(diǎn)分布稀疏的戶外環(huán)境,將信標(biāo)節(jié)點(diǎn)合理地劃分成若干個(gè)簇,在各個(gè)簇中將被定位過(guò)的未知節(jié)點(diǎn)轉(zhuǎn)化為信標(biāo)節(jié)點(diǎn)進(jìn)行協(xié)作定位,同時(shí)對(duì)RSSI值進(jìn)行加權(quán)處理,盡可能地降低環(huán)境對(duì)定位精度的影響。
WCFC算法具體應(yīng)用于以下場(chǎng)景:在M*N的區(qū)域中,隨機(jī)分布p個(gè)信標(biāo)節(jié)點(diǎn)和q個(gè)未知節(jié)點(diǎn),通信范圍設(shè)為R。其中,信標(biāo)節(jié)點(diǎn)配備GPS,可以獲得自身和其他信標(biāo)節(jié)點(diǎn)的位置信息。還可以接收到未知節(jié)點(diǎn)的RSSI信息,利用RSSI信息獲取未知節(jié)點(diǎn)相對(duì)于信標(biāo)節(jié)點(diǎn)的位置[13]。針對(duì)實(shí)際的應(yīng)用環(huán)境,一般選取兩種傳播路徑損耗模型:自由空間傳播模型和對(duì)數(shù)正態(tài)分布模型[14]。自由空間傳播模型一般用于發(fā)射端與接收端之間完全無(wú)阻擋的情況下,典型的應(yīng)用是衛(wèi)星通信系統(tǒng)和微波視距無(wú)線鏈路。對(duì)數(shù)正態(tài)分布模型一般用于節(jié)點(diǎn)發(fā)射的無(wú)線電信號(hào)在傳播過(guò)程中受到多徑、障礙物等環(huán)境影響的情況下,所以本文選用對(duì)數(shù)正態(tài)分布模型作為傳播路徑損耗模型來(lái)計(jì)算未知節(jié)點(diǎn)與錨節(jié)點(diǎn)之間的距離[15]:
其中,d是發(fā)送節(jié)點(diǎn)與接收節(jié)點(diǎn)之間的距離,RSSI是接收信號(hào)強(qiáng)度,P(d0)是在近地參考距離為d0(通常d0=1 m)時(shí)的接收信號(hào)強(qiáng)度,α是路徑損耗因子,其值取決于特定的傳播環(huán)境,λ是均值為0的高斯隨機(jī)變量。信標(biāo)節(jié)點(diǎn)與未知節(jié)點(diǎn)之間的距離d可以由式(1)計(jì)算。未知節(jié)點(diǎn)可以發(fā)送信號(hào)也可以接收到信標(biāo)節(jié)點(diǎn)的信息。初始定位時(shí),本文采用傳統(tǒng)的三邊定位算法[16],見(jiàn)圖1。
圖1 三邊定位模型圖
為了降低系統(tǒng)傳輸信號(hào)的開(kāi)銷(xiāo)和損耗,減小RSSI測(cè)距誤差對(duì)定位精度的影響,加快定位收斂速度,WCFC算法將分布稀疏的信標(biāo)節(jié)點(diǎn)按照一定的規(guī)則分簇,在簇內(nèi)進(jìn)行協(xié)作定位和數(shù)據(jù)處理,用三邊定位算法將被定位的未知節(jié)點(diǎn)轉(zhuǎn)化為信標(biāo)節(jié)點(diǎn),再對(duì)RSSI信息進(jìn)行加權(quán)處理。該算法分為兩個(gè)階段:分簇和定位。
分簇階段:在分簇算法的選擇上,由于傳感器距離遠(yuǎn),可用的參數(shù)較少,通常用于定位的聚類(lèi)算法為k-均值聚類(lèi)算法和模糊聚類(lèi)算法[17]。前者僅利用每個(gè)節(jié)點(diǎn)之間的距離進(jìn)行聚類(lèi),但在聚類(lèi)時(shí),某一簇可能過(guò)于孤立,導(dǎo)致信標(biāo)節(jié)點(diǎn)分布不均,定位誤差過(guò)大。為了提高定位精度和資源分配的合理性,本文采用模糊聚類(lèi)算法對(duì)信標(biāo)節(jié)點(diǎn)進(jìn)行聚類(lèi)。WCFC算法的分簇可分為四個(gè)步驟:
步驟一:用模糊聚類(lèi)算法對(duì)所有信標(biāo)節(jié)點(diǎn)進(jìn)行聚類(lèi)。模糊聚類(lèi)算法具體如下:
1)隨機(jī)初始化集群成員值μij,目標(biāo)函數(shù)
4)計(jì)算目標(biāo)函數(shù) Jm,重復(fù) 1)~4),直到 Jm的值小于指定的最小閾值或進(jìn)行到預(yù)先設(shè)定的迭代次數(shù)。得到每個(gè)聚類(lèi)的聚類(lèi)中心cj和每簇信標(biāo)節(jié)classi點(diǎn)。
步驟二:定義信標(biāo)節(jié)點(diǎn)分簇規(guī)則。聚類(lèi)過(guò)程中若該簇中只有兩個(gè)信標(biāo)節(jié)點(diǎn),則該信標(biāo)節(jié)點(diǎn)搜尋自己相鄰的里面有三個(gè)以上信標(biāo)節(jié)點(diǎn)的簇,然后將符合要求的相鄰簇中距離該簇最近的信標(biāo)節(jié)點(diǎn)納入該簇范圍。若只有兩個(gè)信標(biāo)節(jié)點(diǎn)的簇找不到符合要求的信標(biāo)節(jié)點(diǎn),或出現(xiàn)了只有一個(gè)信標(biāo)節(jié)點(diǎn)的簇,則重復(fù)步驟一直到所有初始簇符合要求。
步驟三:將未知節(jié)點(diǎn)劃分到對(duì)應(yīng)的簇中。計(jì)算所有信標(biāo)節(jié)點(diǎn)對(duì)于簇心的距離,再利用信標(biāo)節(jié)點(diǎn)接收到的未知節(jié)點(diǎn)的RSSI信息估算通信范圍內(nèi)所有未知節(jié)點(diǎn)相對(duì)于簇心的距離,將距離簇心最遠(yuǎn)的未知節(jié)點(diǎn)的距離當(dāng)作簇半徑,并為該簇每一個(gè)未知節(jié)點(diǎn)打上唯一標(biāo)記IDclassi。
步驟四:剔除簇中重復(fù)的未知節(jié)點(diǎn)。若該簇中的未知節(jié)點(diǎn)被標(biāo)記了兩個(gè)及兩個(gè)以上的IDclassi,則該未知節(jié)點(diǎn)納入距離其最近的一個(gè)簇。
定位階段:在簇內(nèi)進(jìn)行基于RSSI優(yōu)化的協(xié)作定位。利用三邊定位算法對(duì)未知節(jié)點(diǎn)進(jìn)行定位,未知節(jié)點(diǎn)只有能夠接收到3個(gè)及以上信標(biāo)節(jié)點(diǎn)的信息才有被定位的可能[18]。但是當(dāng)未知節(jié)點(diǎn)距離初始信標(biāo)節(jié)點(diǎn)非常遠(yuǎn)時(shí),RSSI的測(cè)距信息因?yàn)榄h(huán)境影響誤差會(huì)很大?;诖?,本文提出一種協(xié)作定位算法,信標(biāo)節(jié)點(diǎn)對(duì)遠(yuǎn)處未知節(jié)點(diǎn)的定位可以通過(guò)先定位近處的未知節(jié)點(diǎn)傳遞實(shí)現(xiàn),這樣系統(tǒng)不僅僅能夠通過(guò)信標(biāo)節(jié)點(diǎn)實(shí)現(xiàn)對(duì)未知節(jié)點(diǎn)的定位,還可以利用未知節(jié)點(diǎn)間的信息傳輸來(lái)完成所有節(jié)點(diǎn)的定位。系統(tǒng)內(nèi)所有的節(jié)點(diǎn)功能相同,地位對(duì)等,每一個(gè)節(jié)點(diǎn)都可以參與未知節(jié)點(diǎn)的定位,從而能夠?qū)崿F(xiàn)對(duì)節(jié)點(diǎn)資源的充分利用,提高系統(tǒng)魯棒性。
每次對(duì)未知節(jié)點(diǎn)進(jìn)行定位時(shí),選取距離該未知節(jié)點(diǎn)最近的三個(gè)信標(biāo)節(jié)點(diǎn),提高定位的效率。但是該信標(biāo)節(jié)點(diǎn)可能是在協(xié)作定位時(shí)由未知節(jié)點(diǎn)轉(zhuǎn)化過(guò)來(lái)的,本身位置信息存在誤差,且可能不是信號(hào)強(qiáng)度最好的三個(gè)信標(biāo)節(jié)點(diǎn)。為了彌補(bǔ)信號(hào)強(qiáng)度由于環(huán)境因素而對(duì)算法結(jié)果產(chǎn)生誤差的缺陷,提高信號(hào)強(qiáng)度的完整性與準(zhǔn)確率,算法引入RSSI優(yōu)化機(jī)制,通過(guò)為RSSI值求得一個(gè)加權(quán)系數(shù),用加權(quán)后的RSSI值代替原始RSSI值。具體步驟如下:
步驟一:設(shè)要被定位的未知節(jié)點(diǎn)為Ui(x0,y0),該點(diǎn)選取的三個(gè)信標(biāo)節(jié)點(diǎn)坐標(biāo)為B1(x1,y1)、B2(x2,y2)、B3(x3,y3),未知節(jié)點(diǎn)接收到的信號(hào)強(qiáng)度為RSSIi,求得平均值:
步驟二:對(duì)于來(lái)自三個(gè)信標(biāo)節(jié)點(diǎn)的信號(hào)強(qiáng)度,如果RSSImean與RSSIi相差較大,給予一個(gè)相對(duì)小的權(quán)值,反之則給予一個(gè)相對(duì)大的權(quán)值。得到權(quán)重因子ki
步驟三:得到三個(gè)信標(biāo)節(jié)點(diǎn)修正后的RSSIi′值:
步驟四:利用步驟三得到修正后的RSSIi′,對(duì)其余的未知節(jié)點(diǎn)進(jìn)行定位。重復(fù)步驟一到步驟三,直到所有未知節(jié)點(diǎn)都被定位。
對(duì)所提出的WCFC算法進(jìn)行仿真實(shí)驗(yàn),并將所得的實(shí)驗(yàn)結(jié)果分別同Dv-hop[16]、三邊定位及協(xié)作定位算法[19]進(jìn)行對(duì)比。定位誤差是由定位處的節(jié)點(diǎn)坐標(biāo)和真實(shí)節(jié)點(diǎn)坐標(biāo)之間的歐式距離[20]表示:
其中,(xM,yM)為定位處的節(jié)點(diǎn)坐標(biāo),(xT,yT)為真實(shí)節(jié)點(diǎn)坐標(biāo),d為兩者之間的歐式距離。
在一定區(qū)域內(nèi)隨機(jī)稀疏部署信標(biāo)節(jié)點(diǎn)和未知節(jié)點(diǎn)來(lái)模擬定位目標(biāo)分布廣且彼此相距較遠(yuǎn)的應(yīng)用場(chǎng)景,然后使用WCFC算法對(duì)未知節(jié)點(diǎn)進(jìn)行定位。圖2展示了500×500 m2范圍內(nèi),信標(biāo)節(jié)點(diǎn)均勻分布30個(gè),未知節(jié)點(diǎn)均勻分布200個(gè),聚類(lèi)數(shù)為5的分簇情況。
圖2 信標(biāo)節(jié)點(diǎn)聚類(lèi)結(jié)果
圖2中不同形狀的較大節(jié)點(diǎn)代表不同簇中的信標(biāo)節(jié)點(diǎn),較小的黑色圓點(diǎn)代表未知節(jié)點(diǎn)。由圖2可知分簇結(jié)果滿足了定位要求,每個(gè)簇中至少包含三個(gè)信標(biāo)節(jié)點(diǎn),且各簇劃分合理分布均勻,有利于下一階段定位的進(jìn)行。
在邊長(zhǎng)為500 m的區(qū)域范圍內(nèi),設(shè)置初始信標(biāo)節(jié)點(diǎn)個(gè)數(shù)為12個(gè),未知節(jié)點(diǎn)200個(gè),初始信標(biāo)節(jié)點(diǎn)和未知節(jié)點(diǎn)均遵循均勻分布,將信標(biāo)節(jié)點(diǎn)分為3簇,其定位情況如圖3所示。
圖3 協(xié)作定位算法與本文算法的對(duì)比
圖3中橫軸是信標(biāo)節(jié)點(diǎn)數(shù)目,縱軸是定位誤差,單位是m。從圖3中可以看出,本文算法和只應(yīng)用協(xié)作定位算法都呈現(xiàn)出信標(biāo)節(jié)點(diǎn)數(shù)量越多,定位誤差越小的結(jié)果。但是由于WCFC算法對(duì)RSSI進(jìn)行了加權(quán)處理,因此相比于只應(yīng)用協(xié)作定位算法,本文算法在不同信標(biāo)節(jié)點(diǎn)數(shù)量上定位精度提高了10%~15%。
在邊長(zhǎng)為500 m的區(qū)域內(nèi),均勻分布200個(gè)未知節(jié)點(diǎn),依次均勻分布15個(gè)、20個(gè)、25個(gè)信標(biāo)節(jié)點(diǎn),分別用WCFC、Dv-hop、三邊定位及協(xié)作定位算法將未知節(jié)點(diǎn)分成4簇,其定位情況如圖4所示。
圖4 協(xié)作定位算法、Dv-hop算法和三邊定位算法與本文算法的對(duì)比
圖4中橫軸是信標(biāo)節(jié)點(diǎn)數(shù)目,縱軸是定位誤差,單位是m。由圖4中可以看出,將本文算法的定位誤差與在等同條件下的三邊定位算法,Dv-hop算法和協(xié)作算法相比較的情況下,當(dāng)信標(biāo)節(jié)點(diǎn)數(shù)目增加時(shí),四種算法的定位誤差都呈現(xiàn)減小的趨勢(shì),說(shuō)明增多參與定位的信標(biāo)節(jié)點(diǎn)可以減小定位誤差。但是當(dāng)信標(biāo)節(jié)點(diǎn)數(shù)量相同時(shí),本文算法誤差最小,說(shuō)明WCFC算法在對(duì)信標(biāo)節(jié)點(diǎn)進(jìn)行最優(yōu)化分簇之后,增加了定位的有效信標(biāo)節(jié)點(diǎn)數(shù)目,定位精度得到了有效提高。
本文通過(guò)將聚類(lèi)的思想與傳統(tǒng)定位算法相結(jié)合,給出一種基于模糊聚類(lèi)的加權(quán)協(xié)作定位算法,主要解決定位時(shí)信標(biāo)節(jié)點(diǎn)分布稀疏的野外環(huán)境對(duì)RSSI測(cè)距的影響及定位收斂速度慢的問(wèn)題。通過(guò)模糊聚類(lèi),先對(duì)信標(biāo)節(jié)點(diǎn)進(jìn)行劃分,再在各個(gè)簇內(nèi)進(jìn)行基于RSSI加權(quán)處理的協(xié)作定位,不僅加快了定位的收斂速度,節(jié)省了系統(tǒng)能耗,還盡可能降低了由于距離、噪聲等因素對(duì)RSSI測(cè)距信息的影響。由仿真結(jié)果可以看出,在信標(biāo)節(jié)點(diǎn)足夠多時(shí),本文算法同Dv-hop和三邊定位算法相比定位誤差得到了很大程度地減小,但與沒(méi)有引入RSSI權(quán)值信息的協(xié)作算法的定位精度相差不大,所以只適用于信標(biāo)節(jié)點(diǎn)稀疏的情況。未來(lái)工作可考慮將本文算法應(yīng)用在動(dòng)態(tài)場(chǎng)景中進(jìn)行測(cè)試,在未知節(jié)點(diǎn)運(yùn)動(dòng)狀態(tài)下探索算法進(jìn)一步優(yōu)化的方法。