相 琳 周振華
(中國(guó)船舶第七一五研究所,杭州 310023)
本文所述仿真是將實(shí)際系統(tǒng)包括控制器的受控對(duì)象以及作用于該系統(tǒng)上的各種輸入信息全部用數(shù)學(xué)模型代替,并把數(shù)學(xué)模型變成仿真模型,在計(jì)算機(jī)上利用仿真手段對(duì)實(shí)際系統(tǒng)軟件進(jìn)行測(cè)試和研究的過(guò)程。借助仿真引擎,它可以高效產(chǎn)生一個(gè)全棧的閉環(huán)仿真,模擬理想情況或特定環(huán)境擾動(dòng)下的受控對(duì)象,并實(shí)時(shí)反饋信息。無(wú)人航行器執(zhí)行任務(wù)后,在水下進(jìn)行遠(yuǎn)距離自主航行時(shí)人們不能實(shí)時(shí)掌握其動(dòng)態(tài),導(dǎo)致航行器水下任務(wù)安全性問(wèn)題極為突出。因此,航行器研制和試驗(yàn)過(guò)程中對(duì)內(nèi)部軟件進(jìn)行測(cè)試和聯(lián)合仿真十分必要。本次仿真的目的為軟件開(kāi)發(fā)、測(cè)試與評(píng)估提供了一個(gè)高效的環(huán)境。
Unity3D軟件支持3D內(nèi)容創(chuàng)作,開(kāi)發(fā)生態(tài)環(huán)境良好,可擴(kuò)展性強(qiáng),近年來(lái)多用于虛擬仿真開(kāi)發(fā),其中應(yīng)用在室內(nèi)三維漫游場(chǎng)景的情況較多,畫(huà)面渲染逼真。
如圖1所示,隨體坐標(biāo)系O-XBYBZB是一種笛卡爾非慣性坐標(biāo)系,將坐標(biāo)原點(diǎn)O取在無(wú)人水下航行器(Unmanned Underwater Vehicle,UUV)的浮心上[1]。其中:OXB指向航行器首部;OYB指向上方(當(dāng)航行器放置于地面)并垂直于OXB;OZB垂直于OXB與OYB,指向航行器右側(cè)。

圖1 坐標(biāo)系示意圖
根據(jù)歐拉定理,隨體坐標(biāo)系下的參數(shù)經(jīng)過(guò)3次旋轉(zhuǎn)平移即可轉(zhuǎn)化為大地坐標(biāo)系下的參數(shù)。假設(shè)大地坐標(biāo)系與隨體坐標(biāo)系原點(diǎn)位置相同,則進(jìn)行3次旋轉(zhuǎn)即可。3次旋轉(zhuǎn)中的旋轉(zhuǎn)軸與旋轉(zhuǎn)角均符合右手定則,且旋轉(zhuǎn)順序需固定[2]。隨體坐標(biāo)系下的線速度[vx,vy,vz]T和大地坐標(biāo)系下的線速 度[v0x,v0y,v0z]T轉(zhuǎn)化關(guān)系如下:

表1 航行器運(yùn)動(dòng)學(xué)參數(shù)

為保持?jǐn)?shù)據(jù)的一一對(duì)應(yīng),規(guī)定將φ、ψ、θ的取值范圍限定為:


此時(shí),有:

同理,有:

對(duì)于航行器的運(yùn)動(dòng)過(guò)程,主要計(jì)算其所受的慣性類(lèi)水動(dòng)力、粘性類(lèi)位置力和阻尼力,相關(guān)參數(shù)如表2所示。其中:x、y、z是流體動(dòng)力主矢在隨動(dòng)坐標(biāo)系3個(gè)軸方向上的分量,分別為阻力、升力和側(cè)力;Mx、My、Mz是流體動(dòng)力主矩在隨動(dòng)坐標(biāo)系3個(gè)軸上的分量,分別為橫滾力矩、偏航力矩和俯仰力矩;Cx等為無(wú)量綱因數(shù)。

表2 流體動(dòng)力參數(shù)
航行器外形關(guān)于橫平面XBOYB與XBOZB對(duì)稱(chēng),則有:

不計(jì)航行器的慣性積項(xiàng)、航行過(guò)程中的質(zhì)量及質(zhì)量分布變化,若航行器進(jìn)行小機(jī)動(dòng)運(yùn)動(dòng),忽略運(yùn)動(dòng)參數(shù)二階項(xiàng),并視質(zhì)心為一階小量,可得空間運(yùn)動(dòng)方程[3]:

航行器模型導(dǎo)入U(xiǎn)nity中,根據(jù)需求選擇材料、紋理貼圖等屬性,使模型外觀貼近航行器外觀設(shè)計(jì)[4]。另外,確認(rèn)航行器模型的執(zhí)行器和傳感器,以便實(shí)例化到運(yùn)動(dòng)腳本中。此外,為航行器設(shè)置“剛體”屬性,為海底地形添加“碰撞器”屬性,外層設(shè)置包圍盒。這樣航行器與海底發(fā)生碰撞會(huì)停止,不會(huì)發(fā)生模型互相穿過(guò)的現(xiàn)象。
采用Unity3D經(jīng)典四叉樹(shù)方法生成不規(guī)則三角網(wǎng)(TriangulatedIrregularNetwork,TIN)海底地形。如圖2所示,四叉樹(shù)總的思想是視點(diǎn)經(jīng)過(guò)的時(shí)候才渲染地形,根據(jù)區(qū)域的有限個(gè)點(diǎn)集,將區(qū)域劃分為相連的三角面網(wǎng)絡(luò)。三角面的形狀和大小取決于不規(guī)則分布的測(cè)點(diǎn)的密度和位置,能夠避免地形平坦時(shí)的數(shù)據(jù)冗余,又能按地形特征點(diǎn)表示數(shù)字高程特征[5]。

圖2 四叉樹(shù)分化演示
如圖2所示,視點(diǎn)(Unity中模擬人眼瀏覽三維仿真畫(huà)面的觀察點(diǎn))由左下側(cè)經(jīng)過(guò)大格子時(shí),此時(shí)遠(yuǎn)離視點(diǎn)的R1、R2、R4為一級(jí)分化,而靠近視點(diǎn)的R31~R34為二級(jí)分化,地形顯示分辨率更高。一般視點(diǎn)越近,分化等級(jí)越高。
分化步驟操作如下。
(1)從外部導(dǎo)入(2n+1)×(2n+1)的正方形地形高度矩陣,建立兩個(gè)數(shù)組分別存放地形頂點(diǎn)緩沖和渲染的索引緩沖,依據(jù)視點(diǎn)到網(wǎng)格節(jié)點(diǎn)的距離和計(jì)算網(wǎng)格地形復(fù)雜度,在視點(diǎn)經(jīng)過(guò)時(shí)對(duì)網(wǎng)格進(jìn)行劃分,即設(shè)定視點(diǎn)到網(wǎng)格中心的距離L與正方形邊長(zhǎng)d的比值C1為設(shè)定的一個(gè)經(jīng)驗(yàn)常量值。C1設(shè)置越大,越易劃分。地形平緩程度C2表征區(qū)域地形越復(fù)雜,分割的次數(shù)越多。需要注意,C1和C2需要人為設(shè)定)。
(2)劃分網(wǎng)格時(shí),渲染葉子節(jié)點(diǎn)(沒(méi)有被繼續(xù)分割的點(diǎn));劃分完畢,遍歷待生成網(wǎng)格的節(jié)點(diǎn),根據(jù)其中心和邊長(zhǎng)生成對(duì)應(yīng)網(wǎng)格。
(3)對(duì)生成的地形利用強(qiáng)制劃分方法對(duì)裂縫進(jìn)行修補(bǔ),當(dāng)分化等級(jí)相差2及以上時(shí),對(duì)其強(qiáng)制劃分。
三維仿真地形,如圖3所示。

圖3 三維仿真地形
海流對(duì)航行器影響的力可以分解為沿航行器隨體坐標(biāo)系3個(gè)方向的分量。如果不考慮海流垂向交換,則海流的影響作用可分解為航行器前進(jìn)X方向的作用和垂直航行器Z方向的作用[6]。因此,已知外部輸入的海流方向和大小,將海流速度大小分解為航行器前進(jìn)X方向的vx和垂直航行器的Z方向分速度量vz,通過(guò)動(dòng)力學(xué)公式將其引入航行器總受力公式。
為方便用戶(hù)測(cè)試,海流模塊支持自定義輸入海流參數(shù),包含變化周期(不填默認(rèn)定向流)、初始方向和速度大小。仿真測(cè)試時(shí)可選擇開(kāi)啟海流模塊,設(shè)置定常流或者周期變化流來(lái)測(cè)試UUV在海流作用下的航行測(cè)試。
搭建仿真測(cè)試系統(tǒng),按照以下步驟:
(1)建立硬件連接,開(kāi)啟仿真軟件系統(tǒng);
可手動(dòng)修改航行器水動(dòng)力系數(shù),改變航行器水動(dòng)力 特性;
(3)設(shè)置傳感器參數(shù),默認(rèn)開(kāi)啟仿真慣導(dǎo)等傳感器;
(4)設(shè)置是否添加海流、海流方向和速度大??;
(5)仿真系統(tǒng)正式運(yùn)行。
任務(wù)啟動(dòng)后,仿真系統(tǒng)通信單元接收控制系統(tǒng)指令(轉(zhuǎn)速和舵角指令)傳給運(yùn)動(dòng)與動(dòng)力學(xué)模型,驅(qū)動(dòng)航行器模型(掛載運(yùn)動(dòng)腳本)在仿真系統(tǒng)內(nèi)位置移動(dòng)。仿真慣導(dǎo)實(shí)時(shí)反饋航行器姿態(tài)和速度參數(shù)。
航行器水下自主航行任務(wù)期間,主要關(guān)注航行控制能力和航行途中避障情況。
(1)航行器遠(yuǎn)距離水下遠(yuǎn)距離航行至指定地點(diǎn)時(shí),要對(duì)前方障礙物進(jìn)行合理避障。仿真系統(tǒng)支持前方單一或多個(gè)連續(xù)固定障礙物航行測(cè)試(如圖4所示),支持手動(dòng)選擇障礙物生成地點(diǎn),支持測(cè)試過(guò)程中通過(guò)外部觸發(fā)在特定地點(diǎn)生成障礙物等,以滿(mǎn)足航行過(guò)程中避障測(cè)試需求。

圖4 航行前方遇到障礙物
(2)當(dāng)航行器遠(yuǎn)距離三維仿真系統(tǒng)支持任意策略的航行下潛,如直線下潛和螺旋下潛,支持航行軌跡三維顯示,如圖5所示。

圖5 三維軌跡顯示窗口
本文提出了一種在無(wú)人航行器研制和試驗(yàn)階段用于軟件聯(lián)調(diào)和任務(wù)測(cè)試的三維仿真系統(tǒng),通過(guò)Unity3D軟件構(gòu)建逼真水下三維仿真海洋環(huán)境,加入海底地形、水下障礙物和海流作用,基于無(wú)人航行器水下運(yùn)動(dòng)和動(dòng)力學(xué)模型,可支撐無(wú)人航行器長(zhǎng)距離水下自主航行任務(wù)測(cè)試和水下避障規(guī)劃。