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