中圖分類號:P631 文獻標(biāo)識碼:A DOI:10.13810/j.cnki.issn.1000-7210.20240531
Abstract:The marineintegrated navigation systems arelimited in functionality,having problems such as the inability to be released across operation system platforms,inability to adapt to the unique displays and operations in various spatial locations such as instrument rooms, source gun control system operation rooms, bridges, and aft decks offield operation fleets.These limitation saffct production operation eficiency and make it dificult to conduct subsequent maintenance and development,and function expansion. To this end,this paper systematically summarizes:the software functional modules of the marine integrated navigation system,data interaction and collaborative work of each module,safety management of the operation fleet,management of key basic information,and specific navigation operation requirements ofeach operation team.By comparing the diferences between REST and gRPC in interface protocol conventions, transmission protocols, streaming processng and request response, the strong type and serialization,and system performance,the technical advantages of gRPC in high-concurrency and low-latency scenarios of ocean exploration are demonstrated.Meanwhile,a framework for a distributed marine integrated navigation system based on the gRPC framework is designed,and the main program and remote procedure callservice program of the integrated navigation system are developed,thereby realizing dynamic management and monitoring of other modules running in the system by a system service pro gram.The main program is responsible for the system configuration,startup,and shutdown management of
thesubmodule program of the integrated navigation system. The development practice proves that the inter grated navigation system based on the distributed system architecture has realized the deployment of the system modules in the local and remote areas,and can meet the needs of navigation operation,navigation display, and quality control of various operating locations of the fleets.
Keywords: marine seismic exploration,integrated navigation,distributed framework,REST technology,gRPC technology
方守川,易昌華,曹國發(fā),等,[J].石油地球物理勘探,2025, 60(4) : 1059-1066.
FANG Shouchuan,YI Changhua,CAO Guofa,et al.Framework design and implementation of distributed marine integrated navigation systems[J].Oil Geophysical Prospecting,2025,60(4) :1059-1066.
0 引言
目前,海洋地震勘探采集主要采用海底電纜OBC(OceanBottomCable)海洋節(jié)點OBN(OceanBottomNode)及海洋拖纜(MarineStreamer)三種方式及其三者的混合方式[1-2]。海洋勘探綜合導(dǎo)航系統(tǒng)是野外地震采集過程中放纜、海洋檢波器定位及同步采集激發(fā)控制的核心,需具備野外地震隊的生產(chǎn)計劃制定、施工設(shè)計、施工作業(yè)管理、導(dǎo)航定位質(zhì)量控制、生產(chǎn)安全管理等功能[3-5]。
近二十年以來,為了滿足海洋勘探導(dǎo)航定位作業(yè)的需要,國內(nèi)外的學(xué)者和從事地球物理勘探的工程師開發(fā)了多個用于海洋地震勘探的綜合導(dǎo)航系統(tǒng)。于志剛基于Access數(shù)據(jù)庫和VisualBasic語言開發(fā)了一套能夠用于淺海過渡帶地震勘探的導(dǎo)航軟件;方守川等開發(fā)了基于客戶及服務(wù)程序結(jié)構(gòu)、用于海洋海底電纜勘探采集作業(yè)的Dolphin綜合導(dǎo)航系統(tǒng),并詳細介紹了的其關(guān)鍵技術(shù)和系統(tǒng)細節(jié);郭功營等8介紹了Dolphin海上綜合導(dǎo)航定位系統(tǒng),并闡述了海底電纜施工作業(yè)中震源陣列導(dǎo)航定位的工作原理,及在OBC地震勘探中的應(yīng)用;胡家賦等[9]利用VisualStudio2O1O集成開發(fā)環(huán)境研發(fā)了一個基于MVC(ModeViewControl)多層次結(jié)構(gòu)設(shè)計、能夠用于海洋海底地震儀(OceanBottomSeismometer,OBS)布設(shè)和地震勘探采集的導(dǎo)航軟件。
以上這些系統(tǒng)和軟件在功能上實現(xiàn)了海洋油氣勘探節(jié)點投放和導(dǎo)航定位的基本需要,但是功能較單一,不能跨操作系統(tǒng)發(fā)布;系統(tǒng)各子程序發(fā)布、運行不適應(yīng)野外作業(yè)船隊中儀器室、震源控制操作室、駕駛臺、后甲板等各個空間位置的差異化需求;不方便系統(tǒng)安裝布設(shè);不利于各個班組作業(yè)人員掌握作業(yè)船隊運行情況;系統(tǒng)后續(xù)維護、開發(fā)難。這些系統(tǒng)要么是只能單船運行,要么就不是真正意義上的分布式系統(tǒng),不能滿足當(dāng)前野外施工中作業(yè)船隊更加數(shù)字化、智能化地統(tǒng)一指揮與管理的高要求,難以提高作業(yè)效率、降低作業(yè)風(fēng)險。為此,本文提出了基于分布式設(shè)計的可以跨越操作系統(tǒng)(Linux和Windows安裝的海洋地震勘探綜合導(dǎo)航系統(tǒng),而且容易維護升級,可用于OBN和OBC地震勘探的實時導(dǎo)航作業(yè)。
1海洋勘探綜合導(dǎo)航系統(tǒng)
如圖1所示,一套完整的能夠用于海洋地震勘探的綜合導(dǎo)航定位系統(tǒng)由高精度全球?qū)Ш叫l(wèi)星系統(tǒng)(Global Navigation Satellite System,GNSS)、電羅經(jīng)、測深儀、導(dǎo)航工作站、綜合導(dǎo)航軟件、導(dǎo)航定位接口單元(或叫同步采集控制器)、網(wǎng)絡(luò)集線器Hub、無線網(wǎng)絡(luò)通訊設(shè)備等組成。對于特定角色的聲學(xué)定位作業(yè)船還需安裝聲學(xué)定位系統(tǒng)。假如有拖帶陣列的震源船,還需安裝用于震源陣列定位的RGPS(RelativeGPS)定位系統(tǒng)。
綜合導(dǎo)航系統(tǒng)具體包括主控制程序、項目信息和坐標(biāo)系統(tǒng)管理、設(shè)備接口配置、定位網(wǎng)絡(luò)設(shè)置、測線設(shè)計、數(shù)據(jù)采集、定位網(wǎng)絡(luò)計算、導(dǎo)航控制、導(dǎo)航顯示、轉(zhuǎn)彎上線設(shè)計、自動艙、數(shù)據(jù)記錄、數(shù)據(jù)傳輸、質(zhì)量控制及地理信息管理系統(tǒng)(GeographicInformationSystem,GIS)等功能模塊。各個模塊的數(shù)據(jù)交互通過系統(tǒng)核心數(shù)據(jù)庫和進程間的通信實現(xiàn);特定的模塊產(chǎn)生特定的數(shù)據(jù)并消費由其他模塊產(chǎn)生的數(shù)據(jù)。系統(tǒng)各個模塊之間還需要進程間的事務(wù)通信,用于通知控制事件和模塊之間的協(xié)同工作。
圖1海洋勘探綜合導(dǎo)航系統(tǒng)組成

綜合導(dǎo)航軟件的主控制模塊負責(zé)啟動和停正系統(tǒng)其他子程序,設(shè)置本地和遠端數(shù)據(jù)庫服務(wù)。項目信息和坐標(biāo)管理模塊負責(zé)設(shè)置作業(yè)項目信息和坐標(biāo)基準及地圖投影類型。設(shè)備接口配置模塊負責(zé)設(shè)置GNSS、測深儀、電羅經(jīng)等設(shè)備接口,測試這些接口連接的正確性,設(shè)置作業(yè)船同步采集控制器的信號觸發(fā)通道參數(shù)等。定位網(wǎng)絡(luò)設(shè)置模塊負責(zé)設(shè)置各個作業(yè)船只的定位網(wǎng)絡(luò)的節(jié)點、觀測值及定位網(wǎng)絡(luò)的組成。測線設(shè)計模塊負責(zé)放纜、放炮及聲學(xué)定位的設(shè)計和管理。數(shù)據(jù)采集模塊負責(zé)從串口實時解析來自GNSS等導(dǎo)航定位設(shè)備的數(shù)據(jù),并提交到數(shù)據(jù)庫。定位網(wǎng)絡(luò)計算模塊負責(zé)從數(shù)據(jù)庫中讀取實時更新的導(dǎo)航定位設(shè)備數(shù)據(jù),并利用卡爾曼濾波等技術(shù)完成作業(yè)船定位網(wǎng)絡(luò)計算、放纜作業(yè)控制、實時聲學(xué)定位計算及放炮作業(yè)控制。導(dǎo)航控制、導(dǎo)航顯示、轉(zhuǎn)彎上線設(shè)計、自動舵、數(shù)據(jù)記錄、數(shù)據(jù)傳輸、質(zhì)量控制及GIS等模塊分別實現(xiàn)各自的功能。
綜合導(dǎo)航定位系統(tǒng)在海洋OBC或OBN施工采集過程中實現(xiàn)了海洋電纜放纜或節(jié)點釋放導(dǎo)航控制、海洋電纜或節(jié)點的聲學(xué)定位工作以及震源船導(dǎo)航和同步激發(fā)控制。
為了滿足野外作業(yè)隊伍安全管理的需要,船隊中每條作業(yè)船的導(dǎo)航系統(tǒng)通過建立的無線通信網(wǎng)絡(luò)(如無線網(wǎng)狀電臺組成的局域網(wǎng)絡(luò))實現(xiàn)作業(yè)船之間的數(shù)據(jù)共享和交互。每條作業(yè)船能夠?qū)ψ约旱膶?dǎo)航、定位、設(shè)備數(shù)據(jù)和作業(yè)船運行狀態(tài)進行實時監(jiān)控,也可以監(jiān)控船隊中其他作業(yè)船的導(dǎo)航、定位、設(shè)備數(shù)據(jù)和實時運行狀態(tài)。
一些非常重要的基礎(chǔ)項目數(shù)據(jù),如項目信息、坐標(biāo)基準、坐標(biāo)轉(zhuǎn)換方式、測線信息、每條作業(yè)船的定位網(wǎng)絡(luò)參數(shù)設(shè)置、導(dǎo)航定位接口設(shè)置、工區(qū)基礎(chǔ)地理信息、水下地形分布、工區(qū)油田基礎(chǔ)設(shè)施等,可以在母船進行設(shè)置和集中統(tǒng)一管理,并通過無線網(wǎng)絡(luò)發(fā)布到各船,避免系統(tǒng)中這些基礎(chǔ)數(shù)據(jù)的管理混亂,以減小野外作業(yè)過程中出錯的可能。
為了使作業(yè)人員能夠直觀了解當(dāng)前作業(yè)船的地震采集工作狀態(tài),在勘探作業(yè)船駕駛臺、導(dǎo)航員機房、后甲板及甲方監(jiān)督工作室等空間位置,都需要安裝導(dǎo)航軟件的部分模塊。比如在駕駛臺要把導(dǎo)航系統(tǒng)與作業(yè)船上的自動駕駛系統(tǒng)相連接,需要設(shè)置自動舵系統(tǒng)與導(dǎo)航系統(tǒng)之間的數(shù)據(jù)接口,并運行數(shù)據(jù)采集模塊以完成二者之間自動駕駛數(shù)據(jù)的交互;在駕駛臺當(dāng)班的船長、大副或水手等作業(yè)人員需要通過導(dǎo)航系統(tǒng)的導(dǎo)航顯示模塊了解當(dāng)前作業(yè)船與施工測線的相對關(guān)系,以保證作業(yè)船在安全條件下航行在當(dāng)前測線上及控制航行速度。導(dǎo)航員所在的儀器機房需要布置綜合導(dǎo)航系統(tǒng)的主體控制部分,導(dǎo)航員可以根據(jù)生產(chǎn)作業(yè)計劃設(shè)置或切換當(dāng)前作業(yè)測線,監(jiān)視當(dāng)前船的導(dǎo)航狀態(tài),控制導(dǎo)航定位數(shù)據(jù)的質(zhì)量,并提供給其他班組的作業(yè)人員相關(guān)作業(yè)信息以方便各個班組的作業(yè)調(diào)整。后甲板作業(yè)人員可通過導(dǎo)航系統(tǒng)的顯示模塊所提供的測線導(dǎo)航信息進行放纜、節(jié)點釋放工作或震源陣列的收放作業(yè)。甲方監(jiān)督工作室導(dǎo)航顯示模塊可以讓甲方監(jiān)督方便地了解當(dāng)前測線、作業(yè)船的作業(yè)狀態(tài)、震源陣列深度、槍壓及槍同步的質(zhì)量等信息。
所以,一個完備的綜合導(dǎo)航系統(tǒng)可以管理船隊中每條船,配置每個工作站及在工作站上布置模塊。作業(yè)船隊中船的角色有母船和子船,按其承擔(dān)的工作任務(wù)又分為放纜船(或節(jié)點船)、定位船、震源船、儀器船及其他作業(yè)船。一個船隊中母船有且只有一條,其他都為子船。一般情況下,一條船至少有1臺導(dǎo)航工作站(或計算機),這臺工作站運行系統(tǒng)的所有模塊,包括子模塊;為了滿足儀器室導(dǎo)航員對導(dǎo)航作業(yè)和質(zhì)量監(jiān)控的需要,可能存在一條船配置多臺工作站的情況,某些子模塊可以根據(jù)需要布置在另外的計算機上,而系統(tǒng)核心數(shù)據(jù)庫只能在其中1臺工作站中。這樣的現(xiàn)場作業(yè)需求,就需要分布式配置、運行綜合導(dǎo)航系統(tǒng)的各個功能模塊才能滿足。
2分布式構(gòu)建技術(shù)選型
2.1 方案介紹
根據(jù)海洋勘探綜合導(dǎo)航系統(tǒng)的需求、結(jié)構(gòu)特點和運行環(huán)境,在協(xié)議約定、傳輸協(xié)議、流式處理與請求、強類型與序列化、性能等五個方面,對REST(RepresentationalStateTransfer,表現(xiàn)層狀態(tài)轉(zhuǎn)換)和gRPC(GoogleRemoteProcedureCall,Google遠程過程調(diào)用)兩種分布式構(gòu)建技術(shù)進行了對比,以選擇合適的方案進行海洋勘探綜合導(dǎo)航系統(tǒng)的設(shè)計和構(gòu)建。
2.1.1 REST框架
REST框架是Fielding[10提出來的一種軟件架構(gòu)技術(shù),能夠最小化延遲和網(wǎng)絡(luò)通信而又最大限度地提高軟件組件實現(xiàn)的獨立性和可擴展性。
目前,根據(jù)使用RESTWeb服務(wù)的數(shù)量來看,REST近年來已經(jīng)成為最主要的Web服務(wù)設(shè)計模式[11-12]
需要注意的是,REST是設(shè)計風(fēng)格而不是標(biāo)準。REST通常基于HTTP(HyperTextTransferProtocol,超文本傳輸協(xié)議)、URI(UniformResourceIdentifier,統(tǒng)一資源標(biāo)識符)和XML(ExtensibleMarkupLanguage,可擴展標(biāo)記語言)以及HTML(HyperTextMarkupLanguage,超文本標(biāo)記語言)這些現(xiàn)有且廣泛流行的協(xié)議和標(biāo)準[13]。
REST以HTTP協(xié)議定義、約定一系列URL(UniformResourceLocator,統(tǒng)一資源定位器)來操作資源,它描述的是網(wǎng)絡(luò)中客戶端與服務(wù)端的一種交互形式。
REST框架Web服務(wù)的核心概念在于對資源的抽象,資源被URIs(UniformResourceIdentifier,統(tǒng)一資源標(biāo)識符)表征??蛻羰褂肏TTP協(xié)議發(fā)送請求給這些URIs,然后相應(yīng)的資源的狀態(tài)就可能會發(fā)生變化。
REST的一個重要特點是無狀態(tài),這意味著在請求之間沒有客戶端上下文存儲。來自任何客戶端的每個請求都包含服務(wù)所需的所有信息,并且會話狀態(tài)保存在客戶端中。
李延[4提出了基于REST架構(gòu)的Web服務(wù)設(shè)計方法,并實現(xiàn)了一個REST架構(gòu)下的Web服務(wù)原型系統(tǒng)。
2.1.2 gRPC框架
gRPC是由谷歌公司設(shè)計開發(fā),以ProtoBuf(ProtocolBuffers)序列化協(xié)議為接口定義語言、可支持眾多編程語言的分布式軟件開源框架[15]
gRPC利用允許雙向通信的HTTP2.O協(xié)議。
通過該協(xié)議,緩沖區(qū)使用二進制數(shù)據(jù)通信,以序列化、結(jié)構(gòu)化數(shù)據(jù)[16]。gRPC具有以下重要特征:
(1)開發(fā)語言豐富,可支持自前流行的眾多語言構(gòu)建服務(wù);
(2)基于HTTP2.0協(xié)議,支持雙向流,使其更加適用系統(tǒng)中客戶端和服務(wù)端之間的通信;
(3)基于IDL(InteractiveDataLanguage)定義服務(wù),能夠創(chuàng)建接口文件,并在在不同平臺下編譯接□文件,融入到系統(tǒng)開發(fā)者的工程項目中;
(4)支持ProtoBuf序列化,是谷歌獨有的一種二進制數(shù)據(jù)交互方式,與平臺無關(guān),且壓縮和傳輸效率高、語法簡單、表達能力強[17-18]
2.2 備選方案的比較
2.2.1接口協(xié)議約定
REST 在 API(Application Programming Interface,應(yīng)用程序編程接口)中定義URL唯一標(biāo)識的資源,例如/user。然后,將標(biāo)準的HTTP方法Post、Get,Put和Delete映射到CRUD(Create,創(chuàng)建;Read,讀取;Update,更新;Delete,刪除)等動作。Post用于創(chuàng)建,Get用于檢索,Put用于更新,Delete用于刪除。在處理CRUD時,雖然場景映射直接,但復(fù)雜業(yè)務(wù)需要精心設(shè)計資源模型,需要引入子資源或結(jié)合狀態(tài)碼處理異步操作,使得處理流程變得復(fù)雜。
REST和gRPC之間最大的區(qū)別之一是有效負載的格式。REST通常使用JSON(JavaScriptObjectNotation,JavaScript對象表示法)發(fā)送消息,其主要優(yōu)點是易于閱讀,并在大多數(shù)語言中得到支持。然而,JSON的主要缺點在于不是模式驅(qū)動、沒有類型、沒有版本。這些缺陷導(dǎo)致序列化問題,尤其是在故障級聯(lián)、面向微服務(wù)的體系結(jié)構(gòu)中可能帶來災(zāi)難性的后果。序列化工具集需要處理整個有效負載并推斷每個屬性的類型。
在gRPC中,基于ProtocolBuffers(Protobuf)接口定義語言,通過協(xié)議文件顯式聲明定義可遠程調(diào)用的方法集合和規(guī)范用于輸入/輸出的結(jié)構(gòu)化數(shù)據(jù)類型。通過該接口直接映射編程語言的原生方法調(diào)用,實現(xiàn)業(yè)務(wù)邏輯與通信層的無縫對接,而規(guī)避REST中HTTP方法到業(yè)務(wù)動作的間接映射問題??梢詫崿F(xiàn)多語言 SDK(SoftwareDevelopmentKit)軟件開發(fā)工具包一致性的客戶端代碼;對比REST不同團隊的HTTP端點設(shè)計差異,避免了“接口碎
片化\"問題。
2.2.2 傳輸協(xié)議
REST是基于HTTP的文本類傳輸方式,很大程度上取決于HTTP(通常為HTTP1.1)的請求—響應(yīng)模型。HTTP1.1太大且很復(fù)雜,而且HTTP1.1對延遲很敏感,每個單獨的請求都需要TCP(Trans-missionControlProtocol,傳輸控制協(xié)議)握手,并且大量的請求會對加載所需的時間造成重大損失。在大多數(shù)情況下,帶寬的持續(xù)改進并不能根本解決這些延遲問題。
gRPC使用較新的HTTP2.O協(xié)議。HTTP2.0協(xié)議是二進制的,在降低HTTP1.1中處理幀的復(fù)雜度方面有很大的改進。HTTP2.0的主要改進是使用多路復(fù)用流。單個HTTP2.OTCP連接可以支持許多雙向流。這些流可以交錯(不排隊),并且可以同時發(fā)送多個請求,而無需為每個流建立新的TCP連接。此外,服務(wù)器可以通過已建立的連接(HTTP2.0推送)將通知推送到客戶端。
2.2.3流式處理與請求—響應(yīng)
REST僅支持HTTP1.x中可用的請求一響應(yīng)模型。但是gRPC充分利用了HTTP2.O的功能,允許不間斷流式傳輸信息。gRPC支持服務(wù)器端流式處理、客戶端流式處理和雙向流式處理等多種方式。
(1)服務(wù)器端流式處理。服務(wù)器端一旦收到從客戶端發(fā)過來的數(shù)據(jù)請求,將自動發(fā)送回響消息給對應(yīng)的客戶端。客戶端從返回的數(shù)據(jù)流里一直讀取,直到?jīng)]有剩余的服務(wù)端消息為止。
(2)客戶端流式處理。客戶端向一個響應(yīng)服務(wù)器端發(fā)送多個服務(wù)請求。一旦客戶端完成消息寫入,就等待服務(wù)器端讀取這些消息并返回相應(yīng)的應(yīng)答。服務(wù)器端返回單個請求的響應(yīng),隨后就可能會自動收到每個客戶端的相關(guān)詳細信息及尾隨響應(yīng)元數(shù)據(jù)。
(3)雙向流式處理。在這種情況下,客戶端和服務(wù)器以幾乎自由的形式相互發(fā)送信息。海洋勘探設(shè)備實時數(shù)據(jù)和各個子模塊之間的通知消息的推送特別適合采用這種方式。
2.2.4強類型與序列化
REST對交換負載的結(jié)構(gòu)沒有強制要求。理論上REST消息可以發(fā)送任何格式作為響應(yīng),使用者沒有協(xié)調(diào)請求和響應(yīng)格式的正式機制。但實際上整個REST生態(tài)系統(tǒng)包括工具、最佳實踐和教程都使用JSON。JSON必須序列化并轉(zhuǎn)換為服務(wù)器端和客戶端的目標(biāo)編程語言。一方面,JSON在理論上更靈活,因為可以發(fā)送動態(tài)數(shù)據(jù),并且不必遵循剛性結(jié)構(gòu)。然而,這也容易引發(fā)運行時異常(與gRPC的強類型接口相比),文本解析開銷效率也低于gRPC的二進制協(xié)議。
gRPC服務(wù)協(xié)定使用強類型消息,這些消息從其Protobuf表示形式自動轉(zhuǎn)換為服務(wù)器上和客戶端上的編程語言。它能夠以較小的消息負載進行非常高效的序列化。
2.2.5 性能
gRPC是以HTTP2.O協(xié)議為基礎(chǔ)進行設(shè)計,與REST所采用的HTTP1. x 協(xié)議相比,具有顯著的性能優(yōu)勢。
ProtocolBuffers是一種非常高效且包裝豐富的協(xié)議格式。REST使用的JSON是一種文本格式。雖然可以壓縮JSON減少網(wǎng)絡(luò)傳輸?shù)臄?shù)據(jù)量,但是在序列化和反序列化上的性能差距,以及每次請求都發(fā)起單獨的HTTP連接的網(wǎng)絡(luò)連接開銷仍然沒有改進。
對于一些行業(yè)專用系統(tǒng)的開發(fā),大多數(shù)開發(fā)者更注重開發(fā)的效率,而不是完全遵守REST這樣的規(guī)范,真正完全遵守的場景確實也不多。
gRPC允許不同應(yīng)用程序、語言和平臺之間的無縫通信。不同的團隊可以就相互約定達成協(xié)議并獨立工作,同時由ProtoBuf提供強大的跨平臺支持實現(xiàn)靈活而又順利的集成。gRPC以API為中心,它的服務(wù)定義直接映射到程序方法,不需要額外轉(zhuǎn)換為資源驅(qū)動的建模。
對于物探作業(yè)船隊中專業(yè)服務(wù)端之間的數(shù)據(jù)通信,大部分共用網(wǎng)絡(luò)服務(wù)器不需要對外開放,只在其作業(yè)船隊的局域網(wǎng)內(nèi)部進行相互間的調(diào)用。所以,在這種實際情況下使用gRPC不僅是個不錯的選擇,而且也一定能滿足共用服務(wù)器之間相互調(diào)用對網(wǎng)絡(luò)性能和數(shù)據(jù)延時的要求。
3基于gRPC系統(tǒng)框架設(shè)計與實現(xiàn)
綜合以上REST和gRPC在協(xié)議約定、傳輸協(xié)議、流式處理與請求、強類型與序列化及性能等五個方面對比,考慮到海洋地震勘探導(dǎo)航系統(tǒng)在作業(yè)船隊安裝和發(fā)布的需要,選擇gRPC構(gòu)建系統(tǒng),如圖2所示。
首先,定義基于Protobuf的IDL(接口定義語言),協(xié)議文件的結(jié)構(gòu)化數(shù)據(jù)類型和方法:包括導(dǎo)航工作站的設(shè)置參數(shù)、導(dǎo)航工作站的狀態(tài)參數(shù)(工作磁盤,已用磁盤空間大小,總共磁盤空間大小,剩余空間大小、連接的顯示器個數(shù))系統(tǒng)模塊運行列表及子模塊運行的服務(wù)方法等。協(xié)議文件修改后使用ProtocolBuffers編譯器生成 C++ 代碼文件,該文件定義了一個完整的gRPC服務(wù)接口,支持主機和應(yīng)用的配置管理、狀態(tài)查詢及控制,以供編寫遠程過程調(diào)用服務(wù)程序。其具體操作如下:如果是在Windows平臺上,先把protoc可執(zhí)行程序放在src/mingw64/bin目錄下,或提前將此目錄加入路徑環(huán)境變量,執(zhí)行如下命令:
(1)運行協(xié)議生成命令,帶參數(shù)指定協(xié)議文件的路徑,指定生成的 C++ 代碼的輸出目錄及需要編譯的協(xié)議文件。(2)運行協(xié)議生成命令,帶參數(shù)指定生成的gRPC相關(guān)的
代碼的輸出目錄。(3)運行協(xié)議插件命令,帶參數(shù)指定gRPC代碼生成插件的路徑,生成gRPC相關(guān)的代碼。
而在linux平臺上,與Windows平臺的gRPC代碼生成命令類似,只是插件的路徑不同。其一般存在于用戶主目錄下的.local/bin目錄中。
通過以上步驟,生成4個文件,其中Dolphinpb.cc和Dolphin.pb.h,包含消息類型定義和序列化方法,Dolphin.grpc.pb.cc 和 Dolphin.grpc.pb.h,包含服務(wù)接口定義。
其次,編寫綜合導(dǎo)航系統(tǒng)遠程過程調(diào)用服務(wù)程序。將上述4個文件加入到gRPC服務(wù)程序的工程項目文件中,建立一個服務(wù)器類啟動某個網(wǎng)絡(luò)地址段和端口的監(jiān)聽主程序和子程序客戶端的請求。在主程序和子程序客戶端的開發(fā)中引入這些文件,使之能實現(xiàn)正常的請求、連接和數(shù)據(jù)發(fā)送。
完成開發(fā)的綜合導(dǎo)航系統(tǒng)模塊主要包括:主控制程序、坐標(biāo)系統(tǒng)與項目管理、實時導(dǎo)航接口設(shè)置、測線設(shè)計管理、定位網(wǎng)絡(luò)設(shè)置程序、數(shù)據(jù)采集進程、定位網(wǎng)絡(luò)計算、測線導(dǎo)航控制程序、導(dǎo)航轉(zhuǎn)向上線控制程序、導(dǎo)航顯示程序、質(zhì)量控制模塊、自動舵模塊、數(shù)據(jù)記錄模塊、空間地理信息模塊、數(shù)據(jù)傳輸模塊等。
圖2綜合導(dǎo)航系統(tǒng)框架

4 應(yīng)用效果分析
設(shè)計完成的海洋地震勘探導(dǎo)航系統(tǒng)的主體基于分布式架構(gòu)體系,實現(xiàn)了由一個系統(tǒng)服務(wù)程序動態(tài)管理(發(fā)布,啟動和停止)和監(jiān)視系統(tǒng)中運行的其他模塊。在這個體系結(jié)構(gòu)中,系統(tǒng)服務(wù)程序是預(yù)先啟動運行的,客戶程序發(fā)送任何數(shù)據(jù)請求到系統(tǒng)服務(wù)程序由gRPC實現(xiàn)。系統(tǒng)通過gRPC框架實現(xiàn)了子模塊運行在不同的機器上面,各模塊訪問自己本條船的核心中央數(shù)據(jù)庫。遠端同步其他作業(yè)船數(shù)據(jù)庫的工作由專門的通信模塊完成,使得系統(tǒng)的總體結(jié)構(gòu)清晰,數(shù)據(jù)共享和交互相對獨立于地震勘探導(dǎo)航定位的專門任務(wù)。各個模塊可根據(jù)野外作業(yè)的實際需要分布式發(fā)布在作業(yè)船隊中的各個工作空間(儀器室、震源槍控系統(tǒng)操作室、駕駛臺、后甲板等)以減低主機的負擔(dān),并方便綜合導(dǎo)航系統(tǒng)部署在作業(yè)船的各個位置、自動舵等及其他船上系統(tǒng)之間的連接布置,而有利于野外生產(chǎn)作業(yè)的監(jiān)控和監(jiān)視,如圖3所示。
設(shè)計完成的系統(tǒng)適用于單船和多船的應(yīng)用,系統(tǒng)的各子模塊可以部署在船上局域網(wǎng)內(nèi)不同的工作站上。而每個工作站(或計算機)上的綜合導(dǎo)航系統(tǒng)的入口點是主控制程序,通過主控制程序可以啟動、停正其他的所有子模塊,其中需要注意的是,如果需要遠程控制某一條作業(yè)船,同時應(yīng)該在遠程控制操作端的工作站上安裝部署遠程調(diào)用gRPC服務(wù)程序。
4.1 服務(wù)的注冊和注銷
注冊gRPC服務(wù)可以有兩種方式:一是安裝程序時自動注冊為系統(tǒng)服務(wù);二是利用命令行手動注冊。
安裝時,選擇了服務(wù)和系統(tǒng)模塊組件,程序會自動將gRPC服務(wù)注冊為系統(tǒng)服務(wù);或使用管理員權(quán)限運行CMD(Command的縮寫,即命令提示符)并執(zhí)行系統(tǒng)框架提供的注冊遠程過程調(diào)用命令scqueryrpcserver。程序卸載時會自動注銷gRPC服務(wù),也可用以下方法進行手工注銷:以管理員身份運行CMD進入程序安裝目錄下的bin目錄,執(zhí)行注銷遠程過程調(diào)用命令RpcServer.exe-u即可注銷gRPC服務(wù)。
圖3綜合導(dǎo)航系統(tǒng)船隊部署

4.2服務(wù)的啟動和停止
在系統(tǒng)啟動之前,需要首先啟動gRPC服務(wù)。使用管理員權(quán)限運行CMD并執(zhí)行啟動遠程過程調(diào)用命令scstartrpcserver啟動gRPC服務(wù);或進入Windows服務(wù)管理器頁面選中rpcserver服務(wù)右鍵Start。服務(wù)的停止,可使用管理員權(quán)限運行CMD并執(zhí)行停止遠程過程調(diào)用命令 sc stoprpcserver停止gRPC服務(wù);或進人windows服務(wù)管理器選中名字為Dolphin的服務(wù)右鍵點擊Stop。
作為其中一個客戶端程序的系統(tǒng)主控制模塊具體功能包括配置文件管理、子模塊進程管理、系統(tǒng)日志、系統(tǒng)監(jiān)視等四部分。它通過對配置文件的設(shè)置完成綜合導(dǎo)航系統(tǒng)的各子模塊的啟動、停止的管理。
即首先應(yīng)該在配置文件管理中按要求對系統(tǒng)的各子模塊做好相應(yīng)的配置,然后,通過子模塊進程管理完成對各子模塊的啟動、停止操作。
5 結(jié)束語
區(qū)別于以往的系統(tǒng),本文設(shè)計了基于gRPC框架的分布式綜合導(dǎo)航系統(tǒng),突破了以往導(dǎo)航系統(tǒng)功能較單一、不能跨操作系統(tǒng)發(fā)布、系統(tǒng)后續(xù)維護開發(fā)不易、作業(yè)人員不方便掌握作業(yè)船隊運行情況等限制,形成的新的系統(tǒng)框架具有如下優(yōu)勢:
(1)系統(tǒng)框架基于遠程過程調(diào)用gRPC分布式構(gòu)建,系統(tǒng)各個模塊可方便部署在在作業(yè)船隊的儀器室、震源槍控系統(tǒng)操作室、駕駛臺、后甲板等各個空間位置,方便了各個崗位的生產(chǎn)作業(yè)。
(2)基于gRPC技術(shù)的分布式構(gòu)建的綜合導(dǎo)航系統(tǒng)將能夠?qū)崿F(xiàn)遠程控制作業(yè),減少在船導(dǎo)航員工數(shù)量,改變海洋勘探作業(yè)隊伍的施工作業(yè)和質(zhì)量控制流程,滿足未來野外施工作業(yè)中作業(yè)船隊對更加數(shù)字化、智能化地統(tǒng)一指揮與管理的需求,從而提升作業(yè)效率并降低作業(yè)風(fēng)險。
(3)新的綜合導(dǎo)航系統(tǒng)是一個可以跨越操作系統(tǒng)(Linux和Windows)平臺協(xié)同開發(fā)的海洋地震勘探實時導(dǎo)航控制和質(zhì)量控制系統(tǒng),在開發(fā)過程和完善過程中可以綜合整合研發(fā)資源,提高開發(fā)效率,快速形成產(chǎn)品。
參考文獻
[1]時新宇,楊華臣,張建中.海洋拖纜與海底節(jié)點資料 聯(lián)合全波形反演[J].石油地球物理勘探,2024,59(5): 1058-1068. SHI Xinyu,YANG Huachen,ZHANG Jianzhong. Fullwaveform inversion for combined towed-streamer and ocean bottom node seismic data[J]. Oil GeophysicalProspecting,2024,59(5):1058-1068.
[2] 馬力,李慶春,馬見青.基于動態(tài)懲罰加權(quán)的淺水 OBN直達波與折射波初至聯(lián)合二次定位方法[J].石 油地球物理勘探,2023,58(1):75-82,177. MALi,LIQingchun,MA Jianqing.OBN secondary positioningmethod jointlyby firstbreaksofdirectand refractedwavesin shallow water based ondynamic penalty weighting[J]. Oil Geophysical Prospecting, 2023,58(1):75-82,177.
[3] 易昌華,韓華,方守川,等.海上地震勘探羅經(jīng)鳥數(shù)據(jù) 對拖纜空間位置的影響[J].石油地球物理勘探, 2015,50(5):809-814. YIChanghua,HANHua,F(xiàn)ANG Shouchuan,et al. Compass data influence on towed streamer positioning In marine seismic[J]. Ol Geopnysicai Prospecung, 2015,50(5):809-814.
[4]易昌華,方守川,曹國發(fā).基于卡爾曼濾波的海上地 震勘探導(dǎo)航定位算法[J].石油地球物理勘探,2011, 46(1) :17-21. YI Changhua,F(xiàn)ANG Shouchuan,CAO Guofa. Offshore seismic exploration navigation and positioning algorithm based on Kalman filtering[J]. Oil Geophysical Prospecting,2011,46(1) :17-21.
[5]方守川,秦學(xué)彬,任文靜,等.基于多換能器的聲學(xué)短 基線海洋電纜定位方法[J].石油地球物理勘探, 2014,49(5):825-828,845. FANG Shouchuan,QIN Xuebin,REN Wenjing,et al.Ocean bottom cable positioning based on multitransducer short baseline acoustic method[J]. Oil Geo physical Prospecting,2014,49(5) :825-828,845.
[6] 于志剛.淺灘海物探導(dǎo)航系統(tǒng)(HydroOfice)的研制 與開發(fā)[D].青島:山東科技大學(xué),2006. YU Zhigang. Study of the Shoal amp; Shallow Sea Physical Prospecting System[D]. Qingdao: Shandong University of Science and Technology,2006.
[7]方守川,趙建虎,易昌華,等.海洋電纜地震勘探綜合 導(dǎo)航系統(tǒng)設(shè)計與研制[J].科學(xué)技術(shù)與工程,2014, 14(28):163-167. FANG Shouchuan,ZHAO Jianhu,YI Changhua,et al. The design and research of OBC seismic integrated navigation system[J]. Science Technology and Engineering,2014,14(28):163-167.
[8] 郭功營,徐軍,苑占清,等.Dolphin系統(tǒng)在OBC地震 勘探震源船綜合導(dǎo)航中的應(yīng)用[J].物探裝備,2016, 26(4):268-272. GUO Gongying,XU Jun,YUAN Zhanqing,et al. The application of Dolphin integrated navigation system in OBC exploration[J]. Equipment for Geophysical Prospecting,2016,26(4):268-272.
[9]胡家賦,晉俊嶺,任東宇,等.海洋地震儀布設(shè)導(dǎo)航定 位系統(tǒng)的設(shè)計與實現(xiàn)[J].測繪科學(xué),2014,39(4):68-73. HU Jiafu,JIN Junling,REN Dongyu,et al. Design andimplementation of OBS deployment navigation and positioning system[J]. Science of Surveying and Mapping,2014,39(4):68-73.
[10]FIELDING R T.Architectural Styles and the Design of Network-based Software Architectures[D]. Irvine: University of California Irvine, 2000.
[11] SEVERANCE C, FIELDING R T. Understanding theREST style[J].Computer,2015,48(6):7-9.
[12] 王亞玲,王勝,李曉珍,等.基于面向資源架構(gòu)的Web 資源服務(wù)安全交互模型設(shè)計與實現(xiàn)[J].計算機應(yīng)用, 2015,35(A2):160-163. WANG Yaling,WANG Sheng,LI Xiaozhen,et al. Design and implementation of secure interaction model forWeb resource services based on resource-oriented architecture[J]. Journal of Computer Applications, 2015,35(A2):160-163.
[13] 程小飛.基于REST架構(gòu)的WebServices的研究與 設(shè)計[D].武漢:武漢理工大學(xué),2010. CHENG Xiaofei.Research and Design of Web Services Based on REST[D]. Wuhan:Wuhan University of Technology,2010.
[14] 李延.基于REST架構(gòu)的web服務(wù)技術(shù)研究[D].武 漢:武漢理工大學(xué),2013. LIYan.ResearchofWeb ServicesTechnologyBased on REST Architecture[D]. Wuhan:Wuhan University of Technology,2013.
[15]趙瑜顥.基于gRPC的分布式遠程過程調(diào)用框架設(shè) 計與開發(fā)[J].現(xiàn)代信息科技,2021,5(4):88-92. ZHAO Yuhao.Design and development of distributed remote procedure call framework based on gRPC[J]. Modern Information Technology,2021,5(4) :88-92.
[16] 于敞,基于微服務(wù)架構(gòu)的接口自動化測試服務(wù)與測 試報告的設(shè)計與實現(xiàn)[D].呼和浩特:內(nèi)蒙古大學(xué), 2019. YU Chang. Design and Development of Interface Automation Test Services and Test Report Generation Based on Microservices Architecture[D]. Hohhot:InnerMongoliaUniversity,2019.
[17]開源中國.gRPC官方文檔中文版V1.O[EB/OL]. (2016-02-01)[2024-11-08].http://doc.oschina.net/ grpc. Open Source China.gRPC official documentation Chineseversion V1.0[EB/OL]. (2016-02-01)[2024-11 08].http://doc.oschina.net/grpc.
[18] CHAMASCL,CORDEIROD,ELERMM.Comparing REST,SOAP,socket and gRPC in computation offloading of mobile applications:An energy cost analysis[C]. Proceedingsof the2O17 IEEE 9th LatinAmerican Conference on Communications (LATINCOM),2017:1-6.
(本文編輯:宜明理)
作者簡介
方守川教授級高級工程師,1973年生;1996年獲中國地質(zhì)大學(xué)(武漢)工程測量專業(yè)學(xué)士學(xué)位,2014年獲武漢大學(xué)大地測量學(xué)與測量工程專業(yè)博士學(xué)位;現(xiàn)任東方地球物理公司高級技術(shù)專家,主要從事石油物探測量導(dǎo)航定位、空間地理信息技術(shù)等方面的研究工作。
