ZigBee技術(shù)中基于RSSI測距的定位算法研究
摘要:采用CC2430/CC2431為核心芯片設(shè)計ZigBee節(jié)點,并采用此類節(jié)點構(gòu)成一個ZigBee定位網(wǎng)絡(luò)。根據(jù)節(jié)點接收信號強度(RSSI)的模型,估計出盲節(jié)點與參考節(jié)點的距離,并采用最小二乘法對估計的距離進行修正。選擇3個接收信號強度最強的參考節(jié)點,根據(jù)修正的距離采用三邊測量法估計出盲節(jié)點的坐標。實驗表明,修正后的定位精度高于修正前的定位精度。
關(guān)鍵詞:ZigBee技術(shù);節(jié)點定位;RSSI;最小二乘法
引言
ZigBee技術(shù)中定義了3種設(shè)備:協(xié)調(diào)器(Coordinator),路由器(Router)和終端設(shè)備(End-Device)。協(xié)調(diào)器主要負責啟動整個網(wǎng)絡(luò);路由器的功能主要是允許其他設(shè)備加入網(wǎng)絡(luò)及多跳路由等;終端設(shè)備一般沒有特定的維持網(wǎng)絡(luò)結(jié)構(gòu)的責任。ZigBee技術(shù)通過這3種設(shè)備可以構(gòu)成一個移動自組織的網(wǎng)絡(luò),廣泛應(yīng)用在家庭、環(huán)境監(jiān)測、工農(nóng)業(yè)等場合。目前的定位技術(shù)總體上可以分為基于測距技術(shù)與無需測距技術(shù)。前者定位精度較高,后者實現(xiàn)起來比較簡單。在測距技術(shù)中,有基于接收信號強度(RSSI)、基于到達時間差(TOA)、基于不同波的到達時間差(TDOA)以及到達角度差(AOA)等。在這幾種測距技術(shù)中,基于RSSI的測距技術(shù)將接收到的信號強度轉(zhuǎn)換為節(jié)點之間的距離,不需要額外的硬件和數(shù)據(jù)交換,有成本低、容易實現(xiàn)等優(yōu)點。本文結(jié)合CC2430/CC2431芯片,設(shè)計了一種基于RSSI的測距定位算法。
1 RSSI測距的實現(xiàn)原理
基于RSSI的測距技術(shù)是利用無線電信號隨距離增大而有規(guī)律地衰減的原理來測量節(jié)點間的距離的。接收信號強度RSSI與傳輸距離d的關(guān)系如下所示:
RSSI=-(10×n×lgd+A) (1)
式中,n表示信號傳播常數(shù),也叫傳播系數(shù);d表示與發(fā)送者的距離;A表示距發(fā)送者1 m時的信號強度。測距精度的高低受到n與A實際取值大小的影響較大。A是一個經(jīng)驗參數(shù),可以通過測量距離發(fā)送者1 m處的RSSI值得到。n是用來描述信號強度隨距離增加而遞減的參量,n的大小依賴具體的環(huán)境。為了得到最優(yōu)的n值,可以先放置好所有的參考節(jié)點,然后嘗試用不同的n_index值找到最適合這個具體環(huán)境的n值。
2 節(jié)點組成的定位網(wǎng)絡(luò)
2.1 CC2430/CC2431芯片介紹
CC2430/CC2431是Chipcon公司(現(xiàn)被TI收購)推出的針對IEEE802.15.4/ZigBee應(yīng)用的片上系統(tǒng),其內(nèi)部集成了工作在2.4 GHz的射頻收發(fā)器,擁有低功耗的8051 MCU內(nèi)核、128 KB可編程Flash ROM和8 KB RAM,還有A/D轉(zhuǎn)換器、定時器等。另外,CC2431片上系統(tǒng)由CC2430加上Motorola公司基于IEEE802.15.4標準的無線定位引擎組成。其定位引擎支持3~16個參考節(jié)點的定位運算,最高精度可達0.5 m;定位時間少于40μs,定位區(qū)域為64m×64m,定位誤差為3~5m,與一般軟件定位相比,具有定位速度快、定位準確度高、消耗CPU資源少的特點。
CC2430/CC2431主要外同電路圖如圖1所示。
2.2 節(jié)點構(gòu)成的定位網(wǎng)絡(luò)
ZigBee網(wǎng)絡(luò)中有一類節(jié)點作為協(xié)調(diào)器,通過串口負責與PC通信;還有一類節(jié)點是參考節(jié)點,如圖2中周邊的4個圓圈,地址分別為0x143 E、0x0001、0x3CB8、0x287B。這4個節(jié)點坐標已知,中間的圓圈(地址0x0002)為盲節(jié)點。盲節(jié)點可以根據(jù)接收信號強度,選取其中3個信號強度比較強的參考節(jié)點,采用三邊測量法估算出盲節(jié)點的坐標位置。如圖2所示,盲節(jié)點實時顯示的坐標為(6.25m,5.75m)。
圖3為CC2431定位引擎的定位流程。
2.3 最小二乘法修正距離
從式(1)可以看出,如果知道參考節(jié)點與盲節(jié)點之間的RSSI值,則可以估算出兩個節(jié)點之間的距離。然而不同的環(huán)境下可能存在不同的信號干擾,采用節(jié)點之間的RSSI值估算距離必然存在一定的誤差。這時可以根據(jù)特定的環(huán)境對測量到的距離采用傳統(tǒng)的最小二乘法進行修正。得到修正后的距離,從而可以更加精確地估算出盲節(jié)點的坐標。具體步驟如下:
①根據(jù)實際情況布置好節(jié)點,參考節(jié)點(Mi,Ni)與盲節(jié)點(Mj,Nj)的位置坐標均已知??梢愿鶕?jù)。得到實際節(jié)點之間的距離。
②根據(jù)式(1)估算出盲節(jié)點與各個參考節(jié)點之間的距離yi。
③采用最小二乘法擬合實際距離xi與估計距離yi的關(guān)系。假設(shè)兩者之間的關(guān)系為yi=axi+b,為了使所有數(shù)據(jù)偏差的平方和很小,假設(shè)??梢园裄2看作自變量a和b的二元函數(shù),要使得R2最小,分別對自變量求導,令其等于零。
根據(jù)得到的a與b的值可以擬合出修正距離與估計距離的關(guān)系Y修=a×X估+b,結(jié)合式(1)可以得到:
④布置盲節(jié)點,通過式(1)估計肓節(jié)點與參考節(jié)點之間的距離x,通過第3步擬合好的修正距離與估計距離之間的關(guān)系修正估計距離,得到修正的距離Y修。
2.4 盲節(jié)點坐標估計
選擇3個接收信號強度最強的參考節(jié)點,采用三邊測量法估計出肓節(jié)點坐標值。假設(shè)3個參考節(jié)點A、B、C的坐標分別為(ma,na)、(mb,nb)、(mc,nc),盲節(jié)點E的坐標(m,n)未知。通過2.3節(jié)4個步驟得到盲節(jié)點與3個參考節(jié)點的修正距離分別為da、db、dc。則根據(jù)兩點之間的距離公式可以得到式(5):
3 實驗結(jié)果分析
在35m×35m的區(qū)域內(nèi)布置4個參考節(jié)點,定位網(wǎng)絡(luò)控制界面如圖2所示。通過采集100個數(shù)據(jù)包,經(jīng)過重復(fù)調(diào)整,n取16、A取47時定位效果最好。通過最小二乘法擬合出修正距離與估算距離之問的關(guān)系,得到a=1.058 1.b=0.193 4。因此,根據(jù)式(4)可以得到修正距離與估計距離之間的關(guān)系。修正前與修正后的測距值如表1所列,修正前與修正后盲節(jié)點坐標估計誤差如表2所列。
從表1中可以看出,相比于修正前的估計距離,經(jīng)過最小二乘法修正后的距離更加接近于實際距離,誤差更小,從而能更加精確地估算出盲節(jié)點的坐標。從表2中可以看出,經(jīng)過修正后的距離采用三邊測量法估算出盲節(jié)點的坐標誤差要小于修正前的坐標估算誤差。
結(jié)語
ZigBee技術(shù)是一門新興的學科,在生活中的各個領(lǐng)域都有重要的作用,定位算法是ZigBee技術(shù)中的重要算法之一。本文簡要分析了RSSI測距原理,在此基礎(chǔ)上結(jié)合最小二乘法原理,對估算的距離進行修正,并在以CC2430/CC2431為核心設(shè)計的ZigBee節(jié)點上組網(wǎng)實驗。實驗表明經(jīng)過修正后的距離精度更高,對盲節(jié)點的坐標定位更加精確,修正后的定位精度符合一些常規(guī)的定位系統(tǒng)要求。