曹鵬飛
(天津中德應用技術大學 智能制造學院,天津 300350)
無線傳感器網(wǎng)絡(Wireless Sensor Networks,WSN)是一種無線網(wǎng)絡,主要利用傳感器來實現(xiàn)信息的采集并進行分布式傳導[1]。在WSN應用中,ZigBee技術具有近距離、低復雜度、自組織、低功耗、低數(shù)據(jù)速率和低成本的特點,因此成為WSN的一種主要傳輸方式。WSN已被廣泛應用于智能家居、智能制造、智能交通等領域。其中,定位技術是關鍵技術之一,因此是研究的一個主要方向。
對于室內定位采用的算法,按照信號測量技術進行分類,主要分成兩大類:一類是基于非測距的定位算法,另外一類是基于測距的定位算法[2]。采用RSSI的定位算法是基于接收信號強度和距離之間的變化關系進行定位計算,與其他測距定位算法相比,無需為了進行高精確的時間測量和角度測量而添加其他硬件設備,一方面降低了技術實現(xiàn)的難度,另一方面又降低系統(tǒng)的生產(chǎn)成本,利用現(xiàn)有的無線網(wǎng)絡就可以實現(xiàn)有效的定位,因此得到了廣泛的應用[3]。
本文設計的WSN定位系統(tǒng)采用RSSI定位方法實現(xiàn)定位。系統(tǒng)由包括未知節(jié)點、錨節(jié)點和協(xié)調器節(jié)點的ZigBee網(wǎng)絡組成,通過CC2530硬件設備實現(xiàn)網(wǎng)絡節(jié)點功能,未知節(jié)點的RSSI信號被發(fā)送給錨節(jié)點,再被轉發(fā)到協(xié)調器節(jié)點,經(jīng)由協(xié)調器節(jié)點傳送到上位機,經(jīng)過上位機終端軟件處理后,可以實現(xiàn)對RSSI值到距離數(shù)據(jù)的轉換和位置結果顯示,從而實現(xiàn)對位置節(jié)點的實時定位功能。
無線信號傳輸一般可采用簡化的信號模型,計算距離基站d處的信號強度PL的公式如式(1)所示:
PL=A-10×n×lg(d)
(1)
其中:A為無線收發(fā)節(jié)點相距1 m時接收節(jié)點接收到的無線信號強度值。n是衰減指數(shù),表示路徑長度和路徑損耗之間的比例因子,其值跟建筑等障礙物的結構和采用的材料密切相關。A和n的取值與具體使用的硬件節(jié)點和無線信號傳播的環(huán)境密切相關,可通過測試進行調整。
三邊測量法的基礎數(shù)學原理是確定未知節(jié)點通信范圍內的3個錨節(jié)點后,選擇錨節(jié)點作為圓心,節(jié)點距離作為半徑,可以得到3個圓,未知節(jié)點位于3個圓的交點處。
3個圓中心A、B、C三點為錨節(jié)點,P為未知節(jié)點。假設P的坐標為(x,y),3個錨節(jié)點的坐標依次為(x1,y1)、(x2,y2)、(x3,y3),P與A、B、C的距離依次為d1、d2、d3,分別以(x1,y1)、(x2,y2)、(x3,y3)為圓心,d1、d2、d3為半徑做圓,3個圓的交點即為(x,y),距離與坐標的關系如式(2)所示:
(2)
通過求解式(2),可以得出未知節(jié)點坐標如式(3)所示:
(3)
平均值濾波是指通過采集定位節(jié)點的若干RSSI值,然后取這些數(shù)據(jù)的算術平均值。通常在實際測量時,一組數(shù)據(jù)需要測量足夠多的 RSSI值,由于環(huán)境的復雜性和無線信號的不穩(wěn)定性,這些RSSI值變化較大,缺乏一致性,任選其中一個數(shù)據(jù)都不能準確表示RSSI值,因此可以選擇平均值濾波的方法來獲得較為合理的RSSI值。
平均值濾波公式如式(4)所示。
(4)
其中,PL表示RSSI值,m表示測量的個數(shù)。當m取值較小時,采集到的數(shù)據(jù)實時性和準確性較差。當m取值較大時,雖然可以減少數(shù)據(jù)的偶然性,但是需要測量更多的數(shù)據(jù),又會增加通信的成本,并且在處理大擾動時效果不夠理想。因此,從提高實驗準確性和降低通信成本等因素考慮,需要選取一個較為合適的m值。
卡爾曼濾波(Kalman Filtering,KF)算法是依據(jù)線性系統(tǒng)狀態(tài)方程,利用系統(tǒng)輸入輸出數(shù)據(jù),對系統(tǒng)狀態(tài)實現(xiàn)最優(yōu)估計。最初目的是用于估計隨機過程的參數(shù),隨后基于其自身特點被廣泛應用于解決各種最優(yōu)濾波和最優(yōu)控制等問題[4]。一般來說,卡爾曼濾波算法包括2個基本特點:(1)卡爾曼濾波器是自適應濾波器,其解是一種遞推計算;(2)卡爾曼濾波的數(shù)學公式通過狀態(tài)空間的概念進行描述。
受噪聲的影響,系統(tǒng)狀態(tài)作為一個隨機量,難以得到精確的數(shù)值,卡爾曼濾波依據(jù)某種統(tǒng)計模式,將對系統(tǒng)進行多次觀測后得到的數(shù)據(jù)進一步處理后實現(xiàn)對實時系統(tǒng)狀態(tài)的估計和預測。
在卡爾曼濾波中,狀態(tài)方程表示如式(5)所示:
x(k)=Φx(k-1)+ω(k-1)
(5)
測量方程表示如式(6)所示:
y(k)=Hx(k)+v(k)
(6)
式中:x(k)表示狀態(tài)值,y(k)表示測量值,Φ為狀態(tài)轉移矩陣,H為系統(tǒng)測量矩陣,ω(k)為輸入白噪聲,v(k)為觀測噪聲。
卡爾曼濾波過程包括預測過程和修正過程,在濾波過程中,修正狀態(tài)估計值是濾波后的RSSI值,測量值是實驗測得的RSSI值[5]。主要計算公式如下:
預測狀態(tài)估計值如式(7)所示 :
X(k+1|k)=ΦX(k|k)
(7)
一步預測協(xié)方差矩陣如式(8)所示:
P(k+1|k)=ΦP(k|k)ΦT+ΓQΓT
(8)
求濾波增益矩陣如式(9)所示:
K(k+1)=P(k+1|k)HT[HP(k+1|k)HT+R]-1
(9)
狀態(tài)更新如式(10)所示:
X(k+1|k+1)=X(k+1|k)+K(k+1)ε(k+1)
ε(k+1)=Y(k+1)-HX(k+1|k)
(10)
協(xié)方差更新如式(11)所示:
P(k+1|k+1)=[In-K(k+1)H]P(k+1|k)
X(0|0)=μ0P(0|0)=P0
(11)
其中,X(k+1∣k)是利用上一狀態(tài)預測下一時刻的結果;X(k∣k)是已知測量值y(k)時,k時刻的修正狀態(tài)估計值;Γ為系統(tǒng)噪聲驅動矩陣;R為系統(tǒng)觀測噪聲方差陣;Q為系統(tǒng)過程方差陣。
系統(tǒng)硬件組成如圖1所示。
圖1 系統(tǒng)硬件組成
在本定位系統(tǒng)中,首先需要選擇合適的ZigBee網(wǎng)絡處理芯片。根據(jù)綜合性能的比較,選擇TI公司的CC2530芯片。該芯片結合一個高性能的RF收發(fā)器與一個8051微處理器,包含8 kB的RAM以及最大256 kB閃存。此外,這款芯片集合了ZigBee 協(xié)議棧(Z-Stack),極大方便了用戶的開發(fā)。ZigBee網(wǎng)絡由錨節(jié)點、未知節(jié)點和協(xié)調器節(jié)點組成,不同節(jié)點采用的處理器都為CC2530芯片,可在軟件中設置為不同的功能模塊。ZigBee網(wǎng)絡節(jié)點的硬件模塊包括核心板模塊和底板模塊,其中核心板模塊由處理器模塊、射頻接口模塊、時鐘電路模塊、串口通信模塊等組成;底板模塊由電源模塊、USB 接口模塊和傳感器接口模塊等組成。
在核心板電路模塊中,處理器采用CC2530芯片,主要完成ZigBee協(xié)議的處理和采集數(shù)據(jù)的處理。CC2530 芯片中集成Z-Stack 協(xié)議棧,可以提供完整的ZigBee 網(wǎng)絡協(xié)議應用。射頻接口模塊可以外接天線,提高無線信號的可靠性和穩(wěn)定性。時鐘電路模塊用于提供電路工作時鐘。串口通信模塊用于和外界的串口通信,利用USB 轉串口電路實現(xiàn)。
在底板電路模塊中,電源模塊將外接電源或電池電源通過電壓轉換芯片產(chǎn)生不同電壓值,以便對電路中各模塊進行供電。USB 接口模塊既能對電路板進行供電,同時可以完成處理器程序的下載。傳感器接口模塊可用于外部不同類型的傳感器。
ZigBee網(wǎng)絡中的協(xié)調器節(jié)點通過串口將采集到的RSSI數(shù)據(jù)傳遞給上位機,同時可將上位機的控制指令下發(fā)到ZigBee網(wǎng)絡終端節(jié)點。上位機處理采集到的數(shù)據(jù),根據(jù)定位算法計算未知節(jié)點的位置坐標并將結果進行顯示。
上位機是整個定位系統(tǒng)的信息處理中心,能夠實現(xiàn)人機交互,顯示未知節(jié)點的定位信息。其通過串口實現(xiàn)上位機和ZigBee網(wǎng)絡協(xié)調器之間的通信,能夠接收ZigBee無線通信系統(tǒng)中未知節(jié)點發(fā)送的RSSI數(shù)據(jù)信息,根據(jù)錨節(jié)點的固定位置信息,并結合上文提到的定位算法進行位置計算。上位機軟件采用Visual Studio軟件實現(xiàn),結合模塊化的思想進行開發(fā),具有易于擴展和易于移植等優(yōu)點。
在本定位系統(tǒng)中,ZigBee網(wǎng)絡中的錨節(jié)點和未知節(jié)點都是終端節(jié)點,其中包括1個需要計算坐標信息的未知節(jié)點,4個錨節(jié)點作為參考節(jié)點,此外還有1個協(xié)調器節(jié)點用來管理ZigBee網(wǎng)絡和給上位機上傳RSSI數(shù)據(jù)。
在實際測試時,設定一個8 m×8 m的固定區(qū)域,在此范圍內進行未知節(jié)點的定位測試,4個錨節(jié)點放置于指定位置,未知節(jié)點的放置位置不能超出錨節(jié)點的有效通信范圍。系統(tǒng)運行后,移動未知節(jié)點的位置,在上位機軟件中能夠實時顯示對應坐標值。測試時,每個錨節(jié)點讀取100次未知節(jié)點的RSSI數(shù)據(jù)值作為一組測試值,通過協(xié)調器節(jié)點發(fā)送給上位機軟件進行中值濾波和卡爾曼濾波處理后,再進行定位計算,從而得到未知節(jié)點的位置信息。
當對比實際坐標測量值時,無濾波處理時測量值和實際值偏差較大,而采用濾波算法的定位效果更好,其中采用卡爾曼濾波算法的應用結果優(yōu)于采用中值濾波算法的應用結果。
本文設計的基于RSSI的節(jié)點定位系統(tǒng)結構簡單,組網(wǎng)靈活,操作方便。本研究利用ZigBee網(wǎng)絡采集未知節(jié)點的RSSI值,實現(xiàn)上位機與協(xié)調器模塊之間的通信,再通過卡爾曼濾波算法對RSSI數(shù)據(jù)值進行處理,最后采用三邊定位算法進行距離計算,得到未知節(jié)點的位置信息,通過采用卡爾曼濾波算法進行數(shù)據(jù)處理能夠獲得更高的定位精度。