徐 林,傅成華
(四川理工學院,四川 自貢 643000)
ZigBee技術(shù)以獨特的低成本、低功耗、低速率的特點,而擁有其他無線通信技術(shù)所無可比擬的優(yōu)勢。同時在其成本變化不大的情況下,增加硬件定位引擎,僅消耗極小的硬件資源,利用原有網(wǎng)絡(luò)條件就能實現(xiàn)無線定位,進一步拓展了ZigBee技術(shù)的應(yīng)用。基于到達時間(TOA)、到達時間差(ODOA)、到達角度(AOA)、接收信號強度(RSSI)的定位機制都適用于IEEE802.15.4網(wǎng)絡(luò)[1]。而基于RSSI的定位機制更符合ZigBee技術(shù)低成本的特點,并能滿足大部分低精確度定位的要求。
圖1是一個理想的定位場景,節(jié)點1、2、3為已知坐標的錨節(jié)點,節(jié)點4為需定位的盲節(jié)點。定位方法是將由 RSSI值換算而來的 r1、r2、r3值,及錨節(jié)點坐標代入矩陣式(1),求解盲節(jié)點坐標值(x,y)。
圖1 三邊測量定位
實際環(huán)境中,式(1)右式不可能全為0,因此定義誤差向量 E=[e12e22e32]T,如式(2)所示構(gòu)建方程:
采用經(jīng)典優(yōu)化方法求解目標,找到一坐標對(x,y)使e2為最小。當增加錨節(jié)點數(shù)量,并按式(2)求解時,在一些應(yīng)用場合中,可提高定位精度[2]。
有研究表明,基于RSSI進行定位時,傳輸距離越近,功率衰減快;而傳輸距離越遠,衰減越慢。因此傳輸距離越近,定位越準確;傳輸距離越遠,定位誤差越大[3]。
上述定位方法用于二維定位時忽略了各節(jié)點安裝高度。如圖2所示,考慮在立體空間中的定位情況。盲節(jié)點 5需錨節(jié)點 1、2、3、4為之定位。
圖2 空間定位情況
求解式(3)獲得定位點坐標(x,y,z)。
當坐標點(a,b,c)滿足式(4)時,有:
顯然若使式(1)與式(4)的 x、y 值同解,當且僅當z1=z2=z3=c。由此利用式(1)進行定位計算時,若錨節(jié)點安裝高度均與盲節(jié)點高度相等,則安裝高度不會產(chǎn)生xy平面上的定位誤差。但在實際應(yīng)用中,因現(xiàn)場情況限制,錨節(jié)點往往安裝位置較高,而盲節(jié)點手持或安裝于移動物體上,因此錨節(jié)點與盲節(jié)點不可能安裝在同一水平面上。此時,式(1)、式(4)有不同解,這將在理論上產(chǎn)生定位誤差。
在一定值場景中,如圖2中4個錨節(jié)點安裝高度為3 m,各錨節(jié)點在xy軸的投影點組成一邊長為8 m的正方形。x軸和y軸均以2 m的步長取計算點,求解式(3)時,采用有約束非線性規(guī)劃法,求得錨節(jié)點與盲節(jié)點的高差分別為2 m和3 m時的理論誤差分布,如圖3所示。由圖可知,高差越大,各點誤差值普遍增大,這對小空間內(nèi)的定位準確度造成較大影響。
圖3 誤差分布圖
前述算法出現(xiàn)誤差的根本原因在于定位計算時忽略了高差因素δh,CC2431的定位引擎輸入?yún)?shù)不包括節(jié)點安裝高度[4]。但考慮到δh對于二維定位,如得到各錨節(jié)點到盲節(jié)點的投影距離,僅需在xy平面上進行計算。根據(jù)式(3)消去z軸的影響因素。改造式(2)為:
采用有約束非線性規(guī)劃法求解定位點時,由安裝高度不同造成的理論誤差近似為零。且同樣適用于各錨節(jié)點安裝高度不一致情況下的二維定位。
CC2431采用硬件定位引擎進行定位運算,無法對定位引擎內(nèi)部算法進行調(diào)整。為實現(xiàn)前述改進算法,可對盲節(jié)點接收的 RSSI(實測值)進行處理,修正為對應(yīng)于 xy投影面的 RSSI(修正值),再輸入到定位引擎參與計算。考慮到定位引擎能識別的RSSI值最小分辨率為0.5 dBm,因此當修正值大于等于實測值0.5 dBm時,才予以修正。由測距模型[5]得到修正條件式(7):
建立 RSSI(實測值)和 RSSI(修正值)函數(shù)關(guān)系如下:
式中d為實際距離;δh為高度差;r為投影距離。
為減少CC2431在進行RSSI值修正時的系統(tǒng)開銷,預先代入 A、n、δh值等常數(shù)逐點計算式(8),得到修正值。盲節(jié)點進行修正值計算時,如修正點較少時可采用查表法計算,當各錨節(jié)點安裝高度不同或修正點較多時則采用多項式擬合法計算。
本實驗場景為長寬為8 m×8 m,凈高為3.2 m的室內(nèi)空間,分別在4個墻角安裝錨節(jié)點CC2430,安裝高度為2.8 m。手持盲節(jié)點CC2431距地約0.8 m。以1 m為步長,總計測量81個點位接收到4個RSSI值。由式(7)、式(8)得到修正表,見表 1。 修正表僅占用 58 B的存儲空間,本次實驗采用查表法進行修正。
表1 RSSI值修正表
為對改進前后的效果進行比較,每次定點測量都連續(xù)啟動定位引擎兩次,并分別輸入 RSSI(實測值)和 RSSI(修正值),將兩次得到的定位坐標送至PC,經(jīng)Matlab處理后,得到改進后與改進前誤差的差值表,如表2所示。
由表2可見,改進算法提高了散布在錨節(jié)點附近位置的定位精度,對遠離錨節(jié)點的位置因不滿足修正條件,則保持了原算法所得到的定位坐標。較好地解決了要求傳輸距離盡可能近與近距離時安裝高差將產(chǎn)生較大誤差之間的矛盾。
本文分析了基于ZigBee的三邊測量定位算法在二維定位上,因節(jié)點安裝高度差產(chǎn)生定位誤差的本質(zhì)原因,并通過Matlab實現(xiàn)了不同高差下理論誤差的對比。提出了抑制該誤差的RSSI修正值方法。最后通過實測對提出的方法進行了驗證,體現(xiàn)出RSSI修正值法的有效性。
表2 改進后與改進前的誤差差值表 (m)
[1]高守瑋,吳燦陽.ZigBee技術(shù)實踐教程[M].北京:北京航空航天大學出版社,2009.
[2]FARAHANI S.ZigBee wirleless networks and transceivers[M].USA: Newnes,2008.
[3]孫佩剛,趙海,羅玎玎,等.智能空間中 RSSI定位問題研究[J],電子學報,2007,35(7):1242-1243.
[4]Chipcon Inc.CC2431 Datasheet[S].2006.5-9.
[5]王靜,張會清.基于ZigBee的無線網(wǎng)絡(luò)定位技術(shù)的研究與實現(xiàn)[J],傳感器與微系統(tǒng),2010,29(2):15-16.