馬 玨
(江蘇廣播電視大學信息工程系,江蘇南京 210036)
無線傳感器網(wǎng)絡(luò)的定位技術(shù)[1]是無線傳感器網(wǎng)絡(luò)[2]的研究熱點。在無線傳感器網(wǎng)絡(luò)應用領(lǐng)域,有時需要知道節(jié)點的坐標位置信息。位置信息對于無線傳感器網(wǎng)絡(luò)的監(jiān)測尤為重要。傳感器節(jié)點監(jiān)測的信息要與其坐標信息對應,才算完成了一個監(jiān)測對象的確認,所以確認事件發(fā)生的位置是傳感器網(wǎng)絡(luò)中最基本的功能之一。但受到節(jié)點價格、體積、功耗以及硬件性能等因素的限制,造成節(jié)點自身定位仍然是一個問題。這也成為制約無線傳感器網(wǎng)絡(luò)技術(shù)發(fā)展的瓶頸。無線傳感器網(wǎng)絡(luò)的節(jié)點一般情況下是一個微型處理器。但由于節(jié)點體積小、價格高和電源供給有限等因素的影響,因此造成了節(jié)點自身的數(shù)據(jù)處理能力、通信能力和存儲能力都有限。這些節(jié)點只能在自身通信范圍內(nèi)才能與其他節(jié)點進行通信。
文中針對傳統(tǒng)的三邊測距定位法的不足,提出了一種改進算法,即引入質(zhì)心法,建立基于三邊測距和質(zhì)心的三邊質(zhì)心網(wǎng)絡(luò)定位算法。實驗結(jié)果表明,提出的改進算法能夠有效地對節(jié)點進行定位,并且減少誤差率。
在傳感器網(wǎng)絡(luò)中,節(jié)點定位技術(shù)就是無線傳感器網(wǎng)絡(luò)節(jié)點通過某種方法在基于已知節(jié)點位置信息的情況下來計算和確定未知節(jié)點或目標節(jié)點的坐標位置的技術(shù)。在應用中,只有知道節(jié)點的位置信息才能實現(xiàn)對目標信息的監(jiān)測,這就需要監(jiān)測到該事件的多個傳感器節(jié)點之間的相互協(xié)作。只有正確的節(jié)點定位才是提供監(jiān)測對象信息的前提[3]。
在傳感器網(wǎng)絡(luò)應用場合中,節(jié)點的放置一般采取隨機放置的方法。由于數(shù)目較多,不可能每個節(jié)點都要定位確定位置信息。所以通常采用對其中5%~10%的節(jié)點使用定位系統(tǒng),一般的方法是采用GPS定位設(shè)備來獲得自身的精確位置。目前研究的主要方向包括兩個方面:(1)利用錨節(jié)點基于定位算法確認其他節(jié)點的位置,這些錨節(jié)點事先借助外部設(shè)備已經(jīng)確定了自身位置。(2)事先設(shè)置好錨節(jié)點建立坐標系,其他節(jié)點隨機擺放,然后再利用定位算法來計算未知節(jié)點的坐標位置。
基于距離的定位算法,就是要先測量錨節(jié)點和未知節(jié)點之間的距離,然后利用幾何關(guān)系估算未知節(jié)點的坐標位置[4]。解析幾何中有多種方法可以確定空間中點的位置。任何可以確定某一點位置的幾何學方法,只要有傳感器提供足夠的信息,均可成為定位方法。較為常用的方法是三邊定位(Trilateration)和角度定位(AOA)。為提高定位精度,通常使用最小二乘法利用多邊進行定位(Mulilateration)。使用角度定位需要測量接收信號夾角(AOA),測量出夾角后,可使用不同的幾何條件來求節(jié)點的位置。
在使用基于距離的定位技術(shù)時,需要多個錨節(jié)點的協(xié)作才能確定未知節(jié)點位置。用測量的一組數(shù)值建立數(shù)學方程,那么數(shù)學方程的個數(shù)會大于變量的個數(shù),此時可使用極大似然法來獲取最小均方差意義上的估計值。
在無線傳感網(wǎng)絡(luò)中,通常使用的坐標系是二維的,因此只要知道未知節(jié)點與3個錨節(jié)點的距離可以計算出未知節(jié)點的位置。
圖1 三邊定位示意圖
假設(shè)3 個錨節(jié)點坐標分別為(X1,Y1)、(X2,Y2)、(X3,Y3),未知節(jié)點的坐標(Xu,Yu),未知節(jié)點距離 3個錨節(jié)點的距離分別是 R1、R2和 R3,如圖1所示,則根據(jù)二維坐標系距離公式可以得到如下方程組
上述方程組通常采用多邊估計中使用的極大似然法求解未知節(jié)點的坐標(Xu,Yu)。
根據(jù)多邊定位估計,可計算節(jié)點位置(Xu,Yu)為
綜上所述,只要知道未知節(jié)點到3個錨節(jié)點的距離,就可定位未知節(jié)點,實際應用中可能得到未知節(jié)點到多個錨節(jié)點的距離,這便可以每次選取不同的3個點計算,最后對多次計算結(jié)果取平均值進而提高定位精度。
三邊質(zhì)心定位法將質(zhì)心定位算法思想引入到三邊測距算法中,通過計算相交圓的交點及由交點組成區(qū)域的質(zhì)心來估計未知節(jié)點,使估算出的未知節(jié)點坐標準確度提高。設(shè)未知節(jié)點D的坐標(xd,yd),A、B、C 3個信標節(jié)點的坐標分別為(xa,ya),(xb,yb),(xc,yc),到 D的距離分別為dad,dbd,dcd。則可得如下方程組
式(1)減式(3);式(2)減式(3)后聯(lián)立方程
可解得 D點的坐標(xd,yd)。
三邊測距算法確定未知節(jié)點坐標的思想如圖2所示。
圖2 改進的三邊測距確定未知點
由于三邊測距算法基于兩條直線的交點來估算未知節(jié)點的坐標,未充分利用A,B,C 3個節(jié)點的坐標信息,使估算的未知節(jié)點的坐標可能存在較大誤差。
在圖3中,根據(jù)式(1)~式(3)可解出圓A與圓C的交點Mac1(xac1,yac1)和 Mac2(xac2,yac2),圓 B 與圓 C的交點 Mbc1(xbc1,ybc1)和 Mbc2(xbc2,ybc2);圓 A 與圓 B 的交點 Mab1(xab1,yab1),Mab2(xab2,yab2)。通過將圓 A 與圓C 交點 Mac1(xac1,yac1),Mac2(xac2,yac2)代入式(x -x2)2+(y-y2)2,判斷大小即可找出兩點距圓B的圓心較近的點,假設(shè)為 Mac1(xac1,yac1)。同理可找出圓 B,圓 C交點中距圓A較近的點設(shè)為Mbc1(xbc1,ybc1),圓A,圓B交點中距圓C的圓心較近的點設(shè)為Mab2(xab1,yab1),依據(jù)質(zhì)心思想估算未知節(jié)點D的坐標為
從上述分析可知,若要對未知節(jié)點的定位誤差進行補償首先需要獲得信標節(jié)點的坐標誤差。獲得信標節(jié)點坐標誤差的過程中,由于取不同的3個信標節(jié)點做三邊定位同樣會得到不同的測量值,需要用這些測量值來得到最終的信標節(jié)點A0的計算坐標。文中采用加權(quán)質(zhì)心算法來計算信標節(jié)點的計算坐標,如圖3所示。
圖3 加權(quán)質(zhì)心信標節(jié)點
假設(shè) A01,A02,A03,…,A0n為 A0坐標的多個不同測量值;A0'為 A01,A02,A03,…,A0n的質(zhì)心;d1,d2,…,dn為坐標 A0到坐標 A01,A02,A03,…,A0n的距離。
定義1 信標節(jié)點的計算坐標
式中
為加權(quán)因子,表示坐標Aoi的權(quán)重,離質(zhì)心A0'的距離越近,所占的權(quán)重則越大;xi為Aoi的X坐標值,yi為Aoi的Y坐標值所以信標節(jié)點的坐標誤差為
式中,x為信標節(jié)點X坐標實際值;xc為信標節(jié)點計算坐標X值;y為信標節(jié)點Y坐標實際值;yc為信標節(jié)點計算坐標Y值。信標節(jié)點的坐標誤差反映了系統(tǒng)針對該節(jié)點附近區(qū)域的定位能力。
然而在定位系統(tǒng)實際應用過程中,未知節(jié)點B未必恰好處于某個信標節(jié)點附近,而可能離各個信標節(jié)點距離相當,因此并不能按照理想情況直接用A0的坐標誤差去補償未知節(jié)點B的坐標誤差。但是,每個信標節(jié)點所在區(qū)域的定位誤差都可以通過信標節(jié)點坐標誤差來反映,綜合考慮所有信標節(jié)點坐標誤差就可得到由信標節(jié)點所構(gòu)成的區(qū)域定位誤差,只要未知節(jié)點B處于該區(qū)域內(nèi),其坐標誤差就可以用該誤差進行補償。這里的區(qū)域大小需根據(jù)網(wǎng)絡(luò)不同的精度要求和節(jié)點密度來具體設(shè)定。如圖2所示,當未知節(jié)點B處于由信標節(jié)點A1,A2,…,Ai構(gòu)成的區(qū)域時,先通過RSSI值計算出這些信標節(jié)點和自身的距離,然后綜合各個信標節(jié)點的的坐標誤差可得出未知節(jié)點所在區(qū)域的定位誤差[5]。
定義2 未知節(jié)點校正誤差
其中
是加權(quán)因子,表示信標節(jié)點Aj的坐標誤差對未知節(jié)點校正誤差的決定權(quán),從上述分析可知,信標節(jié)點Aj離未知節(jié)點的距離越近,所占的權(quán)重越大,m為用于坐標校正的信標節(jié)點個數(shù)。所以未知節(jié)點D最終坐標為
式中,xc1為未知節(jié)點加權(quán)質(zhì)心法計算的X坐標;yc1為未知節(jié)點加權(quán)質(zhì)心法計算的Y坐標。將質(zhì)心算法所求的未知節(jié)點D的坐標代入式(10)中,即可更準確地估計出未知節(jié)點D的坐標。
在Matlab仿真環(huán)境里,這3種算法均處于相同環(huán)境。節(jié)點個數(shù)都是50個節(jié)點其中38個錨節(jié)點和12個未知節(jié)點,坐標系為50 m×50 m,節(jié)點通信半徑為100 m,圖4~圖7為部分仿真結(jié)果。
圖7 算法求得點坐標與實際點坐標誤差圖
從實驗結(jié)果可看出,文中提出的改進算法能夠有效地對節(jié)點進行定位,并且減少了誤差。
[1]方紅雨,崔遜學.無線傳感器網(wǎng)絡(luò)的定位問題綜述[J].電腦與信息技術(shù),2005,13(6):1 -6.
[2]周立君,劉宇.基于RSSI的無線傳感器網(wǎng)絡(luò)節(jié)點定位技術(shù)研究[J].電子測量技術(shù),2010,33(8):115 -118.
[3]周小波,喬鋼柱,曾建潮.無線傳感器網(wǎng)絡(luò)中基于RSSI的加權(quán)DV-HOP定位方法[J].計算機工程與應用,2011,47(14):2-3.
[4]趙昭,陳小慧.無線傳感器網(wǎng)絡(luò)中基于RSSI的改進定位算法[J].傳感器技術(shù)學報,2009,22(3):391 -392.
[5]李慧貞.融合無線傳感網(wǎng)絡(luò)的長距離射頻識別系統(tǒng)[J].電子科技,2011,24(9):5 -7,12.