馬 玨
(江蘇廣播電視大學信息工程系,江蘇南京 210036)
無線傳感器網絡的定位技術[1]是無線傳感器網絡[2]的研究熱點。在無線傳感器網絡應用領域,有時需要知道節點的坐標位置信息。位置信息對于無線傳感器網絡的監測尤為重要。傳感器節點監測的信息要與其坐標信息對應,才算完成了一個監測對象的確認,所以確認事件發生的位置是傳感器網絡中最基本的功能之一。但受到節點價格、體積、功耗以及硬件性能等因素的限制,造成節點自身定位仍然是一個問題。這也成為制約無線傳感器網絡技術發展的瓶頸。無線傳感器網絡的節點一般情況下是一個微型處理器。但由于節點體積小、價格高和電源供給有限等因素的影響,因此造成了節點自身的數據處理能力、通信能力和存儲能力都有限。這些節點只能在自身通信范圍內才能與其他節點進行通信。
文中針對傳統的三邊測距定位法的不足,提出了一種改進算法,即引入質心法,建立基于三邊測距和質心的三邊質心網絡定位算法。實驗結果表明,提出的改進算法能夠有效地對節點進行定位,并且減少誤差率。
在傳感器網絡中,節點定位技術就是無線傳感器網絡節點通過某種方法在基于已知節點位置信息的情況下來計算和確定未知節點或目標節點的坐標位置的技術。在應用中,只有知道節點的位置信息才能實現對目標信息的監測,這就需要監測到該事件的多個傳感器節點之間的相互協作。只有正確的節點定位才是提供監測對象信息的前提[3]。
在傳感器網絡應用場合中,節點的放置一般采取隨機放置的方法。由于數目較多,不可能每個節點都要定位確定位置信息。所以通常采用對其中5%~10%的節點使用定位系統,一般的方法是采用GPS定位設備來獲得自身的精確位置。目前研究的主要方向包括兩個方面:(1)利用錨節點基于定位算法確認其他節點的位置,這些錨節點事先借助外部設備已經確定了自身位置。(2)事先設置好錨節點建立坐標系,其他節點隨機擺放,然后再利用定位算法來計算未知節點的坐標位置。
基于距離的定位算法,就是要先測量錨節點和未知節點之間的距離,然后利用幾何關系估算未知節點的坐標位置[4]。解析幾何中有多種方法可以確定空間中點的位置。任何可以確定某一點位置的幾何學方法,只要有傳感器提供足夠的信息,均可成為定位方法。較為常用的方法是三邊定位(Trilateration)和角度定位(AOA)。為提高定位精度,通常使用最小二乘法利用多邊進行定位(Mulilateration)。使用角度定位需要測量接收信號夾角(AOA),測量出夾角后,可使用不同的幾何條件來求節點的位置。
在使用基于距離的定位技術時,需要多個錨節點的協作才能確定未知節點位置。用測量的一組數值建立數學方程,那么數學方程的個數會大于變量的個數,此時可使用極大似然法來獲取最小均方差意義上的估計值。
在無線傳感網絡中,通常使用的坐標系是二維的,因此只要知道未知節點與3個錨節點的距離可以計算出未知節點的位置。

圖1 三邊定位示意圖
假設3 個錨節點坐標分別為(X1,Y1)、(X2,Y2)、(X3,Y3),未知節點的坐標(Xu,Yu),未知節點距離 3個錨節點的距離分別是 R1、R2和 R3,如圖1所示,則根據二維坐標系距離公式可以得到如下方程組

上述方程組通常采用多邊估計中使用的極大似然法求解未知節點的坐標(Xu,Yu)。

根據多邊定位估計,可計算節點位置(Xu,Yu)為

綜上所述,只要知道未知節點到3個錨節點的距離,就可定位未知節點,實際應用中可能得到未知節點到多個錨節點的距離,這便可以每次選取不同的3個點計算,最后對多次計算結果取平均值進而提高定位精度。
三邊質心定位法將質心定位算法思想引入到三邊測距算法中,通過計算相交圓的交點及由交點組成區域的質心來估計未知節點,使估算出的未知節點坐標準確度提高。設未知節點D的坐標(xd,yd),A、B、C 3個信標節點的坐標分別為(xa,ya),(xb,yb),(xc,yc),到 D的距離分別為dad,dbd,dcd。則可得如下方程組

式(1)減式(3);式(2)減式(3)后聯立方程

可解得 D點的坐標(xd,yd)。
三邊測距算法確定未知節點坐標的思想如圖2所示。

圖2 改進的三邊測距確定未知點
由于三邊測距算法基于兩條直線的交點來估算未知節點的坐標,未充分利用A,B,C 3個節點的坐標信息,使估算的未知節點的坐標可能存在較大誤差。
在圖3中,根據式(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的圓心較近的點,假設為 Mac1(xac1,yac1)。同理可找出圓 B,圓 C交點中距圓A較近的點設為Mbc1(xbc1,ybc1),圓A,圓B交點中距圓C的圓心較近的點設為Mab2(xab1,yab1),依據質心思想估算未知節點D的坐標為

從上述分析可知,若要對未知節點的定位誤差進行補償首先需要獲得信標節點的坐標誤差。獲得信標節點坐標誤差的過程中,由于取不同的3個信標節點做三邊定位同樣會得到不同的測量值,需要用這些測量值來得到最終的信標節點A0的計算坐標。文中采用加權質心算法來計算信標節點的計算坐標,如圖3所示。

圖3 加權質心信標節點
假設 A01,A02,A03,…,A0n為 A0坐標的多個不同測量值;A0'為 A01,A02,A03,…,A0n的質心;d1,d2,…,dn為坐標 A0到坐標 A01,A02,A03,…,A0n的距離。
定義1 信標節點的計算坐標

式中

為加權因子,表示坐標Aoi的權重,離質心A0'的距離越近,所占的權重則越大;xi為Aoi的X坐標值,yi為Aoi的Y坐標值所以信標節點的坐標誤差為

式中,x為信標節點X坐標實際值;xc為信標節點計算坐標X值;y為信標節點Y坐標實際值;yc為信標節點計算坐標Y值。信標節點的坐標誤差反映了系統針對該節點附近區域的定位能力。
然而在定位系統實際應用過程中,未知節點B未必恰好處于某個信標節點附近,而可能離各個信標節點距離相當,因此并不能按照理想情況直接用A0的坐標誤差去補償未知節點B的坐標誤差。但是,每個信標節點所在區域的定位誤差都可以通過信標節點坐標誤差來反映,綜合考慮所有信標節點坐標誤差就可得到由信標節點所構成的區域定位誤差,只要未知節點B處于該區域內,其坐標誤差就可以用該誤差進行補償。這里的區域大小需根據網絡不同的精度要求和節點密度來具體設定。如圖2所示,當未知節點B處于由信標節點A1,A2,…,Ai構成的區域時,先通過RSSI值計算出這些信標節點和自身的距離,然后綜合各個信標節點的的坐標誤差可得出未知節點所在區域的定位誤差[5]。
定義2 未知節點校正誤差

其中

是加權因子,表示信標節點Aj的坐標誤差對未知節點校正誤差的決定權,從上述分析可知,信標節點Aj離未知節點的距離越近,所占的權重越大,m為用于坐標校正的信標節點個數。所以未知節點D最終坐標為

式中,xc1為未知節點加權質心法計算的X坐標;yc1為未知節點加權質心法計算的Y坐標。將質心算法所求的未知節點D的坐標代入式(10)中,即可更準確地估計出未知節點D的坐標。
在Matlab仿真環境里,這3種算法均處于相同環境。節點個數都是50個節點其中38個錨節點和12個未知節點,坐標系為50 m×50 m,節點通信半徑為100 m,圖4~圖7為部分仿真結果。


圖7 算法求得點坐標與實際點坐標誤差圖
從實驗結果可看出,文中提出的改進算法能夠有效地對節點進行定位,并且減少了誤差。
[1]方紅雨,崔遜學.無線傳感器網絡的定位問題綜述[J].電腦與信息技術,2005,13(6):1 -6.
[2]周立君,劉宇.基于RSSI的無線傳感器網絡節點定位技術研究[J].電子測量技術,2010,33(8):115 -118.
[3]周小波,喬鋼柱,曾建潮.無線傳感器網絡中基于RSSI的加權DV-HOP定位方法[J].計算機工程與應用,2011,47(14):2-3.
[4]趙昭,陳小慧.無線傳感器網絡中基于RSSI的改進定位算法[J].傳感器技術學報,2009,22(3):391 -392.
[5]李慧貞.融合無線傳感網絡的長距離射頻識別系統[J].電子科技,2011,24(9):5 -7,12.