倪 昱,蘇 濤,孫功武,李新光
(中國船舶科學研究中心 深海載人裝備國家重點實驗室,江蘇 無錫 214082)
現代計算機軟硬件技術的飛速發展,為仿真技術的發展奠定了堅實的基礎,仿真系統得到了越來越廣泛的應用。建立仿真系統對于ROV等水下機器人主要具有兩方面的作用:一方面可以在仿真環境下開展功能驗證,盡早發現系統中存在的問題,降低水池或海上試驗的風險;另一方面可通過仿真系統對操作人員進行模擬訓練,大幅降低培訓成本并保證培訓的安全性[1-2]。
國內外在ROV仿真系統的研究和應用已經取得了不少成果。加拿大GRI公司開發了仿真系統Vortex ROV,為ROV操作人員提供模擬培訓;國內哈爾濱工程大學也基于Vortex建立了一套功能相對齊全、模擬效果逼真、滿足仿真要求的ROV仿真系統[3]。
以往ROV仿真的研究及應用通常采用純虛擬仿真技術,主要用于模擬培訓。為了對ROV控制系統的軟硬件架構、程序邏輯、數據接口、可靠性等進行更加有效的驗證,中國船舶科學研究中心研究了ROV半實物仿真平臺的技術方案,并實現了自主研發的觀測級ROV的半實物仿真系統。
本文建立的仿真系統理論上可用于各種纜控潛器(ROV),這里主要針對某觀測級ROV,如圖1所示。該觀測級ROV用于海南省重大科技計劃項目,由中國船舶科學研究中心自主研制,目前已完成水池試驗和海上試驗。

圖1 觀測級ROVFig. 1 Observation level ROV
圖2為觀測級ROV半實物仿真系統的架構,左側虛框內為實物部分,即ROV控制系統,右側虛框內為虛擬的ROV仿真系統。

圖2 ROV仿真系統架構Fig. 2 Framework for the ROV simulation system
ROV控制系統實物硬件上包含顯控計算機和航控嵌入式計算機。顯控計算機采用Intel x86-64平板電腦,安裝Windows10操作系統,外接操控手柄作為輸入設備。顯控計算機運行顯示控制程序,主要用于水面人機交互,可以發送用戶的操控指令,并對ROV的狀態數據和攝像機視頻進行顯示。航控嵌入式計算機采用arm 64的嵌入式計算機,安裝嵌入式Linus操作系統,運行航行控制程序,主要用于ROV航行運動控制及狀態數據采集,可根據ROV當前狀態和操控指令解算推進電機轉速。
ROV仿真系統的硬件是仿真計算機,采用Intel x86-64圖形工作站,配置nvidia RTX 2 080顯卡,安裝Windows10操作系統,主要用于運動仿真和視景仿真。其運行運動仿真程序基于國產多領域建模仿真軟件MWorks實現,可根據推進電機轉速實時求解出ROV的位置和姿態;運行視景仿真程序基于跨平臺視景仿真軟件Unity3D實現,可模擬攝像機/燈光設置,并根據ROV的位置和姿態進行視景實時渲染。
ROV半實物仿真系統軟件的信息流如下:
1)顯示控制程序將操控指令發送給航行控制程序,并接收航行控制程序采集的ROV狀態信息;
2)航行控制程序將推進電機轉速發送給運動仿真程序,并將觀察設備控制指令發送給視景仿真程序;
3)運動仿真程序將產生的位置姿態數據發送給航行控制程序和視景仿真程序;
4)視景仿真程序將視景渲染產生的視頻發送給顯示控制程序。
ROV半實物仿真系統中,顯控計算機、航控嵌入式計算機、仿真計算機通過高速以太網進行連接,其網絡數據通信通過OPC UA協議實現[4]。航控計算機的航行控制程序中包含OPC UA服務器,其建立了通信數據的OPC UA信息模型,顯控程序和仿真程序作為OPC UA客戶端對信息模型進行讀寫操作,以實現數據獲取或者指令發送。相對于傳統TCP,UDP等通信協議,使用OPC UA進行網絡數據通信,軟件之間耦合度更低,更易于系統集成調試。仿真計算機內部的運動仿真程序和視景仿真程序,通過內存映射文件技術進行數據共享,實現進程間的數據通信。
該觀測級ROV的運動仿真根據水下機器人的六自由度運動方程[5](式(1)為動力學平衡方程,式(2)為運動學轉換方程)進行計算,同時考慮了水流、波浪等環境影響,其中水動力系數根據CFD模擬計算獲得[6]。

其中:M為ROV慣性矩陣;C(v)為ROV科氏及向心力矩陣;D(v)為ROV流體阻力矩陣;g(η)為由重力和浮力組成的回復力矩陣;τ為ROV推進器提供的推力;C(v)=CRB+CA;ξ為環境干擾力,ξ∈R6×1;vξ=v?vd
ROV的動力學求解在MWorks軟件上實現,MWorks采用多領域統一建模語言Modelica,支持基于方程的陳述式建模,相對于基于傳統的因果建模更適于表達復雜系統的物理結構,其實現流程如圖3所示。

圖3 動力學求解Modelica實現流程Fig. 3 Implementation process of dynamic solution with Modelica
觀測級ROV運動控制中最重要的是定深和定向功能。航行控制程序對深度、航向這2個自由度進行閉環控制,首先讀取自由度反饋值,計算自由度偏差,然后通過控制算法得到自由度位置控制量,最后解算出6個推進電機的推力分配和電機轉速[7]。控制算法使用PID算法(式(3)),其控制參數需要在實際實驗中進行調整。

圖4為定向測試的仿真實驗結果。t=0時設開始下潛,到達6 m時啟動自動定深。實驗結果表明定深功能正常,能以當前值定深或改變目標值后重新定深。

圖4 定深測試的仿真實驗結果Fig. 4 Simulation results of depth control
圖5為定向測試的仿真實驗結果。t=0時設置目標航向值270°,啟動自動定向;然后取消自動定向;再設置目標航向值300°,啟動自動定向;最后設置定向目標值90°。實驗結果表明定向功能正常,能以當前值定向或改變目標值后重新定向。

圖5 定向測試的仿真實驗結果Fig. 5 Simulation results of yaw control
Unity3D引擎具有開放性好、支持跨平臺等優點,目前在虛擬現實、視景仿真等領域得到廣泛的應用。圖6為基于Unity3D的觀測級ROV視景仿真實現流程。
1)場景對象建模

圖6 視景仿真流程圖Fig. 6 Flow chart of visual simulation
視景仿真首先需要給ROV和其他場景對象建模。在設計過程中已經用CATIA軟件制作了該觀測級ROV幾何模型。將此幾何模型導入到三維建模軟件3DS MAX中,進行模型層級關系調整和曲面網格簡化,并增加表面材質、紋理信息得到貼圖模型[8]。因為Unity3D中采用的是左手坐標系,在3DS MAX中需要將模型沿X軸旋轉90°,以保證視景模型在導入Unity3D后初始歐拉角為0°。為了增加視景仿真的真實感,可以在場景中增加其他對象,包括魚、珊瑚、水草、海葵、海膽等海洋動植物,在3DS MAX可以通過創建AEC對象來創建,也可以下載現有的3DS MAX動植物模型。場景對象建模完成后,保存成FBX文件格式。
2)搭建水下和水面場景
將場景對象FBX文件導入Unity3D后,搭建水下和水面場景,主要任務是水下地形地貌、水下和水面視景效果的生成和展現。Unity3D包含了地形編輯Terrain工具,而真實的地形數據一般通過數字高程模型(DEM)進行描述,Unity3D展示真實地形需要在Terrain中導入DEM數據[9]。具體過程如下:首先通過Global Mapper等地圖軟件將DEM數據保存成文本格式,然后將絕對的高度值轉換成Terrain需要的高度差值,最后對terrain.terrainData賦值完成高程數據導入。在Terrain中還需要進行貼圖以實現更真實的地形地貌效果。水下和水面的視景效果通過Unity3D的插件AQUAS Water實現,該插件可以設置水下的霧效果、氣泡效果、能見度、光學折射效果等屬性,也可以設置水面的水面顏色、波浪紋理和強度等屬性。
3)確定場景對象展示
通過C#腳本二次開發,Unity3D可通過內存映射文件從運動仿真程序讀取當前時刻、觀測級ROV的位置、姿態、速度、角速度等數據。當運動仿真程序更新頻率太低時,可在當前時刻位置、姿態的基礎上,加上速度/角速度與時間間隔的乘積進行修正。為避免讀取數據阻塞影響視圖的渲染效率,需要通過獨立的線程實現數據讀取,而不是在Unity3D主線程的Update()函數中實現。
在Unity3D中可設置多個攝像機,實現第一人稱視角和第三人稱視角的轉換。當采用第一人稱視角時模擬真實攝像機,需讀取OPC UA的攝像機焦距、云臺旋轉角度等參數改變攝像機設置;當采用第三人稱視角時,可通過C#腳本實現第三人稱攝像機跟隨ROV自動轉動。Unity3D還需要讀取OPC UA的燈光亮度,以該改變場景中的燈光設置。根據攝像機/燈光設置,按ROV和其他場景對象的三維位姿將其投影到二維平面,可確定實際展示的場景對象。
4)視景實時渲染及輸出
Unity3D完成視景實時渲染并輸出到流媒體服務器,通過H264/265格式進行視頻壓縮編碼,然后以RTSP流媒體協議傳輸到顯控計算機,模擬攝像機的視頻顯示。
本文研究和實現了觀測級ROV半實物仿真系統,該系統能模擬ROV在水中的運動,并具有逼真的視景展示效果,其運動控制功能通過了仿真實驗驗證。該系統基于OPC UA協議建立半實物仿真架構,軟件耦合度較低,方便進行調試和驗證。后續將進一步研究機械手、導航設備、聲吶設備等的模擬仿真,以提升半實物仿真系統的完整性和真實性。