劉仲馳
(江西制造職業(yè)技術(shù)學(xué)院信息工程系,江西 南昌 330095)
移動(dòng)無線物聯(lián)網(wǎng)在生物攻擊監(jiān)測(cè)、洪水監(jiān)測(cè)以及人體健康監(jiān)測(cè)等多個(gè)領(lǐng)域得到廣泛的應(yīng)用[1-2]。作為一種全新的技術(shù),其感知層中傳感節(jié)點(diǎn)的定位面臨著全新的挑戰(zhàn)[3]。
文獻(xiàn)[4]將需要定位節(jié)點(diǎn)的數(shù)據(jù)報(bào)文拆分為三部分,分別是坐標(biāo)、跳數(shù)、ID,通過三角定位方法實(shí)現(xiàn)了移動(dòng)物聯(lián)網(wǎng)節(jié)點(diǎn)坐標(biāo)感知,該算法降低了節(jié)點(diǎn)坐標(biāo)乖離程度,但是該方法受跳數(shù)影響較大,導(dǎo)致傳感節(jié)點(diǎn)定位精度有所下降。文獻(xiàn)[5]介紹了一個(gè)基于物聯(lián)網(wǎng)的無線傳感器網(wǎng)絡(luò)的開發(fā)和實(shí)驗(yàn),該網(wǎng)絡(luò)用于墨西哥科里馬·維拉·德爾瓦雷斯市區(qū)的水文氣象數(shù)據(jù)收集和洪水監(jiān)測(cè)。該網(wǎng)絡(luò)旨在收集河流水位、土壤濕度和天氣參數(shù),這些參數(shù)通過3G和Wi-Fi網(wǎng)絡(luò)使用物聯(lián)網(wǎng)消息隊(duì)列遙測(cè)傳輸協(xié)議實(shí)時(shí)傳輸?shù)椒?wù)器和web應(yīng)用程序。該網(wǎng)絡(luò)在2019年熱帶氣旋季節(jié)科里馬地區(qū)發(fā)生的三次不同的熱帶風(fēng)暴事件中進(jìn)行了測(cè)試。結(jié)果表明,該方法可以準(zhǔn)確收集極端事件期間的實(shí)時(shí)水文氣象信息。但是該方法未針對(duì)網(wǎng)絡(luò)中節(jié)點(diǎn)定位進(jìn)行深入分析,因此其節(jié)點(diǎn)定位精度有待進(jìn)一步考究。文獻(xiàn)[6]提出了基于改進(jìn)貓群算法的路由優(yōu)化策略,綜合考慮路徑剩余能量方差等多種因素,提高了數(shù)據(jù)傳輸?shù)膶?shí)時(shí)性。但是該方法中未知傳感節(jié)點(diǎn)到錨節(jié)點(diǎn)之間估計(jì)距離誤差較大。
針對(duì)上述方法存在的缺點(diǎn),提出了一種非測(cè)距的定位算法(DV-Hop算法)與位置修正方法相結(jié)合的感知層傳感節(jié)點(diǎn)定位算法。通過最小跳數(shù)值的求解以及該值所在節(jié)點(diǎn)的位置轉(zhuǎn)化修正,實(shí)現(xiàn)高精度的傳感節(jié)點(diǎn)定位。
假設(shè)移動(dòng)無線物聯(lián)網(wǎng)感知層位置未知的節(jié)點(diǎn)(即移動(dòng)無線物聯(lián)網(wǎng)感知層待定位節(jié)點(diǎn))和位置已知的傳感層節(jié)點(diǎn)(即移動(dòng)無線物聯(lián)網(wǎng)感知層錨節(jié)點(diǎn))組成。其中移動(dòng)無線物聯(lián)網(wǎng)感知層待定位節(jié)點(diǎn)的數(shù)量為n,下標(biāo)組成的集合表示為N,移動(dòng)無線物聯(lián)網(wǎng)感知層錨節(jié)點(diǎn)的數(shù)量為m,下標(biāo)組成的集合為M。設(shè)定移動(dòng)無線物聯(lián)網(wǎng)感知層二維平面內(nèi),節(jié)點(diǎn)i的參數(shù)表示為:
移動(dòng)無線物聯(lián)網(wǎng)系統(tǒng)的感知層待定位傳感節(jié)點(diǎn)位置參數(shù)為θ=[θN,θM]λ。式中,θN和θM分別表示移動(dòng)無線物聯(lián)網(wǎng)感知層待定位傳感節(jié)點(diǎn)與誤差錨節(jié)點(diǎn)的位置參數(shù),λ表示限定性閾值。
設(shè)移動(dòng)無線物聯(lián)網(wǎng)感知層節(jié)點(diǎn)在初始時(shí)刻即可定位成功的先驗(yàn)概率為:
式中:P0(ˉθk|,θk)表示移動(dòng)無線物聯(lián)網(wǎng)感知層節(jié)點(diǎn)k的先驗(yàn)概率。
通常情況下,傳統(tǒng)算法對(duì)移動(dòng)無線物聯(lián)網(wǎng)感知層傳感節(jié)點(diǎn)進(jìn)行定位研究中,通常會(huì)先假設(shè)移動(dòng)無線物聯(lián)網(wǎng)感知層傳感節(jié)點(diǎn)的位置參數(shù)是準(zhǔn)確的,因此不考慮定位先驗(yàn)信息對(duì)移動(dòng)無線物聯(lián)網(wǎng)系統(tǒng)的影響,此時(shí),利用限定性閾值對(duì)其進(jìn)行約束,并將待定位的傳感節(jié)點(diǎn)的位置估計(jì)方差記為:
式中:表示移動(dòng)無線物聯(lián)網(wǎng)感知層待定位傳感節(jié)點(diǎn)的位置估計(jì)。
式(3)的下界表示為J-1(θN),表達(dá)式如下:
式中:?θN(·)表示對(duì)θN的一階偏導(dǎo)算子,E表示節(jié)點(diǎn)i一跳之內(nèi)的鄰居節(jié)點(diǎn)距離,ˉd表示移動(dòng)無線物聯(lián)網(wǎng)系統(tǒng)內(nèi)獲得的距離觀測(cè)。
以圖1所示的移動(dòng)無線物聯(lián)網(wǎng)拓?fù)鋱D為基礎(chǔ),完成移動(dòng)無線物聯(lián)網(wǎng)感知層錨節(jié)點(diǎn)篩選。
圖1中,M1~M4表示靠近移動(dòng)無線物聯(lián)網(wǎng)感知層未知傳感節(jié)點(diǎn)U1的4個(gè)錨節(jié)點(diǎn)。在移動(dòng)無線物聯(lián)網(wǎng)感知層的二維平面上,未知傳感節(jié)點(diǎn)U1至少需要選擇3個(gè)錨節(jié)點(diǎn),以確定自己的位置信息[7]。
圖1 候選錨節(jié)點(diǎn)的選取
將錨節(jié)點(diǎn)M1~M4組成的三角形內(nèi)角α約束條件設(shè)定為:
式中:M1M2表示(M2M3)和(M1M3)2個(gè)錨節(jié)點(diǎn)之間的距離。
設(shè)移動(dòng)無線物聯(lián)網(wǎng)感知層中3個(gè)錨節(jié)點(diǎn)的共線度為:
式中:αi表示由上述3個(gè)錨節(jié)點(diǎn)構(gòu)成的三角形內(nèi)角。
當(dāng)3個(gè)候選錨節(jié)點(diǎn)的共線度DC=π時(shí),說明移動(dòng)無線物聯(lián)網(wǎng)感知層中的3個(gè)節(jié)點(diǎn)共線。當(dāng)3個(gè)候選錨節(jié)點(diǎn)的共線度DC=π/3π,定位誤差最小,為了判斷其是否共線,需要預(yù)先設(shè)定一個(gè)閾值C(0<C<0.5)。當(dāng)未知傳感節(jié)點(diǎn)接收到N′個(gè)錨節(jié)點(diǎn)的路由信息后,首先計(jì)算與未知傳感節(jié)點(diǎn)距離最近的3個(gè)錨節(jié)點(diǎn)的共線度,當(dāng)其共線度滿足式(7)條件時(shí),求解其位置信息;否則,DV-Hop算法自動(dòng)選擇距離U1次近的另一個(gè)錨節(jié)點(diǎn)M4代替M3作為候選錨節(jié)點(diǎn),直到共線度滿足式(7)的條件[8]。
在計(jì)算移動(dòng)無線物聯(lián)網(wǎng)感知層未知傳感節(jié)點(diǎn)的平均跳距前,首先分析錨節(jié)點(diǎn)的可信度。移動(dòng)無線物聯(lián)網(wǎng)感知層未知傳感節(jié)點(diǎn)U1與錨節(jié)點(diǎn)M1~M4相連通,U1與錨節(jié)點(diǎn)M3和M4的連接近似于直線,但與錨節(jié)點(diǎn)M2的連接較為曲折,如圖2所示。
以圖2為基礎(chǔ),按照式(8)計(jì)算平均跳距。
圖2 平均跳距的可信度計(jì)算
式中:hj表示移動(dòng)無線物聯(lián)網(wǎng)感知層中錨節(jié)點(diǎn)i和節(jié)點(diǎn)j之間的跳數(shù)。
由于未知傳感節(jié)點(diǎn)U1與錨節(jié)點(diǎn)M2的連接較為曲折,導(dǎo)致錨節(jié)點(diǎn)M2參與計(jì)算導(dǎo)致平均跳距比實(shí)際偏小[9],因此提出一種移動(dòng)無線物聯(lián)網(wǎng)感知層錨節(jié)點(diǎn)信任度計(jì)算方法。
已知移動(dòng)無線物聯(lián)網(wǎng)感知層共有m個(gè)錨節(jié)點(diǎn),設(shè)錨節(jié)點(diǎn)i與其他m-1個(gè)錨節(jié)點(diǎn)的單條路徑平均跳距為HSij(i≠j),HSij(i≠j)和錨節(jié)點(diǎn)i之間歸一化處理后的總平均跳距偏差程度表示為信任度[10],具體計(jì)算方式如下:
從式(9)可以看出,當(dāng)HSij與HSi的偏差較大時(shí),可信度wij的值較小,說明移動(dòng)無線物聯(lián)網(wǎng)感知層錨節(jié)點(diǎn)在i和j的單條路徑上比較曲折,導(dǎo)致平均跳距計(jì)算誤差較大。
采用三邊測(cè)量估計(jì)移動(dòng)無線物聯(lián)網(wǎng)感知層未知傳感節(jié)點(diǎn)位置時(shí),默認(rèn)移動(dòng)無線物聯(lián)網(wǎng)感知層參與計(jì)算的3個(gè)錨節(jié)點(diǎn)的可信度相同。當(dāng)移動(dòng)無線物聯(lián)網(wǎng)感知層未知傳感節(jié)點(diǎn)接收到多個(gè)錨節(jié)點(diǎn)的平均跳距信息后,首先選擇離未知傳感節(jié)點(diǎn)最近錨節(jié)點(diǎn)的平均跳距為參考,然后根據(jù)其他錨節(jié)點(diǎn)的可信度進(jìn)行加權(quán)平均[11]。
圖2中未知傳感節(jié)點(diǎn)U1接收到4個(gè)錨節(jié)點(diǎn)的平均跳距分別為HS1~HS4,M1離未知傳感節(jié)點(diǎn)U1最近,M2~M4相對(duì)M1的可信度分別為w21,w31,w41,則移動(dòng)無線物聯(lián)網(wǎng)感知層未知傳感節(jié)點(diǎn)U1的平均跳距計(jì)算公式如下:
在獲取HSU1之后,將其與移動(dòng)無線物聯(lián)網(wǎng)感知層未知傳感節(jié)點(diǎn)U1與各個(gè)錨節(jié)點(diǎn)之間的最小跳數(shù)相乘,得到未知傳感節(jié)點(diǎn)U1和候選錨節(jié)點(diǎn)之間的距離,然后運(yùn)用式(8)計(jì)算未知傳感節(jié)點(diǎn)U1的位置[12]。
將通過DV-Hop算法所得定位結(jié)果精度足夠高的傳感節(jié)點(diǎn)轉(zhuǎn)化為錨節(jié)點(diǎn),以此為依據(jù),完成其他未知傳感節(jié)點(diǎn)的定位[13]。
通過三邊測(cè)量法獲得移動(dòng)無線物聯(lián)網(wǎng)感知層未知傳感節(jié)點(diǎn)U1的由錨節(jié)點(diǎn)M1、M2、M4所確定的位置信息,其定位的誤差分析如下:
將未知傳感節(jié)點(diǎn)U1移動(dòng)后與任意一個(gè)錨節(jié)點(diǎn)M1進(jìn)行身份互換,然后根據(jù)另外兩個(gè)已知的錨節(jié)點(diǎn)M2和M4估算M1的位置,即移動(dòng)后節(jié)點(diǎn)的位置。
假設(shè)移動(dòng)無線物聯(lián)網(wǎng)感知層錨節(jié)點(diǎn)M1的實(shí)際坐標(biāo)位置表示為(x,y),移動(dòng)后的估算坐標(biāo)位置表示為(x′,y′),移動(dòng)無線物聯(lián)網(wǎng)感知層傳感節(jié)點(diǎn)之間的通信半徑表示為R,則歸一化定位誤差的計(jì)算表達(dá)式如下:
移動(dòng)無線物聯(lián)網(wǎng)感知層未知傳感節(jié)點(diǎn)轉(zhuǎn)化為錨節(jié)點(diǎn)的條件是:當(dāng)節(jié)點(diǎn)定位的歸一化誤差滿足小于e≤Ψ誤差閾值時(shí),即才可以將其轉(zhuǎn)化為錨節(jié)點(diǎn),從而參與無線物聯(lián)網(wǎng)感知層其他未知傳感節(jié)點(diǎn)的定位計(jì)算。
根據(jù)上述定位結(jié)果,對(duì)未知傳感節(jié)點(diǎn)定位結(jié)果進(jìn)行多次修正后與初始估計(jì)距離進(jìn)行對(duì)比,如圖3所示。
圖3 未知傳感節(jié)點(diǎn)位置修正示意圖
圖3中,S表示未知傳感節(jié)點(diǎn)的初步定位位置;M1表示參與未知傳感節(jié)點(diǎn)初步定位的m個(gè)錨節(jié)點(diǎn)之一;dM1S表示已定位未知傳感節(jié)點(diǎn)初始位置S到錨節(jié)點(diǎn)M1的距離。
由于M1在S定位時(shí)只是起到了一部分作用,因此將位置S修正到如圖3所示的S1的位置。
假設(shè)S、S1、M1的坐標(biāo)分別表示為(a,b),(a1,b1)和(aM1,bM1),則:
移動(dòng)無線物聯(lián)網(wǎng)感知層中的m個(gè)錨節(jié)點(diǎn)均參與了未知傳感節(jié)點(diǎn)的修正后,此時(shí)定位的未知傳感節(jié)點(diǎn)位置作為U1的最終定位結(jié)果。為了保證定位精度,可以多次循環(huán)修正未知傳感節(jié)點(diǎn)S,循環(huán)修正到一定次數(shù)后,定位誤差將趨于穩(wěn)定。
為了檢驗(yàn)本文所提算法性能的優(yōu)劣。分別對(duì)文獻(xiàn)[4]算法、文獻(xiàn)[5]算法和本文算法進(jìn)行仿真對(duì)比。主要從定位誤差方面進(jìn)行對(duì)比。
在仿真前,首先設(shè)置移動(dòng)無線物聯(lián)網(wǎng)網(wǎng)絡(luò)結(jié)構(gòu)相關(guān)參數(shù)。此次移動(dòng)無線物聯(lián)網(wǎng)中共有300個(gè)節(jié)點(diǎn),其通信半徑為100 m,且隨機(jī)分布在200 m×200 m的正方形區(qū)域中,網(wǎng)絡(luò)中所有節(jié)點(diǎn)均采用泛洪的方式在傳播信息。圖4為部分移動(dòng)無線物聯(lián)網(wǎng)傳感節(jié)點(diǎn)的隨機(jī)分布圖。
圖4 移動(dòng)無線物聯(lián)網(wǎng)中節(jié)點(diǎn)隨機(jī)分布圖
以圖4為基礎(chǔ),利用未知傳感節(jié)點(diǎn)實(shí)際估測(cè)位置與其真實(shí)值之間的距離表示每個(gè)未知傳感節(jié)點(diǎn)的定位誤差,其計(jì)算公式可表示為:
將移動(dòng)無線物聯(lián)網(wǎng)感知層未知傳感節(jié)點(diǎn)和錨節(jié)點(diǎn)之間的跳數(shù)設(shè)置為l=0,以不同初始錨節(jié)點(diǎn)數(shù)量作為輸入,錨節(jié)點(diǎn)數(shù)量取10進(jìn)行測(cè)試。在測(cè)試中對(duì)文獻(xiàn)[4]算法、文獻(xiàn)[5]算法和本文算法反復(fù)測(cè)試50次,取平均值,并與未知傳感節(jié)點(diǎn)的實(shí)際定位進(jìn)行誤差對(duì)比,測(cè)試結(jié)果如圖5所示。
圖5 未知傳感節(jié)點(diǎn)定位誤差
觀察圖5可以看出,本文算法、文獻(xiàn)[4]算法和文獻(xiàn)[5]算法的未知傳感節(jié)點(diǎn)定位誤差error分別為2.5 cm、8.3 cm、6.9 cm,由此可知,采用文獻(xiàn)[4]算法和文獻(xiàn)[5]算法時(shí)未知傳感節(jié)點(diǎn)的定位時(shí),定位誤差高于本文算法。
為了進(jìn)一步檢驗(yàn)本文所提算法的優(yōu)越性能,將移動(dòng)無線物聯(lián)網(wǎng)感知層錨節(jié)點(diǎn)密度分別設(shè)置為15%、20%。測(cè)試三種算法的未知傳感節(jié)點(diǎn)平均定位誤差,結(jié)果如圖6和圖7所示。
圖6 錨節(jié)點(diǎn)密度為15%時(shí)未知傳感節(jié)點(diǎn)平均定位誤差
圖7 錨節(jié)點(diǎn)密度為20%時(shí)未知傳感節(jié)點(diǎn)平均定位誤差
通過計(jì)算可知,當(dāng)移動(dòng)無線物聯(lián)網(wǎng)中錨節(jié)點(diǎn)密度為15%時(shí),三種定位算法50次試驗(yàn)后全部結(jié)果的平均誤差分別為:文獻(xiàn)[4]算法error=6.1 cm,文獻(xiàn)[5]算法error=5 cm,本文算法error=2.2 cm。當(dāng)移動(dòng)無線物聯(lián)網(wǎng)中錨節(jié)點(diǎn)密度為20%時(shí),對(duì)三種定位算法進(jìn)行50次試驗(yàn),取全部結(jié)果的平均誤差,文獻(xiàn)[4]算法error=3.4 cm,文獻(xiàn)[5]算法error=4.2 cm,本文算法error=1.2 cm。因此,當(dāng)移動(dòng)無線物聯(lián)網(wǎng)中錨節(jié)點(diǎn)密度為15%和20%時(shí),本文算法未知傳感節(jié)點(diǎn)平均定位與實(shí)際定位情況基本一致,而文獻(xiàn)[4]算法和文獻(xiàn)[5]算法雖然定位誤差也相對(duì)較小,但高于本文算法。
根據(jù)上述仿真測(cè)試結(jié)果可以看出,隨著移動(dòng)無線物聯(lián)網(wǎng)中錨節(jié)點(diǎn)密度的升高,采用本文算法得到的各個(gè)節(jié)點(diǎn)的定位誤差越來越小,說明未知傳感節(jié)點(diǎn)的定位精度越來越高。而在相同錨節(jié)點(diǎn)密度的情況下,采用本文算法的未知傳感節(jié)點(diǎn)的定位誤差明顯比文獻(xiàn)[4]算法和文獻(xiàn)[5]算法要小,即本文算法的定位精度得到了有效提高。
針對(duì)傳統(tǒng)定位算法未知傳感節(jié)點(diǎn)定位精確度較低的問題,提出一種DV-Hop算法和位置修正方法相結(jié)合的定位算法。通過理論分析與仿真模擬可知,本文算法在原來DV-Hop算法的基礎(chǔ)上,采用協(xié)作定位算法將歸一化誤差低于預(yù)設(shè)誤差閾值的未知傳感節(jié)點(diǎn)轉(zhuǎn)化為錨節(jié)點(diǎn),以該節(jié)點(diǎn)為依據(jù)定位其他未知傳感節(jié)點(diǎn),擴(kuò)大了定位范圍,并進(jìn)行了未知傳感節(jié)點(diǎn)初步定位后的位置修正,使得獲得的移動(dòng)無線物聯(lián)網(wǎng)感知層傳感節(jié)點(diǎn)定位精度更高,適用性更強(qiáng)。