高瑞娟,陳桂芬,徐 赫
(長春理工大學(xué) 電子信息工程學(xué)院,吉林 長春 130022)
傳感器節(jié)點(diǎn)包括靜止節(jié)點(diǎn)和移動節(jié)點(diǎn),這些節(jié)點(diǎn)通過自組織的方式構(gòu)成無線傳感器網(wǎng)絡(luò)(wireless sensor networks,WSN)[1,2]?;跓o線傳感器的研究主要有節(jié)點(diǎn)定位技術(shù)、網(wǎng)絡(luò)覆蓋技術(shù)和路由協(xié)議技術(shù)等方面,本文將對眾多技術(shù)中的定位技術(shù)進(jìn)行研究。
隨著當(dāng)今時代技術(shù)的發(fā)展,許多傳感器技術(shù)被應(yīng)用于大型農(nóng)業(yè)中,例如無線溫度傳感器、無線光照傳感器等。然而在規(guī)模較大、環(huán)境惡劣、地形較復(fù)雜的農(nóng)田中部署的傳感器一般是通過飛機(jī)隨機(jī)拋灑的,這就意味著對隨機(jī)拋灑的傳感器節(jié)點(diǎn)進(jìn)行準(zhǔn)確定位成為獲取農(nóng)田可靠溫度、光照、氣體等信息的前提。目前,有許多學(xué)者對DV-Hop定位算法進(jìn)行了改進(jìn)[3-5],但這些僅適用于二維空間。由于實際環(huán)境的復(fù)雜性,二維空間的定位算法已經(jīng)滿足不了定位精度的需求,需上升到三維空間進(jìn)行研究。
目前為止,三維空間中的定位算法有Landscape-3D(landscape three-dimensional)算法[6]、APIS(approximate point in sphere)算法[7]、3D-DV-Hop (three-dimensional distance vector-hop)算法[8]、Constrained-3D(constrained three-dimensional)算法[9]等。其中,眾多算法中的3D-DV-Hop定位算法計算相對簡單,所以有許多學(xué)者將其進(jìn)行改進(jìn)[10,11]。但這些改進(jìn)算法并沒有考慮錨節(jié)點(diǎn)共面問題,因此本文將對節(jié)點(diǎn)定位中存在的共面問題進(jìn)行深刻研究,提出一種適用于三維空間中的錨節(jié)點(diǎn)組按規(guī)定路徑移動的非測距定位算法。
三維空間中DV-Hop定位原理類似于二維空間中DV-Hop定位原理,具體介紹如下:
(1)獲取最小跳數(shù)
大量節(jié)點(diǎn)在監(jiān)測區(qū)域內(nèi)被隨機(jī)部署后,錨節(jié)點(diǎn)通過向周圍節(jié)點(diǎn)發(fā)送自身包含ID號、位置信息以及跳數(shù)hi的數(shù)據(jù)包信息[12]。其中,跳數(shù)hi開始值記為0。未知節(jié)點(diǎn)不斷接收來自周圍錨節(jié)點(diǎn)的數(shù)據(jù)包,若接收到的數(shù)據(jù)包中的跳數(shù)小于已經(jīng)保存的最小跳數(shù),則拋棄已經(jīng)保存的跳數(shù),同時把當(dāng)前跳數(shù)進(jìn)行加一,并將自身的信息傳送到網(wǎng)絡(luò)中。
(2)估算平均跳距
用錨節(jié)點(diǎn)間坐標(biāo)之差除以錨節(jié)點(diǎn)間的跳數(shù)求得檢測區(qū)域內(nèi)所有錨節(jié)點(diǎn)間的平均跳距HopSizeij為
(1)
式中:(xi,yi,zi)、(xj,yj,zj)分別為錨節(jié)點(diǎn)i、j的位置坐標(biāo),hij為錨節(jié)點(diǎn)i和錨節(jié)點(diǎn)j之間的跳數(shù)。進(jìn)一步可得出未知節(jié)點(diǎn)與錨節(jié)點(diǎn)i之間距離di為
di=hij×HopSizeij,(i≠j)
(2)
(3)計算未知節(jié)點(diǎn)位置
最后,經(jīng)過以上計算后,若未知節(jié)點(diǎn)附近的鄰居錨節(jié)點(diǎn)數(shù)等于4個,傾向于選擇四邊測量法獲得未知節(jié)點(diǎn)的坐標(biāo)。若未知節(jié)點(diǎn)附近的鄰居錨節(jié)點(diǎn)數(shù)超過4個,傾向于選擇極大似然估計法獲得未知節(jié)點(diǎn)的坐標(biāo)。
本文的改進(jìn)算法具體介紹如下:
在三維空間中,節(jié)點(diǎn)部署雜亂無序。為了定位計算容易,將三維空間分層為無數(shù)個二維空間進(jìn)行處理。三維空間的分層式劃分如圖1所示。
監(jiān)測區(qū)域經(jīng)過分層處理后,在監(jiān)測區(qū)域邊界處部署一組移動錨節(jié)點(diǎn)組,并使錨節(jié)點(diǎn)組按一定的靜態(tài)移動路徑移動。其中,移動錨節(jié)點(diǎn)組的相對位置關(guān)系如圖2所示。
圖1 三維空間的分層式劃分
圖2 移動錨節(jié)點(diǎn)組的相對位置關(guān)系
接下來,讓錨節(jié)點(diǎn)組在監(jiān)測區(qū)域內(nèi)按規(guī)定的移動路徑開始移動,如圖3所示。
圖3 錨節(jié)點(diǎn)組移動路徑
為了解決共面現(xiàn)象導(dǎo)致未知節(jié)點(diǎn)不能確定的問題,必須要采取一些度量標(biāo)準(zhǔn)衡量四面體的質(zhì)量?,F(xiàn)有的衡量四面體質(zhì)量的標(biāo)準(zhǔn)有系數(shù)γ、半徑比ρ、最小立體角θ等,考慮到衡量四面體網(wǎng)格質(zhì)量標(biāo)準(zhǔn)方法的準(zhǔn)確性幾乎等價,本文采用最小立體角θ的測量方式測量共面度,具體介紹如下:
在4個錨節(jié)點(diǎn)構(gòu)成的四面體中,4個夾角分別用θ1、θ2、θ3、θ4表示,具體計算如式(3)所示
(3)
式中:V表示四面體的體積,lij表示錨節(jié)點(diǎn)i、j之間的距離。將θ1、θ2、θ3、θ4這4個角度進(jìn)行對比,取其中的最小角度θ作為衡量四面體的平面度值,如式(4)所示
θ=MIN(θ1、θ2、θ3、θ4)
(4)
(5)
3D-DV-Hop定位算法是用平均跳距等于錨節(jié)點(diǎn)間距離除以錨節(jié)點(diǎn)間跳數(shù)。但在本文中提出的錨節(jié)點(diǎn)組按規(guī)定路徑移動的三維定位算法中,錨節(jié)點(diǎn)組是按靜態(tài)移動路徑SCAN移動整個三維區(qū)域,遍移動后的區(qū)域中不存在錨節(jié)點(diǎn),且未知節(jié)點(diǎn)所獲得信息均來源于虛擬錨節(jié)點(diǎn)并非錨節(jié)點(diǎn)。因此,無法直接計算錨節(jié)點(diǎn)間的平均跳距。
接下來,用一種計算虛擬錨節(jié)點(diǎn)組間的距離方法解決移動路徑中存在的問題,即用篩選出來的r組虛擬錨節(jié)點(diǎn)組來估算平均每跳距離,如式(6)所示
(6)
最后,將節(jié)點(diǎn)之間的距離進(jìn)行共面度加權(quán)處理,如下式(7)所示
(7)
式中:(x,y,z)表示待定位節(jié)點(diǎn)坐標(biāo),(xn,yn,zn)表示虛擬錨節(jié)點(diǎn)組的位置,wi表示平面度加權(quán)值,di(i=1,2,…,n)表示節(jié)點(diǎn)間的距離。
將式(7)化簡后可得
AX=b
(8)
其中
(9)
(10)
(11)
最終求得未知節(jié)點(diǎn)的坐標(biāo)為
X=(ATA)-1ATb
(12)
為驗證提出的移動錨節(jié)點(diǎn)組按規(guī)定移動路徑移動的定位算法能夠有效降低節(jié)點(diǎn)定位誤差,本文對算法進(jìn)行了仿真,并與3D-DV-Hop算法以及其它的改進(jìn)算法進(jìn)行比較。仿真中,平均定位誤差的衡量標(biāo)準(zhǔn)如式(13)所示
(13)
式中:待定位未知節(jié)點(diǎn)的實際坐標(biāo)用(xi,yi,zi)表示,待定位未知節(jié)點(diǎn)的所求坐標(biāo)用(xj,yj,zj)表示,監(jiān)測區(qū)域內(nèi)待定位未知節(jié)點(diǎn)的數(shù)量用N表示,監(jiān)測區(qū)域內(nèi)節(jié)點(diǎn)的通信范圍半徑用R表示。相關(guān)的仿真參數(shù)見表1。
表1 仿真參數(shù)
將通信半徑R為40 m的500個節(jié)點(diǎn)隨機(jī)拋灑在100 m*100 m*100 m的監(jiān)測區(qū)域內(nèi),節(jié)點(diǎn)隨機(jī)拋灑生成圖如圖4所示。其中,錨節(jié)點(diǎn)為100個,符號為“*”,未知節(jié)點(diǎn)400個,符號為“°”。
為了仿真結(jié)果的可靠性,對節(jié)點(diǎn)隨機(jī)分布進(jìn)行500次仿真,仿真的相對平均誤差如圖5所示。由500次仿真結(jié)果可知,除了個別次仿真外,改進(jìn)算法的定位誤差均在0.21 m上下浮動,定位誤差較穩(wěn)定。
圖4 未知節(jié)點(diǎn)定位誤差
圖5 loop次相對平均誤差
圖6為錨節(jié)點(diǎn)比例對平均定位誤差的影響仿真圖。仿真中,設(shè)監(jiān)測區(qū)域為邊長100 m的三維空間,在監(jiān)測區(qū)域內(nèi)隨機(jī)分布500個節(jié)點(diǎn),且節(jié)點(diǎn)通信半徑固定為40 m,改變網(wǎng)絡(luò)中錨節(jié)點(diǎn)的比例,從10%逐步增加到40%,同時對本文算法、傳統(tǒng)算法、文獻(xiàn)[10]算法以及文獻(xiàn)[11]算法進(jìn)行仿真對比。
圖6 錨節(jié)點(diǎn)比例對平均定位誤差的影響仿真
根據(jù)圖6中的數(shù)據(jù)線變化能夠看到,當(dāng)錨節(jié)點(diǎn)數(shù)達(dá)到總節(jié)點(diǎn)數(shù)的20%以上時,節(jié)點(diǎn)定位誤差變化開始緩慢。4種算法平均定位誤差隨著錨節(jié)點(diǎn)的比例增大均有所下降,本文算法的平均定位誤差相對于傳統(tǒng)定位算法、文獻(xiàn)[10]算法、文獻(xiàn)[11]算法分別降低了29.76%、10.22%、4.31%。
圖7為節(jié)點(diǎn)通信半徑對平均定位誤差的影響仿真圖。網(wǎng)絡(luò)中總節(jié)點(diǎn)為500,錨節(jié)點(diǎn)比例為20%,讓節(jié)點(diǎn)通信半徑逐漸遞增,對算法進(jìn)行仿真。
圖7 節(jié)點(diǎn)通信半徑對平均定位誤差的影響仿真
從圖7中的數(shù)據(jù)線變化可以明顯看出當(dāng)節(jié)點(diǎn)通信半徑達(dá)到40 m時,節(jié)點(diǎn)定位誤差的變化開始平緩。4種算法的平均定位誤差隨著通信半徑的增大均有明顯下降,本文算法的平均定位誤差相對于傳統(tǒng)定位算法、文獻(xiàn)[10]算法、文獻(xiàn)[11]算法分別降低了37.26%、13.85%、8.96%。
圖8為總節(jié)點(diǎn)個數(shù)對平均定位誤差的影響仿真圖。在監(jiān)測區(qū)域中分別部署100個、200個、300個、400個、500個節(jié)點(diǎn),網(wǎng)絡(luò)中錨節(jié)點(diǎn)占比固定為總節(jié)點(diǎn)的20%,節(jié)點(diǎn)通信半徑固定為40 m,對算法進(jìn)行仿真。
圖8 總節(jié)點(diǎn)個數(shù)對平均定位誤差的影響仿真
從圖8中可以看出,傳統(tǒng)定位算法、文獻(xiàn)[10]算法、文獻(xiàn)[11]算法以及本文提出的定位算法隨著總節(jié)點(diǎn)個數(shù)的增加,平均定位誤差都有所下降。在同等總節(jié)點(diǎn)個數(shù)情況下,本文提出的定位算法的平均定位誤差相對于傳統(tǒng)定位算法、文獻(xiàn)[10]算法、文獻(xiàn)[11]算法分別降低了36.25%、12.77%、16.83%。
當(dāng)三維空間中錨節(jié)點(diǎn)組出現(xiàn)共面現(xiàn)象時,將會導(dǎo)致未知節(jié)點(diǎn)無法定位。針對這個現(xiàn)象,提出一種適用于三維空間中的錨節(jié)點(diǎn)組按規(guī)定路徑移動的非測距定位算法。通過對監(jiān)測區(qū)域進(jìn)行分層式錨節(jié)點(diǎn)組移動路徑規(guī)劃,計算虛擬錨節(jié)點(diǎn)組的共面度值以及用虛擬錨節(jié)點(diǎn)組計算平均跳距,最終對節(jié)點(diǎn)間距離進(jìn)行共面度加權(quán)計算出待定位節(jié)點(diǎn)位置。實驗結(jié)果表明本文提出的算法有效的避免了錨節(jié)點(diǎn)共面現(xiàn)象,進(jìn)而提高了未知節(jié)點(diǎn)的定位精度。接下來的工作是針對算法中存在的共線問題進(jìn)行研究。