李超,陳哲,潘義川
(山東交通學(xué)院,濟(jì)南 250300)
虛擬仿真技術(shù)在早期主要應(yīng)用于船舶駕駛模擬,近些年由于虛擬技術(shù)發(fā)展在游艇的仿真也取得相應(yīng)進(jìn)展,如姜文剛通過對高速游艇的運(yùn)動(dòng)和姿態(tài)以及舵機(jī)、主機(jī),進(jìn)行了建模和計(jì)算機(jī)仿真。結(jié)合高速游艇船體等實(shí)物,搭建了半實(shí)物的高速游艇模擬駕駛實(shí)時(shí)仿真系統(tǒng)[1];半實(shí)物仿真系統(tǒng)由于研發(fā)周期和造價(jià)高昂在滿足日漸加速發(fā)展的虛擬現(xiàn)實(shí)技術(shù)需求方面明顯不足。多自由度模型是進(jìn)行游艇虛擬設(shè)計(jì)時(shí)較為重要的步驟。目前我國建立高速滑行艇前進(jìn)、升沉、縱搖三自由度運(yùn)動(dòng)模型并進(jìn)行運(yùn)動(dòng)預(yù)報(bào)與仿真[2],正橫規(guī)則波四自由度模型[3]等,隨著近幾年虛擬現(xiàn)實(shí)技術(shù)的快速發(fā)展,適合快速發(fā)展的桌面式和沉浸式環(huán)境下的游艇駕駛操縱仿真系統(tǒng)能夠解決游艇多自由度運(yùn)動(dòng)的問題,在復(fù)雜運(yùn)動(dòng)表達(dá)方面具有快速更改、編程簡易的優(yōu)勢。
Unity與萬維引擎:
Unity是由Unity Technologies開發(fā)的讓用戶根據(jù)自身需求開發(fā)互動(dòng)內(nèi)容的多平臺(tái)的綜合型開發(fā)平臺(tái),是一個(gè)全面整合的專業(yè)開發(fā)虛擬系統(tǒng)的引擎[4]。
萬維引擎是一款基于Unity環(huán)境開發(fā)的虛擬現(xiàn)實(shí)軟件開發(fā)平臺(tái),其打破了傳統(tǒng)的計(jì)算機(jī)編程開發(fā)模式,通過使用C#編程語言將抽象的基本操作功能指令轉(zhuǎn)化為具體的功能指令,將功能指令存儲(chǔ)于表格中,進(jìn)行虛擬開發(fā)時(shí)是通過Excel中編輯功能文本指令,軟件運(yùn)行通過表格驅(qū)動(dòng)讀取對應(yīng)文本功能。
此游艇駕駛仿真系統(tǒng)應(yīng)具有以下基本功能:模擬游艇的運(yùn)動(dòng)姿態(tài);模擬游艇在威海小石島附近的三維場景;模擬主機(jī)、舵機(jī)運(yùn)行以及相關(guān)儀器儀表;接近真實(shí)的原比例駕駛操縱臺(tái),可供用戶借助外部設(shè)備進(jìn)行沉浸式操作;應(yīng)具有操作流程交互提示。
按船舶質(zhì)心運(yùn)動(dòng)定理和相對質(zhì)心運(yùn)動(dòng)的動(dòng)量矩定理[5]:對于動(dòng)系,有:
忽略縱搖,寫成投影式,建立游艇五自由度的運(yùn)動(dòng)方程式:
根據(jù)自由橫搖的固有周期計(jì)算公式[6],一般游艇橫搖慣性力矩 M()為:
游艇橫搖阻尼系數(shù)由試驗(yàn)取得其靜水橫搖阻尼,再使用經(jīng)驗(yàn)公式修正游艇的橫搖阻尼力矩為:
根據(jù)滑行原理可知[7]。可以得到游艇的橫搖恢復(fù)力矩計(jì)算
對于橫搖波浪主擾動(dòng)力矩,參照常規(guī)船舶橫搖波浪主擾動(dòng)力矩的計(jì)算方法,得到滑行艇橫搖波浪主擾動(dòng)力矩MW的一般表達(dá)式
將幾式聯(lián)立得出游艇在規(guī)則波中橫搖運(yùn)動(dòng)方程:
船舶在水面運(yùn)動(dòng)受到的外界力使船舶在縱向運(yùn)動(dòng)一般表現(xiàn)為垂蕩和縱搖,而縱搖一般靜水域和正常情況下是非常微弱的,因此只討論垂向運(yùn)動(dòng)。
在創(chuàng)建垂蕩運(yùn)動(dòng)數(shù)學(xué)模型時(shí)依舊采用切片理論,在垂向運(yùn)動(dòng)上的力分為三種:恢復(fù)力、阻尼力、慣性力。
由船體運(yùn)動(dòng)而產(chǎn)生在整體上的垂蕩力Fz,將上述各力乘以X(從船長到船尾)所得力矩:
根據(jù)牛頓第二定律,慣性力和外力平衡,船體的垂蕩運(yùn)動(dòng)方程為:
聯(lián)立公式(8-9)和垂向力得到以下垂蕩運(yùn)動(dòng)方程:
式中:zs為垂蕩時(shí)的船體在z軸的位移;Azz為垂蕩時(shí)的船體附連質(zhì)量;Bzz為垂蕩時(shí)的船體阻尼力系數(shù);Czz為垂蕩時(shí)的船體恢復(fù)力系數(shù);Fzc為波浪擾動(dòng)力的余弦分量;Fzs為波浪擾動(dòng)力的正弦分量。
游艇回轉(zhuǎn)橫傾參考船舶回轉(zhuǎn)運(yùn)動(dòng),回轉(zhuǎn)降速采用慣性環(huán)節(jié)模擬柴油發(fā)動(dòng)機(jī)轉(zhuǎn)速方法得出游艇操縱桿給定轉(zhuǎn)速與n實(shí)際轉(zhuǎn)速y傳遞函數(shù)以此為根據(jù)建立游艇理想條件下給定航速v與實(shí)際航速yv的傳遞函數(shù)降速模型
此虛擬系統(tǒng)的游艇操控設(shè)備主要通過車鐘、舵輪、側(cè)推器等組成。
圖1 虛擬操控駕駛臺(tái)
本虛擬駕駛分系統(tǒng)基于真實(shí)物理模型建立虛擬操控設(shè)備應(yīng)用Unity環(huán)境下的GUI系統(tǒng)進(jìn)行設(shè)計(jì)。
主機(jī)儀表主要是對虛擬游艇主機(jī)的運(yùn)行狀態(tài)進(jìn)行模擬,主要包括主機(jī)的水溫、油壓、轉(zhuǎn)速、運(yùn)行時(shí)間和報(bào)警五個(gè)方面進(jìn)行模擬。
磁羅經(jīng)主要應(yīng)用于實(shí)時(shí)指示船體的方位,通過獲取船體的方位傳遞給磁羅經(jīng)顯示給操作用戶。獲取船體角度并進(jìn)行計(jì)算得出船體的方位變化在此同時(shí)將方位變化賦值給建立好的磁羅經(jīng)物理模型。
舵角指示器用于在進(jìn)行改變航向時(shí),反饋舵葉的轉(zhuǎn)動(dòng)角度。由于將舵葉的實(shí)際角度與舵角指示的顯示角度誤差忽略不計(jì),通過函數(shù)獲取角度與設(shè)置角度值,具體C#語句為:float indicator.transform.rotate.z=rudder.transform.rotate.z。
在虛擬系統(tǒng)中通過外部設(shè)備控制虛擬操控物理模型(外部設(shè)備主要是鼠標(biāo)鍵盤和HTC VIVE虛擬設(shè)備),實(shí)現(xiàn)真實(shí)的駕駛流程與虛擬操縱過程模擬。通過以上外部設(shè)備的觸發(fā)函數(shù)調(diào)用對應(yīng)的響應(yīng)型數(shù)學(xué)模型完成對游艇運(yùn)動(dòng)數(shù)學(xué)模型的模擬與表達(dá)。整個(gè)運(yùn)動(dòng)系統(tǒng)包含直航運(yùn)動(dòng)模擬、回轉(zhuǎn)運(yùn)動(dòng)模擬、橫搖垂蕩運(yùn)動(dòng)模擬。
系統(tǒng)硬件主要是臺(tái)式計(jì)算機(jī)主機(jī)、鼠標(biāo)鍵盤與高清顯示器和HTC Vive進(jìn)入駕駛模式,開啟左右主機(jī)儀表、啟動(dòng)左右主機(jī),進(jìn)車操舵在無障礙區(qū)域直線航行,分別測試船體航速在3m/s、6m/s、12m/s時(shí)的橫搖與垂蕩。以下為直航時(shí)相對某時(shí)段特定幀率下3m/s時(shí)的橫搖與垂蕩實(shí)驗(yàn)仿真數(shù)據(jù)。
圖2 3m/s時(shí)的橫搖仿真曲線
圖3 3m/s時(shí)的垂蕩仿真曲線
最大航速25節(jié)時(shí),滿舵35度右舷回轉(zhuǎn)操縱時(shí)的回轉(zhuǎn)軌跡仿真曲線。
定?;剞D(zhuǎn)直徑:D=176m;相對回轉(zhuǎn)直徑:D/L=176/22=8m;戰(zhàn)術(shù)直徑:=180m,戰(zhàn)術(shù)直徑與定常回轉(zhuǎn)直徑的比值為/D=1.02;正橫距:=92m
圖4 回轉(zhuǎn)軌跡
研究建立了虛擬環(huán)境下的游艇五自由度運(yùn)動(dòng)方程、游艇橫搖與垂蕩、游艇回轉(zhuǎn)橫傾與減速運(yùn)動(dòng)特征,針對操縱設(shè)備、虛擬儀表、運(yùn)動(dòng)模擬,建立了游艇虛擬操縱平臺(tái),并通過萬維引擎與Unity實(shí)現(xiàn)整個(gè)駕駛模擬操縱系統(tǒng)的開發(fā)。