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