夏書娟,苗曙光,李晨晨,劉 想,張 岳,汪徐德
(淮北師范大學 物理與電子信息學院,安徽 淮北 235000)
長期以來,我國的能源特點是“富煤少氣”,煤炭資源約占世界煤炭總資源的11.1%,在國民經濟中占有舉足輕重的地位[1]。隨著煤礦開采的不斷深入,環境越來越惡劣,時常會發生瓦斯、煤塵、透水等災害,井下人員的安全問題備受關注。建設可靠的井下人員定位系統是防范事故發生、減少人員傷亡、提高煤礦事故營救效率的重要保障。隨著網絡技術智能化的發展,以ZigBee為代表的無線傳感器網絡(wireless sensor network,WSN)的應用領域越來越廣,如軍事應用、工廠監測、農業生產、智能家居、醫療護理和煤礦井下等領域。本文設計了基于RSSI算法的井下人員定位系統,在不增加錨節點成本的情況下提出了一種基于卡爾曼濾波的閾值優化算法。該系統優勢在于成本能耗低、硬件設備少、抗干擾能力強,能較好地滿足煤礦井下場景的需求。
定位系統主要由錨節點、定位裝置、協調器和監控管理中心組成,如圖1所示。
(1)監控管理中心。監控管理中心主要用于分析協調器發來的各個錨點與人員的位置信息,通過算法計算出人員的具體位置并顯示出來。在必要時還可通過監控管理中心找到距離人員最近的錨節點,并下發報警信號。
(2)協調器。協調器主要用于將錨節點發來的數據經過編碼打包的方式通過以太網上發給監控管理中心,并在接收到管理中心下發的報警信息時,立即給對應的錨節點發送報警信號。
(3)錨節點。錨節點主要用于接收定位裝置發送的請求信號,通過信號強度轉化的RSSI值計算出節點與定位人員的距離,并將數據上發給協調器,在接收到報警信息后會立即給定位人員發送報警信號。
(4)定位裝置。定位裝置主要佩戴在井下人員的身上,通過不斷地發送定位請求給錨節點,將自己的具體位置告訴監控管理中心。在接收到錨節點發送的報警信號后會立即通過聲光報警裝置發出報警提醒人員。

圖1 井下ZigBee定位系統框圖
系統以CC2530作為錨節點、人員定位裝置、協調器的主控。將錨節點安裝在井下隧道旁,當攜有定位裝置的人員經過時,定位裝置會向附近的錨節點發送請求信號,接著錨節點會把接收到的信號強度轉化為距離值,并通過多跳的傳輸方式進行逐級傳遞,使距離信息匯總至協調器,再由協調器借助以太網上傳到井上的監控管理中心。監控管理中心通過處理各個節點與定位人員的距離,利用加權質心定位算法計算出人員位置,并顯示出來。總體流程如圖2所示。

圖2 總體流程圖
主要用到的硬件資源:電源模塊、CC2530單片機、無線通信模塊、 聲光報警和OLED顯示模塊,如圖3所示。

圖3 定位節點組成框圖
(1)電源模塊:為定位節點提供電源,CC2530單片機工作電壓一般處于2.6 ~ 3.6 V,為保障單片機以及其他模塊的正常工作,選用了3.3 V穩壓芯片作為系統供電模塊。
(2)CC2530單片機:由TI公司生產,用于ZigBee的片上系統[2],芯片結合了ZigBee協議棧,具有中斷、定時器、看門狗、串口、高精度ADC、DMA等多種功能外設,在本設計中通過使用內部12位高精度ADC采集信號強度并轉化為RSSI;將RSSI值通過算法計算得到距離信息并存儲在CC2530的Flash中;CC2530擁有高性能的RF收發器和增強型的8051微處理器[3],具有信號無線傳輸、數據分析處理等功能。
(3)RF天線接口:用于增強信號定向式傳輸和信號接收,通過天線接收人員定位裝置發出請求信號,計算RSSI進一步轉化為距離信息,再發送給協調器。
(4)聲光報警:通過在監控管理平臺給人員下發報警信號,人員定位裝置接收到報警信號會立即通過聲光的方式實現報警。
(5)OLED顯示模塊:通過OLED顯示電源電量,人員定位裝置可以顯示人員所處位置,在接收到報警信號后可以顯示報警信息。
井下工作面人員定位系統關鍵的定位技術主要包括:RSSI測距算法、卡爾曼濾波算法、加權質心定位算法。
采用對數-距離損耗模型,利用信號值的損耗來計算信號傳播的距離[4]:
(1)
將RSSI值轉化為距離:
(2)
式中:d(d′)是收發端之間的距離;d0是錨節點間的參考距離;RSSI(d)表示錨節點接收到的強度值;RSSI(d0)表示理想環境下信號傳輸距離為d0時錨節點接收到的強度值;n為路徑損耗系數;wσ是服從零均值高斯分布的隨機變量[5]。
由于信號環境等干擾因素,采集到的RSSI值中含有大量噪聲,采用卡爾曼濾波進行除噪處理,將RSSI值中的突變或異常數據濾除。將采集到的信號值輸入到以下系統方程中,通過預測和更新,得到下一時刻的狀態準確值。
狀態方程:Xk=AXk-1+BUk+Wk
觀測方程:Zk=HXk+Vk
式中:Xk是濾波后k時刻的RSSI值;A為狀態轉移矩陣,表示預測過程,取1;B為控制矩陣,取0;Uk稱為控制輸入向量;Zk是k時刻測量的RSSI值;H表示從狀態量到觀測的轉換矩陣取1;Wk和Vk分別表示過程和測量噪聲,均為高斯白噪聲[6]。
卡爾曼濾波基本迭代過程:
(1)向前推算狀態變量:基于上一時刻(k-1時刻)的最優估計值預測k時刻的先驗估計,并加上外部控制量的修正。
X(k|k-1)=AX(k-1|k-1)+BUk
(3)
式中:X(k-1|k-1)是上一時刻的最優結果[7];X(k|k-1)是k時刻的結果。
(2)向前推算誤差協方差:基于上一時刻(k-1時刻)的不確定性(后驗估計協方差)預測k時刻的先驗估計協方差,并加上外部環境的干擾。
P(k|k-1)=AP(k-1|k-1)AT+Q
(4)
式中:P(k|k-1)是X(k|k-1)的協方差;P(k-1|k-1)是X(k-1|k-1)的協方差;Q是Wk(過程噪聲)的協方差[7]。
(3)計算卡爾曼增益:基于預測部分和測量部分的兩個高斯分布的結合。
K=P(k|k-1)HT(HP(k|k-1)HT+R)-1
(5)
式中:R是Vk(測量噪聲)的協方差,一般可以觀測到,是已知條件。
(4)觀測變量更新估計:預測和測量的殘差結合卡爾曼增益一起修正預測,得到最優估算X(k|k)。
X(k|k)=X(k|k-1)+K(Zk-HX(k|k-1))
(6)
(5)更新測量協方差:
P(k|k)=P(k|k-1)-KHP(k|k-1)
(7)
這是卡爾曼算法的一次濾波過程,如圖4所示,X(k|k)為新的最優估計,將X(k|k)和P(k|k)放到下一個預測和更新方程中不斷迭代。

圖4 卡爾曼濾波算法過程圖
對通過卡爾曼濾波處理后的RSSI值從小到大進行排列,即RSSI,1≤RSSI,2≤RSSI,3≤…≤RSSI,n,確定其中位數MRSS:
(8)
由于中位值附近誤差信號影響,在中位數中增加一個閾值,用于優化RSSI值。取值方法:不同RSSI值分別與中值求差,將差值平方求和,取平均值即閾值:
Ti=(RSSI,i-MRSS)2
(9)
(10)
接著使用誤差的閾值對權值進行優化:若某個RSSI值位數之差的平方(方差)小于閾值,則權值由閾值(Tavg)決定[8];若方差大于閾值,則權值由方差(Ti)決定。RSSI測量值的權值定義:
(11)
將該組的每個RSSI值分別與對應的權值相乘再求和,得到最終的RSSI值。
(12)
三角形狀加權質心定位算法在質心算法的基礎上通過給每個錨節點分配不同權值的方法,進一步提高定位精度,即錨節點離未知節點越遠其權值越小[9-10]。設未知節點到錨節點的距離分別為dai、dbi、dci。
第i個未知節點O估計坐標為(xi,yi),計算公式:
(13)
為了驗證改進算法的性能,使用Matlab軟件進行仿真實驗,選定區域為在100 m × 5 m的區域,將20個錨節點均勻分布在區域長邊框,以此來模擬井下巷道。設路徑損耗因子為5,通信半徑為10 m,進行仿真實驗50次,取結果的平均值。當錨節點為20個時,將實際值、質心定位、加權質心定位估計值進行對比,仿真結果如圖5和6所示。
卡爾莫濾波改進后的加權質心算法的定位誤差明顯小于質心定位的算法誤差。質心定位的最大定位誤差距離為4.3 m,集中分布在1~3.2 m,平均定位誤差在2.047 m;加權質心算法的最大定位誤差距離為1.8 m,集中分布在0.3~1.5 m,平均定位誤差在0.594 m,定位精度提高了70%左右。為了評估錨節點密度對質心定位算法和加權質心定位算法的影響,增加一組錨節點為40個進行仿真如圖7和圖8所示。質心定位受錨節點數量影響較大,在40個錨節點情況下,平均定位誤差為1.27 m;加權質心定位受錨節點數量影響較小,平均定位誤差為0.539 m。

圖7 錨節點為40個時的定位坐標 圖8 定位誤差
對ZigBee的井下人員定位系統進行了研究與設計,系統以CC2530作為主控芯片,實現了井下人員的實時定位與監控。針對RSSI信號容易受到噪聲、多徑傳播、障礙物阻擋等影響,且在計算過程中存在信息丟失的問題,提出了一種基于卡爾曼濾波的閾值優化算法。相較于傳統的質心定位算法,改進后的定位算法減小了定位誤差,明顯提升了定位精度,且不依賴于錨節點的數量,有效縮減了錨節點的硬件成本,同時也提高了定位的相對穩定性。