綦志剛, 楊 帆, 李 冰
(哈爾濱工程大學(xué)智能科學(xué)與工程學(xué)院,哈爾濱 150001)
國內(nèi)許多高校在船舶動力定位的教學(xué)中缺乏相關(guān)實驗環(huán)境和平臺,學(xué)習(xí)理論知識只能通過課本,難以直觀了解動力定位平臺各個系統(tǒng)的結(jié)構(gòu)和工作原理[1]。采用虛擬仿真技術(shù)建立模擬海洋環(huán)境及受仿真數(shù)據(jù)驅(qū)動平臺的虛擬仿真系統(tǒng)具有重要意義。通過在虛擬仿真系統(tǒng)中切換不同視角觀察系統(tǒng)可靠性和平臺航行的實際狀態(tài),完成可視化的實驗虛擬仿真。
袁偉等[2]搭建了關(guān)于動力定位系統(tǒng)的半實物仿真平臺,通過該平臺驗證了儲油輪的控制效果,為研究船舶運動控制技術(shù)等提供了試驗平臺。李婷云等[3]使用仿真軟件和虛擬仿真技術(shù)構(gòu)建了船舶動力定位系統(tǒng),使觀察者可多方位觀察,為船舶建設(shè)前期提供論證。Midhin等[4]使用仿真軟件設(shè)計了無人水下航行器的仿真系統(tǒng),該系統(tǒng)可在虛擬環(huán)境中進(jìn)行模擬海流等外部干擾和優(yōu)化控制器,提高水下機(jī)器人的定位性能和控制精度。
本文以動力定位平臺為核心,搭建虛擬仿真系統(tǒng),模擬場景中的運動狀態(tài),實現(xiàn)動力定位平臺推力優(yōu)化分配和平臺運行的可視化,驗證推力分配的合理性,加強實驗教學(xué)效果。
動力定位平臺虛擬仿真系統(tǒng)是一個人機(jī)交互平臺,具有虛擬現(xiàn)實(Virtual Reality,VR)技術(shù)的沉浸式、交互性特點[5],通過強大的幾何體和材質(zhì)等實時渲染技術(shù)構(gòu)建逼真的三維虛擬場景,使系統(tǒng)可更貼近真實環(huán)境。
動力定位平臺虛擬仿真系統(tǒng)由虛擬仿真平臺、數(shù)據(jù)管理系統(tǒng)、數(shù)值仿真平臺組成,如圖1 所示。用戶使用VR設(shè)備與虛擬仿真系統(tǒng)中的UI交互,設(shè)置海浪參數(shù)和平臺的運動位置;通過數(shù)值仿真平臺進(jìn)行仿真。數(shù)據(jù)管理系統(tǒng)主要實現(xiàn)數(shù)值仿真平臺與虛擬仿真平臺間的數(shù)據(jù)通信、讀取、轉(zhuǎn)化處理等工作。系統(tǒng)運行后可以可視化的觀察平臺三自由度的運行效果及推進(jìn)設(shè)備旋轉(zhuǎn)情況[6]。

圖1 虛擬仿真系統(tǒng)構(gòu)成圖
虛擬仿真系統(tǒng)設(shè)計主要是平臺三維場景和交互界面;數(shù)據(jù)傳輸和處理;動力定位的數(shù)學(xué)模型和推力分配算法及控制器。
(1)三維場景。三維場景建模主要是建立動力定位平臺的三維模型和海洋環(huán)境。收集動力定位平臺的資料,包括平臺的外觀及尺寸、平臺甲板建筑物的樣式等。利用Solidworks、Blender 軟件依據(jù)實際參數(shù)對動力定位模型進(jìn)行繪制。具體建模流程如圖2 所示[7]。

圖2 三維建模流程
動力定位平臺虛擬模型由船體、船艙、推進(jìn)器、甲板標(biāo)等組成。通過Solidworks對裝置內(nèi)部和外部分別建模,將其導(dǎo)出為STL 格式;將導(dǎo)出的模型導(dǎo)入到blender,切換編輯模式、物理模式,對模型平移、旋轉(zhuǎn)、縮放操作,并進(jìn)行UV 展開,為制作貼圖、材質(zhì)做準(zhǔn)備[8]。模型效果如圖3 所示。

圖3 動力定位模型
將模型UV展開,繪制簡陋的樣式及標(biāo)明顏色,通過繪制紋理貼圖軟件進(jìn)行詳細(xì)的基礎(chǔ)色、法線、環(huán)境光等貼圖的繪制,將其保存并在blender 中進(jìn)行編輯[9]。對曲面進(jìn)行平滑著色并進(jìn)行渲染獲得完整的模型資源。UV展開及貼圖如圖4 所示。海洋環(huán)境使用虛擬引擎5(Unreal Engine 5,UE5)的水系統(tǒng)插件進(jìn)行構(gòu)建。將海洋拖入世界大綱中,在細(xì)節(jié)面板對海洋的顏色、波浪的長度、高度、浪向角等參數(shù)進(jìn)行細(xì)致調(diào)整,使其更接近真實海洋環(huán)境,如圖5所示。將建立的平臺模型導(dǎo)入UE5 進(jìn)行整合。

圖4 模型的UV展開以及貼圖

圖5 海洋環(huán)境構(gòu)建圖
(2)三維場景優(yōu)化。精細(xì)的平臺模型和場景可極大提高仿真系統(tǒng)的真實感、流暢度,更具沉浸感。針對本系統(tǒng)的特點,使用多細(xì)節(jié)層次技術(shù)(Levels of Detail,LOD)和虛擬幾何體系統(tǒng)技術(shù)(Nanite)對模型和水系統(tǒng)進(jìn)行優(yōu)化。
LOD技術(shù)可根據(jù)模型節(jié)點在顯示環(huán)境所處的位置和重要程度,來決定物體渲染的資源分配,降低非重要物體的面數(shù)和細(xì)節(jié)數(shù),以獲得高效率的渲染計算[10]。當(dāng)近距離觀察海洋時,渲染精模,呈現(xiàn)更高的細(xì)節(jié)程度;距離較遠(yuǎn)觀察物體時,只渲染簡模甚至不渲染,呈現(xiàn)出的細(xì)節(jié)程度更低,如圖6 所示。

圖6 海洋環(huán)境優(yōu)化
采用全新的內(nèi)部網(wǎng)格體格式和渲染技術(shù)來渲染像素級別的細(xì)節(jié)以及海量對象,它僅處理用戶能夠感受到的細(xì)節(jié)。根據(jù)攝像機(jī)視圖以不同LOD,隨時切換群集,在不破壞同一對象相鄰群集的情況下完美連接。通過Nanite使模型更細(xì)節(jié)化和實時渲染更高效,如圖7 所示。

圖7 平臺模型優(yōu)化
(3)交互設(shè)計。交互設(shè)計[11]包括用戶與系統(tǒng)UI的交互,用戶與系統(tǒng)中環(huán)境和平臺的交互。交互邏輯通過UE5 的藍(lán)圖進(jìn)行構(gòu)建,主要功能為漫游、模型結(jié)構(gòu)可視化以及數(shù)據(jù)可視化等。
UI具有選擇實驗類型、海浪建模和參數(shù)設(shè)置等功能。參數(shù)設(shè)置包括控制策略、波高、風(fēng)速和風(fēng)浪譜等,同時可實時顯示仿真數(shù)據(jù)。界面設(shè)計應(yīng)用了事件分發(fā)器、直接通信等藍(lán)圖通信功能,實現(xiàn)數(shù)據(jù)更新和相應(yīng)事件的觸發(fā),如圖8(a)所示。UI 交互主要通過射線交互,VR左、右手柄控制器生成紅色射線,UI 接受硬件輸入,同時開啟玩家控制器輸入。UI檢測到射線與其發(fā)生碰撞,可產(chǎn)生點擊仿真按鈕、選擇參數(shù)等操作。如圖8(b)所示。

圖8 UI交互設(shè)計
用戶與環(huán)境、平臺的交互利用VR設(shè)備,在VR模式下進(jìn)行設(shè)計。通過UE 攝像機(jī)組件模擬VR 設(shè)備中的HTC Vive Pro2 頭顯,攝像機(jī)的旋轉(zhuǎn)等同于人體帶上VR頭顯的運動,攝像機(jī)可將場景中的畫面實時傳輸?shù)絍R頭顯,使其保持運動同步。2 個運動控制器組件添加手部骨骼模型模擬VR設(shè)備的左、右手柄,捕捉手部動作并同步,如圖9(a)所示。粒子系統(tǒng)組件用于模擬移動軌跡,實現(xiàn)瞬移功能,如圖9(b)所示。為使模型結(jié)構(gòu)和海洋環(huán)境可視化,采用多視角轉(zhuǎn)換,在不同視角上放置攝像機(jī),如正視、左視、俯視、水底和甲板等視角,進(jìn)行實時監(jiān)測,如圖9(c)所示。通過相應(yīng)按鍵轉(zhuǎn)換到相應(yīng)的視角畫面進(jìn)行觀察,這樣更易觀察到航行時的平臺效果。展示效果如圖9(d)所示。

圖9 用戶與環(huán)境交互設(shè)計
本文考慮動力定位平臺在水平面上的三自由度橫蕩、縱蕩和艏搖運動[12]。為降低能量損耗和推進(jìn)器磨損,僅考慮低頻運動,平臺模型可以簡化為:
式中:η·=[x,y,ψ]T為北東坐標(biāo)系下的位置和歐拉角;v =[u,v,r]T為平臺坐標(biāo)系下的速度;R(ψ)為轉(zhuǎn)換矩陣;M為慣性矩陣;D 為阻尼矩陣;τ為環(huán)境干擾力和推進(jìn)器推力的合力。
動力定位平臺工作時會受到海風(fēng)、海浪和海流的干擾。其中二階波浪干擾會使運動平臺偏離所在位置,在進(jìn)行推力分配時需要考慮這些干擾影響[13]。本文僅考慮風(fēng)載荷與浪載荷的干擾。
動力定位平臺的推力分配需綜合考慮推進(jìn)器的推力、方位角、推進(jìn)器功率與推力間的關(guān)系等因素,確定等式約束、不等式約束及目標(biāo)函數(shù)從而獲得最優(yōu)解,使其滿足到達(dá)指定位置所需要的推力和角度[14]。對于平臺的6 個推進(jìn)器的推力分配采用序列二次規(guī)劃算法進(jìn)行求解。推力分配算法具體推導(dǎo)及約束條件建立過程詳見文獻(xiàn)[15]。
將數(shù)值平臺仿真出的數(shù)據(jù)保存為csv 格式文件。在UE5 工程中創(chuàng)建C ++接口,設(shè)置文件讀取路徑及數(shù)據(jù)執(zhí)行時長,通過接口讀取csv文件中的數(shù)據(jù),并將其保存到UE5 的資產(chǎn)中。在關(guān)卡藍(lán)圖中設(shè)置該資產(chǎn)關(guān)聯(lián),同時建立函數(shù)實現(xiàn)從資產(chǎn)中讀取數(shù)據(jù)功能,如圖10 所示。將讀取的數(shù)據(jù)存儲為變量后,經(jīng)過線性插值函數(shù)逆運算轉(zhuǎn)變?yōu)? ~1 的浮點數(shù),再經(jīng)線性插值函數(shù)映射到虛擬場景中的具體坐標(biāo)。將坐標(biāo)的數(shù)據(jù)傳輸給動力定位平臺,驅(qū)動平臺根據(jù)采樣的數(shù)據(jù)進(jìn)行運動。

圖10 讀取函數(shù)代碼圖
系統(tǒng)的研究對象是一個小型的動力定位平臺,平臺寬0.5 m。仿真過程中的環(huán)境干擾參數(shù)設(shè)置為:風(fēng)速為2.7 m/s,風(fēng)向角為60°,波浪的有義波高為0.3 m,浪向角為60°。控制器采用傳統(tǒng)的PID 控制,推力分配優(yōu)化算法采用序列二次規(guī)劃算法。
圖11 為數(shù)值平臺仿真運動軌跡,可發(fā)現(xiàn)通過PID控制順利克服了環(huán)境干擾,從初始點成功到達(dá)給定目標(biāo)位置。圖12 為虛擬平臺仿真運動軌跡,當(dāng)虛擬平臺運行時可通過UI切換不同視角觀測到平臺運動狀態(tài),且運動軌跡與數(shù)值平臺運動軌跡基本一致。

圖11 數(shù)值平臺運動軌跡

圖12 虛擬平臺運動軌跡
由圖13 可知,每個推進(jìn)器的推力曲線,1、3、4 和6號推進(jìn)器的分配結(jié)果較為相近。各推進(jìn)器推力均在同一個數(shù)量級,且不超過最大推力。在平臺到達(dá)給定目標(biāo)位置時,推力都趨向于穩(wěn)定,說明滿足了推力分配模型的約束條件。

圖13 推進(jìn)器推力曲線
本文設(shè)計了動力定位平臺虛擬仿真系統(tǒng)。實現(xiàn)了系統(tǒng)的交互、漫游及以第一人稱視角沉浸式觀察平臺運行情況。通過數(shù)值平臺對動力定位平臺低頻運動及環(huán)境載荷進(jìn)行了建模及仿真。
在動力定位平臺虛擬仿真系統(tǒng)中可觀察平臺運行過程,可視化地驗證設(shè)計的控制方法、推力分配優(yōu)化方法的合理性和正確性;將其引入實驗教學(xué)后可激發(fā)學(xué)生學(xué)習(xí)的積極性并豐富了實驗教學(xué)內(nèi)容。在后續(xù)研究中,將對系統(tǒng)進(jìn)行進(jìn)一步的優(yōu)化設(shè)計,采用交互選擇模式來可視化驗證其他控制算法和推力分配策略。