劉 夏 莫樹培,2 羅 浩 陳 明
1(貴州工業(yè)職業(yè)技術學院電子與信息工程學院 貴州 貴陽 550008)
2(中南大學信息科學與工程學院 湖南 長沙 410000)
煤礦井下人員定位系統(tǒng)是《煤炭安全規(guī)程》中規(guī)定必須安裝的安全避險“六大系統(tǒng)”之一,定位系統(tǒng)的可靠性、實時性和定位精度,對提高煤礦安全保障能力具有重要作用。
隨著國家對煤礦安全生產(chǎn)重視,國有大中型煤礦都采用以有線工業(yè)以太網(wǎng)為核心骨干網(wǎng)的煤礦綜合自動化系統(tǒng),各種設備都通過網(wǎng)絡進行數(shù)據(jù)傳輸,可在此基礎上搭建井下人員無線定位系統(tǒng)。無線定位[1]主要有到達時間定位[2]、到達時間差定位[3]、三角定位[4]和DV-Hop定位[5]和指紋定位等定位方法。其中指紋定位[6]通常分為離線階段(即離線建立指紋數(shù)據(jù)庫)和定位階段(即在線匹配指紋估算位置)。目前用于指紋定位算法有貝葉斯分類算法、神經(jīng)網(wǎng)絡算法、加權(quán)K近鄰算法和動態(tài)K值加權(quán)算法等。利用貝葉斯分類算法[7]可較好實現(xiàn)定位,但概率計算需要大量統(tǒng)計工作,在定位時計算復雜,對硬件要求較高。神經(jīng)網(wǎng)絡算法定位[8]效果好,但結(jié)構(gòu)復雜,收斂速度慢,容易陷入局部極小值問題。加權(quán)K近鄰算法[9](WKNN)是將目標點與K個樣本點之間的信號空間距離為權(quán)重對其坐標進行加權(quán)處理,從而得到目標點的位置坐標。該算法具有很好的魯棒性和普適性,但K為固定值,通常是交叉驗證或統(tǒng)計得到,并非對所有樣本點都是最優(yōu),會出現(xiàn)把離目標點實際距離較遠的樣本點帶入計算,從而影響定位精度。動態(tài)K值加權(quán)算法[10](EWKNN)是動態(tài)地選擇值,但需要計算全部樣本點,計算量較大,定位實時性差。
針對上述問題結(jié)合煤礦井下特殊環(huán)境,本文提出了離線階段利用K-means++算法對所有樣本點進行聚類建立離線指紋數(shù)據(jù)庫;定位階段利用校準補償器離線和定位階段RSSI的變化量,實時補償目標點RSSI值,再通過動態(tài)WKNN改進算法和離線指紋數(shù)據(jù)庫對目標點進行位置估算。經(jīng)實驗證明在煤礦井下特定的環(huán)境中,本文提出算法運算時間減少,定位精度得到提升,平均定位誤差為1.67 m。因此K-means++和動態(tài)WKNN自適應指紋定位算法更適應煤礦井下人員定位。
本文實驗條件為貴州某煤礦井下965 m工業(yè)以太網(wǎng)已覆蓋的巷道。在工業(yè)以太網(wǎng)基礎上搭建無線局域網(wǎng)絡,從而降低建造成本,并能快速建成井下無線定位系統(tǒng),其結(jié)構(gòu)如圖1所示。
圖1 井下無線指紋實時定位系統(tǒng)結(jié)構(gòu)圖
由圖1可知井下無線實時定位系統(tǒng)由地面機房和井下系統(tǒng)組成。地面機房由服務器、交換機和展示系統(tǒng)等設備組成;井下系統(tǒng)由本安型AP終端、自制校準補償器和無線終端等設備組成。
實現(xiàn)井下無線定位系統(tǒng)所涉及到的關鍵技術包括井下巷道無線網(wǎng)絡覆蓋、數(shù)據(jù)鏈組網(wǎng)技術、無線終端設計和人員運動軌跡電子地圖等。
煤礦井下電氣設備必須滿足《煤礦安全規(guī)程》相關要求才能使用。為此AP終端選用本質(zhì)安全型的無線設備,無線信道選取頻段2.4 GHz,同時限制發(fā)射功率不能超過100 mW。
煤礦井下巷道空間狹小、表面粗糙、分支較多、斷面面積大小不一等地理因素會影響到無線信號傳播。而巷道中分布有電纜、水管、鐵軌和機械設備,當它們工作時會產(chǎn)生嚴重噪聲,并對無線信號傳播進行干擾。按常用無線網(wǎng)絡布置方法,不能實現(xiàn)井下巷道無線網(wǎng)絡全覆蓋,為此引入虛擬力算法[11]對無線覆蓋進行優(yōu)化。
首先在實驗井下巷道中按照一定的間距隨機布置個AP節(jié)點。假設在實驗區(qū)域中每個AP節(jié)點都受到其他AP節(jié)點的力作用,則每個AP節(jié)點受到作用力的合力Fα,可表示為:
(1)
式中:Fαβ為第β個對第α個AP節(jié)點的作用力,F(xiàn)αγ為第α個AP節(jié)點的引力,F(xiàn)αθ為實驗區(qū)域邊界對第α個AP節(jié)點的約束力。
設第α個AP節(jié)點的位置坐標為(xα,yα),鄰居節(jié)點的位置坐標為(xβ,yβ),節(jié)點之間距離為dαβ可以表示為:
(2)
AP節(jié)點之間距離的閾值為dth;如AP節(jié)點之間距離小于dth,說明節(jié)點之間距離過近,需要調(diào)整AP節(jié)點的坐標,調(diào)整量move可以表示為:
move=(dth-dαβ)/2
(3)
設實驗區(qū)域邊界與AP節(jié)點距離的閾值為dbth;如AP節(jié)點之間距離小于dbth,說明節(jié)點太靠近邊界,需要調(diào)整AP節(jié)點的坐標,調(diào)整量可以表示為:
(4)
虛擬力算法對無線覆蓋進行優(yōu)化過程如下:
步驟1在實驗區(qū)域內(nèi)所有N個AP節(jié)點的位置坐標和MAC地址進行集合得到node,初始化α=1。
步驟2計算節(jié)點α與鄰居節(jié)點β之間距離dαβ。若dαβ>dth,則進入下一步;否則節(jié)點α通過式(3)計算需要調(diào)整量move,并更新集合node。
步驟3計算節(jié)點α與區(qū)域邊界之間距離dbα。若dbα>dbth,則進入下一步;否則節(jié)點α通過式(4)計算需要調(diào)整量move,并更新集合node。
步驟4α=α+1。若α>N,則進入下一步;否則跳轉(zhuǎn)到步驟2。
步驟5判斷覆蓋程度。若滿足要求,則算法結(jié)束;否則增加1個AP終端,N=N+1,初始化a=1,跳轉(zhuǎn)到步驟2。
經(jīng)過虛擬力算法對井下巷道無線覆蓋進行優(yōu)化,可以將AP與AP的間距基本控制在85 m內(nèi),實現(xiàn)井下測試巷道無線網(wǎng)絡全覆蓋。
無線網(wǎng)絡是搭建在煤礦工業(yè)以太網(wǎng)基礎上,所以必須設計適合井下定位系統(tǒng)且支持移動節(jié)點的MAC協(xié)議。為此本文系統(tǒng)采用MS-MAC協(xié)議[12],可以處理沖突,還能減小網(wǎng)絡延遲,確保數(shù)據(jù)傳輸?shù)膶崟r性。
當工業(yè)以太網(wǎng)內(nèi)有多個終端同時發(fā)送數(shù)據(jù)時,會出現(xiàn)數(shù)據(jù)沖突。引入競爭避免算法到MS-MAC協(xié)議中,可消除信道競爭和數(shù)據(jù)擁塞問題。
MS-MAC協(xié)議充分考慮無線終端移動特性,可利用節(jié)點密度和距離信息選擇嚇一跳轉(zhuǎn)發(fā)節(jié)點,降低路由跳數(shù)和傳輸時延。
無線終端由鋰電池供電,采用內(nèi)置天線,方便井下作業(yè)人員隨身攜帶。該終端是采集井下人員所處位置的相關信息數(shù)據(jù),其工作原理為利用ESP8266EX芯片采集井下各個AP節(jié)點的RSSI值、IP地址和MAC地址,由主控芯片對信息數(shù)據(jù)進行處理后,再通過無線網(wǎng)絡發(fā)送給服務器[13]。
校準補償器由井下供電模塊[14]進行供電,采用外置天線,可安裝在井下巷道,用于采集井下巷道無線信號變化量。
在硬件設計時,首先將無線終端和校準補償器合二為一,可減少防爆測試次數(shù),從而降低制作成本。其次考慮天線使用環(huán)境不同,在電路中設計了內(nèi)置天線和外置天線接口。最后根據(jù)使用方式不同,設計了井下電源模塊和鋰電池模塊兩種不同的供電方式。在實驗中可根據(jù)設備使用方式不同,利用跳線排插,選擇天線和供電方式,以滿足在各種環(huán)境下使用,具體硬件電路組成如圖2所示。
圖2 硬件電路組成
自制無線終端和校準補償器經(jīng)過防爆測試,完全滿足井下設備本質(zhì)安全性的要求。
根據(jù)煤礦井下實時人員定位需要,使用編程環(huán)境為Python,數(shù)據(jù)庫為MySQL?,F(xiàn)有井下人員定位系統(tǒng)僅僅只能定位在某個區(qū)域范圍[15],還未在電子地圖上實現(xiàn)動態(tài)井下人員運動軌跡。在系統(tǒng)軟件設計時,增加井下人員軌跡數(shù)據(jù)庫,流程如圖3所示。
圖3 生成人員軌跡數(shù)據(jù)庫流程圖
由圖3可知,當目標點通過定位算法完成物理位置估算后,再與井下地理信息數(shù)據(jù)進行比對最終生成人員軌跡數(shù)據(jù),并存放到井下人員軌跡數(shù)據(jù)庫。管理人員通過網(wǎng)絡調(diào)用人員軌跡數(shù)據(jù)庫,可實時掌握井下人員具體坐標位置,并能在電子地圖顯示動態(tài)井下作業(yè)人員的運動軌跡。當災難發(fā)生時,可為救援工作提供有效數(shù)據(jù)支持[16-17]。
基本K-means聚類算法[18]隨機選定初始中心點會很容易造成算法最終收斂到局部最優(yōu),使算法未達到全局最優(yōu)。在初始化階段完善對初始值的設定,可以提高算法的性能,使得算法具有更強的生命力。
Arthur等提出K-means++聚類算法[19],有效解決了初始值的選擇難題,從而提高算法穩(wěn)定性。K-means++聚類算法選擇初始中心點方法是:先考慮到數(shù)據(jù)樣本集內(nèi)所有樣本的分布情況,選取初始的中心點之間距離要盡可能遠,這樣可以避免較大的簇被誤劃分或者幾個較小的簇被誤合并的問題。
先設所有采樣點的數(shù)據(jù)集合P={x1,x2,…,xP},隨機選取一個初始中心點為C1,剩余點集合P′,求剩余點到中心點之間的距離,采用歐幾里得度量可表示為:
(5)
把計算出來的全部距離相加:
(6)
K-means++算法流程如下:
輸入:所有數(shù)據(jù)點P,聚類個數(shù)K
輸出:K個簇的中心點
隨機選取一個數(shù)據(jù)點作為第一個初始中心點;
repeat
由式(5)求得每個點與中心點距離得到D(xi),并保存成一個數(shù)組;
通過式(6)將所有點的距離相加得到Sum;
在Sum的范圍內(nèi)隨機R;
for (n=1,R>0,n++)R=R-D(xn);
點D(xn)作為下一個中心點;
until選取出K個簇的中心點
end
由于產(chǎn)生的隨機閾值不同,計算出來的中心點就會不同。算法每次運算都會產(chǎn)生不同中心點,所以簇的中心點具有很強的多樣性,同時也保證中心點的質(zhì)量。
使用K-means++聚類算法得到每個簇的中心點作為聚類的初始化中心點,再通過K-means算法計算出K個簇的數(shù)據(jù),從而完成聚類,整個算法具有很強的魯棒性,促使聚類更加穩(wěn)定。
利用K-means++聚類算法建立離線指紋庫是定位系統(tǒng)的一部分;雖然K-means++聚類比K-means聚類用時更多,但在實時定位階段時不需要對這一部分進行計算,因此算法增加的計算成本可以不用考慮到系統(tǒng)實時性上。
自適應補償法基本思想是首先通過目標點RSSI信息數(shù)據(jù)計算出安裝在井下巷道最近兩個校準補償器;其次利用這兩個校準補償器離線階段和定位階段的RSSI信息數(shù)據(jù)計算出兩個階段之間的平均變化量;最后通過補償公式對目標點的RSSI值進行線性補償,完成對目標點的實時校準。
校準補償器兩個階段之間RSSI值的平均變化量可直接反映出井下巷道電磁環(huán)境的時變特性,因此可以實時修正目標點的RSSI數(shù)據(jù)。
無線信號在空間傳播模型[20]為:
P(d)=P(d0)-10αlg(d/d0)+ξ
(7)
式中:α為無線信息衰減因子;ξ為高斯分布的隨機變量且均值為零;P(d0)為經(jīng)過單位距離后的路徑損耗,通常d0為1;P(d)為經(jīng)過距離d后的路徑損耗。
由式(7)可以看出無線信息在空間中傳播是非線性的,但在井下實驗條件中,巷道環(huán)境相對固定,選擇校準補償器是距離目標點最近兩個,且對目標點補償RSSI值變量相對較小。因此為提高定位系統(tǒng)實時性,降低計算量,可把對目標點RSSI值校準看作線性補償[21]。其具體自適應補償法如下:
用歐式距離計算出目標點到各個校準補償器的距離,選取兩個歐式距離最小的校準補償器設為CC1和CC2,其離線階段的RSSI值集合數(shù)據(jù)設為:
其定位階段的RSSI值集合數(shù)據(jù)設為:
CC1 on={R11,R12,…,R1n}
CC2 on={R21,R22,…,R2n}
求CC1離線和定位階段之間接收到各個AP節(jié)點RSSI的變化量,可表示為:
(8)
求CC2離線和定位階段之間接收到各個AP節(jié)點RSSI的變化量,可表示為:
(9)
求CC1和CC2平均變化量,可表示為:
ΔRi=(ΔRCC1i+ΔRCC2i)/2i=1,2,…,n
(10)
對目標點接收到各個AP節(jié)點RSSI值進行實時補償,可表示為:
(11)
加權(quán)K近鄰算法WKNN根據(jù)井下特殊環(huán)境,目標點位置不同,選擇鄰近點也不同。若K值過大,則可能會將較遠的無益鄰近點包含進來;若K值過小,則可能會將較近的有益鄰近點排除在外,從而影響到系統(tǒng)定位精度。但如果值固定則無法避免上述問題[22]。為此文獻[10]提出了動態(tài)K值加權(quán)算法(Enhanced Weighted K-Nearest Neighbor,EWKNN),算法思想是通過設定一個閾值,避免K值過小,并能消除歐式距離較大的參考點,從而動態(tài)確定K值,提高系統(tǒng)的定位精度。但EWKNN算法是對整個指紋庫中所有的樣本點都進行距離計算,計算量較大,顯然不適合實時定位要求。
針對上述問題,本文提出基于K-means++聚類的動態(tài)WKNN改進算法,具體算法如下:
(1) 根據(jù)K-means++聚類把所有樣本點聚類成K個簇,K個簇的中心點集合為C,經(jīng)過補償過目標點的RSSI集合為T′。
用歐式距離計算出目標點T′到各個簇的中心點C的距離,選取歐式距離最小的簇,假設這個簇為F簇。再計算目標點T′與F簇所有樣本點的距離,可表示為:
(12)
式中:Fij為F簇中第i個樣本點接收到第j個AP節(jié)點的RSSI值,N為AP節(jié)點的數(shù)量,L為F簇全部樣本點的數(shù)目。
(2) 通過設定一個閾值RT,保留Hi中小于等于RT中的樣本點,設G為保留下來樣本點數(shù)目,并把各樣本點按照升序進行排列,得到最小距離H1和最大距離HG。計算H1到各個保留樣本點的距離差,可表示為:
si=Hi-H1i=2,3,…,G
(13)
(3) 計算保留點距離差的平均值,可表示為:
S=(s2+s3+…+sG)/(G-1)
(14)
通過計算保留距離差si小于等于距離差的平均值S的樣本點,過濾距離差較大的樣本點,保留下來樣本點的數(shù)目就是K值。
(4) 最后用信號距離進行加權(quán)估算位置,可表示為:
(15)
動態(tài)WKNN改進算法每次估算目標點位置時,都會生成動態(tài)K值,過濾距離遠的樣本點,確保系統(tǒng)定位精度;基于K-means++聚類的動態(tài)WKNN改進算法因只計算離目標點最近的簇中的所有點,所以相比EWKNN算法減少運算時間,提升定位實時性。
井下無線實時指紋定位分為離線階段和定位階段,具體定位流程如圖4所示。
圖4 系統(tǒng)定位流程圖
可以看出,離線階段的主要任務是采集足夠多采樣點建立離線指紋數(shù)據(jù)庫。具體流程為無線終端采集采樣點處接收各個AP節(jié)點RSSI信息數(shù)據(jù),并傳送到離線原始數(shù)據(jù)庫中。采樣點RSSI的平均值與人工測量的物理位置坐標進行組合Pi,通過這種組合方式把P個采樣點的數(shù)據(jù)都存入到離線原始數(shù)據(jù)庫;啟動K-means++聚類程序?qū)﹄x線原始數(shù)據(jù)庫中所有采集點的數(shù)據(jù)進行聚類,計算出K個簇的中心點,再利用K-means聚類算法和K個簇的中心點進行聚類,最后建立K個簇的離線指紋數(shù)據(jù)庫。
在采集采樣點的同時,各個校準補償器也采集離線階段的RSSI值,通過無線網(wǎng)絡傳送到離線補償數(shù)據(jù)庫中。對各個校準補償器的RSSI信息數(shù)據(jù)求平均值,存入到離線補償數(shù)據(jù)庫,待定位階段補償時調(diào)用。
定位階段的主要任務通過算法和指紋庫估算出目標點物理位置。具體流程為目標點的無線終端采集接收各個AP節(jié)點RSSI信息數(shù)據(jù),通過無線網(wǎng)絡傳送到實時定位數(shù)據(jù)庫中。與此同時,各個校準補償器也傳送數(shù)據(jù)到定位補償數(shù)據(jù)庫中,具體采集數(shù)據(jù)方法和離線階段一樣。啟動自適應補償程序,計算出目標點歐式距離最小的兩個校準補償器,調(diào)用其離線和定位階段的RSSI值計算出變化量,對目標點RSSI值進行實時補償。然后啟動動態(tài)WKNN改進程序,把目標點補償后的RSSI值通過動態(tài)WKNN改進算法和離線指紋數(shù)據(jù)庫估算出目標點物理位置。再與井下地理信息數(shù)據(jù)融合生成人員軌跡數(shù)據(jù),并存放到人員軌跡數(shù)據(jù)庫,完成實時定位。管理人員可實時調(diào)看井下人員運動軌跡,第一時間掌握井下人員狀態(tài)。
根據(jù)煤礦井下巷道環(huán)境特點,共計965 m的巷道選取回風巷、切眼、運輸巷和聯(lián)絡巷為測試點,進行實驗,如圖5所示。
圖5 系統(tǒng)測試工程平面圖
由圖5可知運輸巷巷道彎曲不利定位,因此在運輸巷中安裝4個校準補償器,回風巷中安裝2個校準補償器,聯(lián)絡巷和切眼各安裝1個校準補償器,共8個校準補償器用于對目標點的RSSI值進行實時補償。
根據(jù)井下巷道截面寬度,設計并定制一種可拆卸由尼龍棒組成日字格的塑料架子,長寬3 m×1.5 m,間隔1.5 m,每次能同時采集6個采樣點。在實際采樣過程中采樣點間距基本控制在1.5~2 m之間,每個采樣點采集10次以上RSSI數(shù)據(jù),本次測試一共采集1 826個采樣點。采樣完成后,由系統(tǒng)將原始信息數(shù)據(jù)庫中所有采樣點數(shù)據(jù)通過K-means++聚類算法程序生成離線指紋數(shù)據(jù)庫。
定位階段由作業(yè)人員帶著無線終端從回風巷起點開始行徑,以2 m/s速度走完測試路段,到達聯(lián)絡巷終點。通過多次行走獲取482個目標點的信息數(shù)據(jù)存放到實時定位數(shù)據(jù)庫中。
針對井下強時變性會引起較大定位誤差,把目標點未經(jīng)補償和實時補償?shù)腞SSI值進行定位比較,如圖6所示。
圖6 補償定位精度圖
由圖6可知目標點RSSI值經(jīng)過動態(tài)補償后,定位效果更好,定位精度得以提升。計算兩條曲線可得,未經(jīng)補償?shù)膭討B(tài)WKNN改進算法定位精度為2.01 m,實時補償?shù)膭討B(tài)WKNN改進算法定位精度為1.67 m,定位精度提高了16.92%。
對系統(tǒng)定位性能進行檢驗,分別利用WKNN算法、EWKNN算法和本文算法進行定位實驗,結(jié)果如圖7所示。
圖7 算法定位精度圖
由圖7可知本文算法在3 m內(nèi)定位精度明顯比EWKNN算法和WKNN算法高。計算三條曲線可得,WKNN算法定位精度為2.85 m,EWKNN算法定位精度為2.11 m,本文算法定位精度為1.67 m。
對系統(tǒng)實時性能進行檢驗,分別利用KNN算法、WKNN算法、EWKNN算法和本文算法進行定位實驗,結(jié)果如表1所示。
表1 算法實時性比較
由表1可知本文算法比EWKNN算法在運算時間大幅減少,比WKNN算法運算時間略有增加,但本文算法比WKNN算法定位精度提高了41.75%,比EWKNN算法定位精度提高了20.85%。從而驗證了本文提出K-means++和動態(tài)WKNN的自適應指紋定位算法更適合煤礦井下無線指紋定位。
本文在EWKNN算法基礎上提出了基于K-means++聚類和動態(tài)補償WKNN改進算法,經(jīng)過井下實際測試,相對于EWKNN算法無論是在定位精度還是定位實時性方面都有顯著提高。本文將定位信息和井下地理信息數(shù)據(jù)結(jié)合,使定位更有針對性,作業(yè)人員定位可視性更好。通過自適應補償法,可實時補償目標點的RSSI值,減小環(huán)境對定位影響,從而使指紋定位算法能自適應井下多變電磁環(huán)境。在后繼工作中,進一步對系統(tǒng)進行優(yōu)化,對算法進行改進,在性能不變前提下逐步減少采樣點數(shù)量。