黃一 ,王鴻東*,程鋒瑞 ,梁曉鋒 ,易宏
1上海交通大學海洋工程國家重點實驗室,上海200240
2上海交通大學海洋智能裝備與系統教育部重點實驗室,上海200240
3上海市中國工程院院士咨詢與學術活動中心,上海200240
無人船是集感知、控制、通信能力于一體的復雜綜合體,其設計目標為運行期間不搭載駕控人員,實現任務的能力完全依賴于所搭載的主控系統,而主控系統生成決策則需要通過船載信息管理系統提供數據支撐。
對于有人船舶的信息管理問題,楊子晨等[1]研究了將實時數據庫應用于艦船電子信息系統中的可行性,但未明確提出應用方法;寧小敏等[2]基于Web B/S架構使用Java語言開發的船舶信息集成管理系統偏重于在有人船舶上顯示供決策使用的船舶監控信息;白艷祥等[3]針對某型船舶網絡結構設計,實現了一套集成船舶以太網、CAN和RS485這3種網絡的船舶綜合網關,使全船設備與系統實現了數據共享。對于無人船的信息管理問題,目前鮮有學者開展專門研究,大部分針對無人船電子系統的研究僅限于航行控制,止步于通過總線或網關實現信息互聯,而對于其運行期間產生的海量信息的管理和復用問題探討較少。
本文將針對新型無人船信息管理系統開展研究,在總結無人船電子信息系統數據特點的基礎上,歸納無人船系統特有的信息管理要求,并據此設計適用于無人船的信息管理系統,闡述該設計的合理性和可靠性。在設計中,將時序數據庫引入信息管理系統核心,提出相應的性能測試方法,并使用無人船航行試驗數據對所設計的系統進行對比試驗,以進一步量化評估系統性能。
在傳統的無人船控制系統設計中,控制系統不僅需對傳感器返回信息進行處理計算,還需實時地向執行設備發出指令。在信息管理系統從原來的控制系統分離后,控制系統操控船上執行設備時,不再需要同時承擔實時處理無人船海量信息以及讀寫、存儲等長耗時任務,因此顯著縮短了響應時間,提高了實時性。此外,對于在多個數據運算單元間共用的一部分原始數據及中間數據,信息管理系統可以按需轉發復用,避免了多個數據運算單元重復請求信息造成無人船上網絡阻塞和重復計算而浪費算力的問題。信息管理系統的獨立還使原控制系統中的信息處理部分與其解耦,從而簡化了無人船控制系統程序編寫的難度。當需對信息處理、數據融合等能力進行升級時,無需更改控制系統,而僅需單獨升級相應的數據運算單元,從而有效提升控制系統軟件的可靠性。
基于無人船系統的實際開發[4],以數據類型為依據進行分類,無人船數據可劃分為以下6種:
1)整型數值,包括各種對精度要求一般的傳感器整數測量值或百分比值、布爾開關量、設備狀態代碼等;
2)浮點數值,以各種高精度傳感器的測量值或百分比值為主;
3)字符串型,以各種通信指令、報文為主;
4)多維矩陣,特別是航海雷達、聲吶、光學攝像頭、紅外攝像頭等設備產生用于實時計算的單幀圖像信息;
5)多媒體類型文件,以浮點數值和多維矩陣按照時序編碼后的音頻流、視頻流為主;
6)其他類型的二進制文件,例如電子海圖等。
相比傳統有人船,無人船配備了大量感知環境的傳感器,在船舶運行時,這些傳感器向分析計算傳感數據的主控系統持續發送大量上述6種類型的數據;同時,在主控系統通過數據融合方法綜合各傳感設備發回的信息時,也將產生大量上述數據。在無人船運行時,這6種類型的數據不斷產生、更新,每個數據都能直接或間接地與一個時間戳(生成或更新等)掛鉤。無論是用于無人船的調試研發,或是用于基于數據驅動的設備健康管理[5],這些數據的價值都不言而喻。然而,限于船載設備的通信能力,無人船在外海航行時無法將全部信息都傳回岸端,而僅能傳輸關鍵警報和經實時計算的聚合結果。因此,這對無人船信息管理系統提出了更高要求:無人船在海上航行的時間越長,產生的數據總量就越大,對信息存儲能力和檢索要求也越高,同時基于執行任務和成本的考慮,還應盡可能降低無人船靠岸備份和維護的頻率。
無人船信息管理系統將統籌處理和存儲無人船上產生的所有數據信息。結合前述對信息管理系統的要求,以某型無人船為例,開展信息管理系統設計,運用分布式時序數據庫、文件數據庫、船載航行數據記錄儀(即“黑匣子”)以及信息服務中間件構建信息管理系統架構,并接入船載設備(例如,通信設備、環境感知設備、監控設備和執行設備等)、數據運算單元、岸基設備,得到無人船信息管理系統拓撲圖。
使用該系統的無人船,其船內數據流動模型如圖1所示。通過使用發布/訂閱模式的消息傳輸協議,信息服務中間件可為全船信息管理系統提供數據路由功能,負責分發和讀寫各分布式數據庫及“黑匣子”的數據。按照圖1中①~⑤所示順序,模型在接收到一次新數據時的處理流程為:
1)以無人船通信接收、環境感知、監控等設備作為數據流動模型的輸入,接受其向系統發布的通信數據、環境感知數據以及設備監控數據;
2)數據運算單元向信息服務中間件訂閱實時數據,按需調取歷史數據;
3)數據運算單元進行計算,將數據融合后的計算結果交由信息服務中間件存儲;
4)基于計算結果,數據運算單元生成合適的決策及相應操控指令,發送給信息服務中間件,由其進行日志存儲,并轉發給相應的執行機構和通信發送設備;
5)以執行機構、通信發送設備等作為數據流動模型的輸出,船載設備通過向系統訂閱數據和決策指令,發送通信報文,操縱執行機構做出相應動作,控制無人船的航行。
在靠泊碼頭后,系統還可與岸基設備連接,導出儲存的運行數據,供開發人員進一步分析優化無人船的運行策略。
為實現無人船長期穩定運行,結合上文歸納的無人船數據類型特點,對信息管理系統的軟件開展相應設計,使其滿足信息管理需求。系統采用C++語言和Qt進行開發,充分保證了運行效率,同時根據實際船載計算平臺,在Linux,Windows,VxWorks,QNX等操作系統間進行遷移,因此具有較高的通用性。
1)數據存儲。
對于6種無人船數據類型,當數據發送到信息服務中間件時,中間件根據數據類型可自動判斷適宜的存儲方法。其中,第1~第3種類型的數據可很方便地結合時間戳轉化為時序數據,并存儲在分布式時序數據庫InfluxDB中;第4種類型的數據既可經降維后存儲于時序數據庫中,也可經編碼后轉存為一般的二進制文件,與第5和第6種類型的數據一起在分布式文件數據庫的輔助下分片存儲,獲得的相應文件名即可視為字符串或整型數值存入時序數據庫中。
2)通用協議接口。
無人船信息管理系統基于TCP/IP協議設計,核心網采用以太網接入,總線設備可經網關轉換后接入核心網。在應用層,系統采用MQTT協議作為發布/訂閱消息傳輸協議,滿足了設備間功能實現解耦的需求[6]。系統同時保留對HTTP協議的支持,便于后續其他設備和應用服務快速接入系統存取數據。
在分析無人船信息管理系統的數據流動模型和功能設計的基礎上,按照系統在無人船運行期間對數據及控制指令進行路由分發、存取、分析、導出等能力,設計了完備的功能。在此基礎上,對系統進行可行性分析。
1)性能分析。
系統主要依賴InfluxDB時序數據庫提供存儲和分片文件索引。借助時序數據庫的快速存儲特性,確保無人船信息實現高速存儲。同時,船上大部分數據都能直接或間接地與時間戳掛鉤。對時序數據進行了特定優化的時序數據庫,相比傳統關系型數據庫,在存儲和檢索時序數據方面具有極大優勢。
2)冗余度分析。
無人船信息管理系統配置有獨立冗余磁盤陣列(Redundant Arrays of Independent Disks,RAID),在信息服務中間件可提前設置為RAID-5或更高冗余度的RAID模式。對于運行的關鍵數據,采用船載航行數據記錄儀構成RAID-1實現鏡像存儲,確保關鍵數據不易丟失。
面向長航時無人船,系統還可設置數據自動輪轉,當超出預置數據保留期后,自動覆蓋超期數據,確保新數據得到妥善存儲,而無需人工操作。
3)系統存儲的可靠性。
在系統拓撲中,時序數據庫和文件數據庫均采用分布式配置方案,以保證系統具有足夠的數據吞吐能力。同時,系統配有RAID-5以上冗余度的存儲陣列,當一個磁盤數據損壞后,可利用剩余的數據和相應的奇偶校驗信息恢復受到損壞的數據[7],其可靠性P的算法為

式中:N為陣列磁盤數量;P0為單磁盤的可靠性。關鍵航行數據采用船載航行數據記錄儀構成RAID-1實現鏡像存儲的可靠性算法為

4)信息路由的可靠性。
系統基于TCP/IP協議設計,在底層包括了3次握手、ACK確認和超時重傳等機制,保障了傳輸的可靠性[8]。在應用層,系統除兼容HTTP協議外,還采用MQTT協議作為發布/訂閱消息傳輸協議,其本身支持3種消息發布服務質量(QoS)等級:至多一次、至少一次及只有一次[9]。上述機制充分保障了系統在復雜的電磁環境下,及時、準確地傳輸指令和數據信息。
無人船信息管理系統的性能測試主要是評估其對無人船常見數據存儲和檢索的能力。但是對上述數據類型中的第5和第6種數據,其文件管理瓶頸主要在于所選掛載分布式文件數據庫的存儲能力限制,造成系統的時序數據庫中只能存儲相應的文件名(字符串),因而對其數據的測試可視為是對分布式文件數據庫的單獨測試,無需列入無人船信息管理系統性能測試中。
在海量數據存儲過程中,通常是多個終端并行發出多條存儲指令,如果只計量單條存儲指令不僅耗時,且容易受處理器線程阻塞、存儲器緩存、網絡延遲等多種因素的影響,使存儲過程具有較大的不確定性。因此,測試數據存儲速度應關注在持續存儲請求壓力下,系統在單位時間內處理存儲請求的能力,即考量

式中,Qs為存儲成功的數據點數量;T為總耗時。對于因阻塞超時而未成功存儲的數據點,系統應在第一時間重新發出存儲請求。實測中,應預先準備好大量用于存儲的數據,根據機器性能分段發出存入系統的請求后,統計存儲全部數據耗時。
為開展數據壓縮能力測試,應在存儲過程結束后,將數據庫文件總大小(含元數據)與原始數據進行對比,并計算壓縮比

式中:Sdatabase為數據庫文件大小;Sraw為原始數據大小。對于配置了總存儲量S的存儲設備、且滿足數據平均生成速率Z<Zmax的無人船,可借此估計系統在自動輪轉功能啟用前可以完整存儲信息的最大時長:

對于已存儲的歷史數據,在需要時可將其調取以供查閱和分析。在檢索過程中,一般以某個時間段內或超過某個限值作為檢索條件。對于存儲的海量數據而言,每次分析時并不一定需要將所有數據點逐個讀取到分析程序內后再計算。對于諸如統計次數、求取平均值等簡單的聚合統計分析,可以借助數據庫內建的函數進行分析,以減輕主程序的運算負擔。通過計量從發出請求到返回聚合統計數據的時間,可以評估系統基礎聚合統計運算的能力。聚合統計用時可表示為

式中:Tquery,Tdownlaod分別為發送統計請求和下載統計結果用時,其與網絡環境關系較大,對于不同系統差距不大;Titeration為遍歷數據用時,故高速的聚合統計能力離不開高速的數據全文順序檢索能力;Taggregation為數據聚合統計計算用時,由遍歷到的每個數據點的統計運算時間累加得到。
為了測試設計的系統性能,使用某型等比例無人船自航模型(圖2)搭載1路溫度傳感器、1路三軸陀螺儀、1路三軸磁力計和2路不同精度的三軸加速度計,在湖中開展了9次航行試驗,將試驗記錄的共計13路浮點數值作為測試數據樣本。限于實驗條件以及避免網絡延遲影響,系統僅部署于單機電腦上進行性能測試。為了對照,在同一電腦上部署了已在船海領域廣泛應用[10-11]的傳統關系型數據庫MySQL進行相同測試。

圖2 用于測試的某型等比例無人船自航模Fig.2 The proportional self-propelled USV model for test
分別向原型系統和MySQL數據庫逐個存入10萬個數據點,每存入1萬個數據點后記錄用時,計算得到平均每秒存儲數據點的個數Zmax。
限于試驗條件,目前測試得到的原型系統信息存儲性能稍弱于作為對照的MySQL數據庫,但單一客戶端每秒300個數據點以上的信息存儲性能已足夠應用于現有的大部分無人船存儲航行信息及傳感信息[12-13]。考慮到測試過程中使用InfluxDB時序數據庫批量導入接口時,數據點的存儲能力可達每秒65 000個以上,原型系統的信息存儲性能在接入多設備或使用多線程并發方法進一步開發完善后還有很大提升的空間。

圖3 存儲性能Fig.3 Storage performance
將9次無人船試驗數據存入原型系統和MySQL數據庫,計算相應壓縮率。從計算結果可以看出,相比MySQL數據庫的數據壓縮,基于時序數據庫的原型系統可將原始數據文件壓縮得更小,平均壓縮率由77.92%降低至67.78%。當數據量較小時,MySQL數據庫預分配的磁盤空間反而比原始數據更大(25 368數據點組),因此,新系統可為長航時無人船保留更多的信息存儲空間,也可在將信息整體回傳時節省寶貴的通信帶寬。

圖4 信息壓縮率對比Fig.4 Comparison of information compression ratio
將測試得到的一次試驗數據1 335 439個數據點存入原型系統和MySQL數據庫中分別進行檢索和聚合分析性能測試。結果表明,得益于時序數據庫對所存入數據特別是時間戳相關的優化,基于時序數據庫的原型系統在全文順序檢索和聚合分析的性能優于MySQL數據庫,在歷史信息檢索、簡單聚合分析方面可以為無人船主運算單元減輕一定的計算壓力。
從上述性能測試結果可以看出,本文設計的無人船信息管理系統可有效滿足無人船運行期間的信息管理需求,測試方法也能客觀反映無人船信息管理系統的優勢和薄弱點。

表1 檢索及聚合分析耗時Table 1 Time consumption of retrieval and aggregation analysis
本文針對無人船運行環境和常態任務要求,結合無人船電子信息系統開發,歸納了6種無人船數據類型,設計了一套基于時序數據庫的無人船信息管理系統,并提出性能測試方法。系統由若干數據庫、信息服務中間件、船載設備、數據運算單元構成系統拓撲。借助時序數據庫處理含時間戳時序數據的優勢,實現了對信息快速存儲、壓縮存儲和快速檢索分析。系統性能測試方法經實測檢驗,表明可以為系統性能提供客觀的量化評價。無人船信息管理系統原型經測試證明,其能夠滿足無人船對持續的海量信息存儲要求,在保證檢索和聚合分析性能的前提下,信息壓縮性能相比MySQL提升了約10%。系統具有較高的可靠性和通用性,為解決長航時無人船信息存儲與通信傳輸難題提供了良好的解決方法。
目前,本文只在單機條件下針對部署的無人船信息管理系統原型進行了性能測試,后續如條件允許,可以考慮將無人船信息管理系統部署到分布式機群中進一步驗證系統性能。同時,在系統實現方面還可進一步開展優化工作。