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

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

表1 航行器運動學參數

為保持數據的一一對應,規(guī)定將φ、ψ、θ的取值范圍限定為:


此時,有:

同理,有:

對于航行器的運動過程,主要計算其所受的慣性類水動力、粘性類位置力和阻尼力,相關參數如表2所示。其中:x、y、z是流體動力主矢在隨動坐標系3個軸方向上的分量,分別為阻力、升力和側力;Mx、My、Mz是流體動力主矩在隨動坐標系3個軸上的分量,分別為橫滾力矩、偏航力矩和俯仰力矩;Cx等為無量綱因數。

表2 流體動力參數
航行器外形關于橫平面XBOYB與XBOZB對稱,則有:

不計航行器的慣性積項、航行過程中的質量及質量分布變化,若航行器進行小機動運動,忽略運動參數二階項,并視質心為一階小量,可得空間運動方程[3]:

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

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

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

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

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