杜志剛,儲楠,羅克
(1.中煤科工集團常州研究院有限公司,江蘇 常州 213015;2.天地(常州)自動化股份有限公司,江蘇 常州 213015)
煤礦井下是一個特殊的作業空間,位置信息對于井下安全生產作業具有重要作用。一方面,礦井作業人員位置跟蹤為考勤管理提供了有效手段,災時救援人員實時定位可保障救援行動安全可控,采掘裝備對操作人員實時位置感知可以有效保證人機作業安全;另一方面,機車位置跟蹤可提高運輸調度管理水平和生產效率,采掘裝備自身位置感知和相互位置感知是實現裝備之間協同作業的重要基礎[1]。
位置服務旨在提供目標對象精準的實時位置信息,包括位置獲取、位置傳輸和位置信息服務[2],是建立在定位基礎上的服務,井下定位系統的定位精度、實時性直接決定位置服務的成敗。然而,國內井下定位系統存在以下問題[3]:①目前大部分定位系統仍是區域定位,定位精度普遍小于3 m,容量標準是80 個并發標志卡,響應時間一般大于1.5 s,無法滿足高精度、快速移動的位置監測和服務需求。② 定位系統初期針對單一需求設計,采用單體式架構,所有業務固化在一個復雜的單體應用中,各業務之間耦合性強,可擴展性差,而井下不同應用場景要求位置服務系統必須開放服務架構。③單體式定位系統所有的業務數據存儲在同一個數據庫中,每一個業務的處理能力都受到數據庫承載能力的制約。④ 定位系統僅支持區域或巷道一維定位,智能化采掘設備不僅有水平方向運動,還有垂直方向等多自由度運動過程,人機協同安全作業需要二維或三維空間的位置服務信息。
為避免井下定位系統對位置服務的影響,本文設計了一種井下位置服務系統。該系統采用基于Docker 的微服務架構,松散各業務之間的耦合性;采用超寬帶(Ultra Wide Band,UWB)無線定位技術實現對井下目標厘米級定位,并通過數據優化算法對測距結果進行優化;引入時序數據庫,提高數據訪問能力;具有面向服務的應用層位置服務接口,可提供井下目標高精度實時位置信息。
井下位置服務系統采用基于微服務架構的開發框架[4],主要由井下位置服務基礎設施、數據驅動模塊、位置服務管理控制中間件、位置服務接口和數據庫組成,如圖1 所示。

圖1 井下位置服務系統架構Fig.1 Architecture of underground location service system
井下位置服務基礎設施主要由定位標志卡、定位基站、接收器和網關等硬件設備組成。接收器與定位標志卡實時通信,通過UWB 定位技術獲得定位標志卡到錨節點的距離信息,定位結果經算法優化后,匯聚存儲至定位基站,等待相關模塊讀取。
數據驅動模塊是系統的核心,主要實現數據巡檢、數據接入、數據優化和控制命令轉發等功能,模塊內部數據傳輸采用AES 對稱加密算法,保護系統數據安全和井下敏感數據。①數據巡檢:采用線程池管理多線程,并發巡檢定位基站,獲取目標對象基本位置信息。② 數據接入:按照相關協議和規范,對定位數據進行解析,并且按照統一數據規范寫入軟總線中。③數據優化:主要通過高精度定位數據優化算法、軌跡關鍵數據提取算法和數據壓縮算法等對定位數據進行優化,保證定位數據的精度和穩定性。④ 控制命令轉發:模塊接收上位機控制命令,并將接收到的命令信息解析成硬件設備能夠識別的命令字段,下發到定位基站,支持TCP/IP、UDP 通信協議。
位置服務管理控制中間件主要功能是對各功能模塊的數據進行管理,包括坐標管理、基站管理、狀態管理、位置信息管理、時鐘同步管理和位置服務接口權限管理等。①坐標管理:主要負責井下地標信息維護、井下巷道節點坐標及節點關系的信息維護。② 基站管理:主要提供井下基站定義、基站參數修改、基站搜索等功能。③狀態管理:負責基站實時運行狀態和電源信息狀態監控、基站電源充放電管理等。④ 位置信息管理:對井下所有標志卡的位置信息進行記錄和管理。⑤ 時鐘同步管理:查看井下各基站的時鐘同步情況和狀態,管理基站的時鐘同步間隔,保證定位數據的準確性。
位置服務接口分為數據接口和控制命令接口。數據接口主要提供基站/接收器位置信息查詢、目標對象實時位置信息查詢、目標軌跡查詢、報警信息查詢等接口;控制命令接口提供井下基站/標志卡報警下發、短信息下發、井下設備配置等接口。接口設計為WebAPI 方式,可跨平臺使用,通過Post 請求,獲取JSON 或XML 格式的數據信息,為各種應用提供實時位置服務信息。
數據庫采用MySQL+InfluxDB 混合存儲模式,系統基本配置數據、目標對象實時位置數據等存儲于關系型數據庫MySQL 中,基于時間的目標歷史位置數據、設備歷史狀態數據等使用時序數據庫InfluxDB存儲。混合存儲模式既保證了系統對基本數據的維護需求,又利用了時序數據庫處理高頻變化的海量歷史數據的性能優勢,極大提高了系統的數據處理能力。
傳統的應用程序大多采用單體式架構,即所有軟件功能集成在單獨的項目工程中,應用界面和后臺數據是分離的,性能提升和擴展主要通過后端部署數據庫集群。這種架構開發和部署比較方便,但隨著業務不斷增加,開發迭代和性能瓶頸等問題會增加維護難度。為解決這些問題,采用微服務架構,如圖2 所示。

圖2 微服務架構Fig.2 Architecture of microservice
微服務將復雜系統切分為數十個乃至上百個小服務,這些小服務帶來了語言和框架選擇上的靈活性,縮短了應用開發上線時間,可根據不同的工作負載和資源要求對服務進行獨立縮擴容。微服務采用分散管理方式,所有服務都是松耦合的,這種架構最大好處就是可以獨立開發某個業務,每個服務都有自己私有的數據庫持久化業務數據[5],無需考慮與其他服務的交互和影響。同時微服務采用的接口為WebAPI 接口[6],使得數據的輸入輸出更便捷、規范。
Docker 是一個開源應用容器,可將開發的業務、運行環境及依賴包打包成鏡像文件,利用Docker 創建容器后加載鏡像即可獨立運行和維護。容器之間完全使用沙盒機制,相互之間不會有任何接口,且封裝在Docker 中的服務具有跨平臺特性。1 臺服務器同時運行多個容器,從而可輕松地模擬出復雜的微服務架構,滿足各種業務需求。
UWB 無線定位技術因功耗低、抗多徑效果好、安全性高和系統復雜性低[7]被廣泛應用于井下高精度定位系統。基于UWB 的精確定位分為同步定位和異步定位兩大類,對應的主流定位技術分別為基于到達時間差(Time Difference of Arrival,TDOA)和飛行時間(Time of Flight,TOF)的技術[8]。TDOA 定位技術具有系統容量大、定位靈活性好等特點,但要求錨基站之間的時鐘保持高度一致,時鐘同步精度將直接決定定位精度,使得TDOA 定位技術難度大,在井下復雜條件下難以部署。
2.2.1 定位算法
井下位置服務系統采用多標簽多錨節點同時測距(Asymmetric-Double-Sided Two-Way Ranging Multi-Tag Multi-Anchor,ADS-TWR-MTMA)方法[9]進行測距,該方法基于TOF 定位技術,在多次回應非對稱雙邊雙向測距(Asymmetric-Double-Sided Two-Way Ranging Multi-Ack,ADS-TWR-MA)方法[10]的基礎上,進一步復用非對稱雙邊雙向測距過程中的測距消息,可讓多標志卡與多錨節點同時進行TOF 測距,在保證測距精度的前提下大大提高了測距效率和定位系統容量。
采用多源數據融合定位算法[11]判斷定位標志卡相對錨基站的方向。首先測量標志卡與錨基站的TOF,計算接收信號強度,然后根據標志卡歷史軌跡,采用多項式插值方法擬合、預測當前標志卡位置,根據多源數據組合判斷標志卡相對基站所在方向,最后通過加權數據融合優化定位結果。
2.2.2 數據優化算法
ADS-TWR-MTMA 方法能較有效地保證定位的實時性和穩定性,但在實際應用中,井下存在多種影響定位精度的噪聲,如定位標志卡間相互遮擋、多徑效應和非視距傳播干擾等。基于卡爾曼濾波和加權LM(Levenberg-Marquard)法的定位算法[12]能在不影響定位速度前提下,大大提高定位精度,有效降低噪聲干擾。首先,利用卡爾曼預測模型獲取先驗估計結果,根據該結果和各錨節點的測距值得到錨節點的測距權值矩陣;然后,利用權值矩陣、各錨節點的坐標和測距值,使用加權LM 法得到新的定位結果;最后,利用卡爾曼更新模型獲取最終的優化定位值。
井下位置服務系統要求井下重要區域定位信號全覆蓋,導致定位基站出現重疊覆蓋,會出現同時刻多個錨基站對移動目標定位數據信息相同或相近,加上定位數據采集速度較目標位置變化速度快,使同一目標在相鄰時間上采集的數據相同或相近。定位數據具有時空相關性[13],使得系統存在大量冗余數據,這些數據消耗大量計算、傳輸、存儲等資源。因此采用一種復雜度低的特征提取方法過濾冗余數據。例如根據定位目標一段時間內的歷史軌跡信息提取出移動特征,將出現明顯距離跳變、距離變化微小、不符合目標運動特征的數據剔除,同時不斷修正目標特征以保證定位精度。
井下位置服務系統中,移動目標的位置信息隨著時間推移不斷變化,根據時間確定的歷史位置信息數據將不斷累積,且定位于服務無人駕駛的井下位置服務系統要求實時位置信息更新頻率更高。傳統關系型數據庫注重增刪改查和事務功能,存儲采用B-tree 形式,對于隨機數據讀寫操作,會在磁盤尋道上消耗大量時間,使得關系型數據庫逐步制約著系統對海量歷史數據的處理能力。因此,系統引入開源時序數據庫對數據進行分類存儲,將系統基本配置數據、目標對象屬性信息、實時位置信息等存儲于關系型數據庫MySQL,將歷史軌跡信息等時序數據存儲于時序數據庫InfluxDB,極大地提高了系統數據處理能力。
單機版InfluxDB 采用時間結構合并樹(Time Structured Merge Tree,TSM)對時序數據的讀寫分別進行優化設計,引入series-key 的概念,根據時間特征對數據進行分類,減少冗余存儲,提高數據壓縮率[14-16]。另外,InfluxDB 采用Go 語言編寫,運行無環境依賴;內置HTTP API,方便數據讀寫和檢索;采用類SQL 查詢語句,易于開發。
受系統數據傳輸網絡環境、基站網絡通斷等情況影響,在實際應用環境中,定位數據并不會嚴格按照時間先后順序傳輸至位置服務管理控制中間件,這些延后到來的定位數據被稱為擾動數據。及時、有效地處理擾動數據,可保證目標對象區域定位的準確性,防止出現軌跡丟失和軌跡跳變。
假設位置服務系統中僅有1 個移動目標,擾動數據處理流程如圖3 所示。表PosReport 用來存儲區域定位信息,主要包括移動目標定位在某個錨節點PosId 的初次時間startTime 和末次時間endTime,數據按照startTime 升序存儲;表DetailReport 用來存儲精確定位信息,主要包括移動目標定位的錨節點PosId 和定位時間rTime,數據按照rTime 升序存儲。

圖3 擾動數據處理流程Fig.3 Disturbance data processing flow
井下位置服務系統開發完成后將以微服務形式運行在統一框架中,各服務模塊之間、服務模塊內部需要進行共享信息的數據交換、傳輸,以增加公共信息的重用性和共享性。數據傳輸需要保證數據的可靠性、高并發性等,系統引入發布訂閱模式(圖4)實現公共信息共享。

圖4 發布訂閱模式Fig.4 Publish and subscribe mode
在軟件結構中,發布訂閱是一種消息模式,包括非直接傳遞消息的發布者和接收消息的訂閱者:發布者將不同的消息進行分類,不需要知道訂閱者是誰;訂閱者只接收訂閱的分類消息,不需要知道發布者是誰。發布者與訂閱者之間通過信息中介進行交流。發布者產生消息并傳入隊列,根據消息的可被消費次數,采用至少被消費1 次的方式,確保消息能被處理。訂閱者在消費完消息后,需要有確認機制,將確認消息返回隊列,同時消費失敗的消息將被重新放回隊列。
在發布訂閱模式中,提供了一對多的消息發布機制,實現了模塊之間消息的異步傳輸,降低了各模塊的耦合度,同時使得系統具有更好的擴展性、靈活性。
系統接口設計采用WebAPI 方式實現,任何匿名用戶只要知道接口的URL,就可以模擬HTTP 請求訪問服務接口,從而驅動底層設備甚至修改數據庫,因此必須考慮接口的安全性。Bearer 驗證是HTTP協議標準驗證,隨著開放授權(Open Authorization,OAuth)協議而流行,為資源擁有者(Resource Owner,RO)、資源服務器(Resource Server,RS)和客戶端(Client)三者之間提供了一個安全可靠的協議標準[17]。OAuth 授權驗證基本流程如圖5 所示。具體步驟如下:①Client 請求RO 的授權,請求中包含請求資源路徑、Client 身份等,RO 批準授權并將“授權證據”發給Client。② Client 將“授權證據”發給授權服務器(Authorization Server,AS),請求訪問令牌(Access Token,AT),AS 驗證通過后,將AT 發給Client。③Client 攜帶令牌訪問RS 上的資源,RS 驗證令牌有效性后為Client 提供服務。

圖5 OAuth 授權驗證基本流程Fig.5 Basic process of OAuth authorization verification
Bearer 驗證中訪問令牌的頒發和驗證完全由自身應用程序控制,不依賴于系統和Web 服務器,采用的編碼方式為JWT(JSON Web Token)。JWT 作為在網絡應用環境間傳遞聲明而執行的基于JSON 的開放標準(RFC 7519),可以進行跨語言支持,結構簡單,字節占用很小,可放在HTTP 請求的Header 中,便于傳輸,且JWT 是自我包涵的,不需要在服務端保持會話信息,非常易于應用的擴展。
井下位置服務系統在山東能源兗州煤業鮑店煤礦和陜煤渝北煤業曹家灘煤礦進行了應用,經過大量測試優化,取得了良好效果。通過井下位置服務系統提供的高精度移動目標實時位置信息,工作面限員監測系統能夠及時將區域人員信息反饋至井下信號牌,實現超員預警報警,提高了煤礦安全保障能力;應用于工作面液壓支架、轉載機等大型機械的人機接近保護裝置根據井下位置服務系統提供的人員移動趨勢動態調整定位周期,定位精度達0.3 m,人員接近到閉鎖響應時間不大于500 ms,在危險區域人員接近監測方面取得了較好效果;輔助運輸系統通過井下位置服務系統提供的人員、車輛實時位置信息,實現了車輛超員/超速報警、車速控制、紅綠燈控制、車內人員信息可視化展示等功能;自動駕駛系統通過井下位置服務系統提供的車輛實時位置信息,實現了車速自動控制、障礙自動躲避、危險預判預警等功能。
通過井下位置服務系統提供的井下各類目標(人、車輛和裝備)實時位置信息,為工作面限員監測系統、人機接近保護裝置、輔助運輸系統、自動駕駛系統提供了基礎數據支撐。今后將在提高定位數據精度和實時性、豐富位置服務接口、提高系統穩定性等方面做進一步研究,使井下位置服務系統滿足不同場景多種目標的定位跟蹤、數據溯源、調度管理等要求。