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