趙新華,段廣仁,蘭賀,孫堯
(1.哈爾濱工業大學航天學院,黑龍江哈爾濱150001;2.哈爾濱工程大學自動化學院,黑龍江哈爾濱150001)
目前,對于超空泡航行體控制問題的研究主要有2種方法[1-3]:射彈實驗和數值模擬.這2種方法都存在一定的不足,數值模擬方法以理論研究為基礎,根據計算得到超空泡航行體的各個狀態參量,其研究結果多以仿真曲線或者統計數據的形式出現,相對抽象.而射彈實驗的方法是通過樣彈實體,在水洞或水池中進行射彈試驗,該方法能夠直觀地觀察控制效果及航行體運動形態,但是風險高、成本高、可重復性差.因此,完全依賴實驗的手段獲得超空泡航行體的動力學特性及控制規律是不現實的.開發一種既能數值計算控制結果又能將結果直觀顯示的虛擬現實系統仿真軟件具有重要的意義.
本文采用虛擬現實技術開展了超空泡航行體控制效果的可視化仿真研究,并開發了相應的仿真軟件平臺.基于OpenGL的標準3-D圖形接口,將在3Dmax中繪制的三維航行體模型,加載到OpenGL中;在超空泡航行體動力學模型的基礎上,設計多種控制方案并編制了相應的控制模塊.通過友好的用戶界面,操作人員可以自主選擇控制方案,更改控制參數,并繪制仿真曲線;利用虛擬現實技術對海洋、海底環境進行渲染,對航行體的航行姿態及空泡狀態進行繪制,通過按鍵控制,實時觀測航行體尾部與空泡位置的相對變化以及航行體尾部煙霧的變化等.
開發一個基于OpenGL的虛擬現實系統.系統中,將超空泡的數學模型及控制算法應用于控制對象,在計算機平臺上重復模擬實驗,檢驗并分析實驗結果,協助完成控制方案的設計、驗證及篩選.可以縮短研發周期,節省實驗及研發經費.并對航行體的運行環境進行渲染,使視覺效果更加真實.這樣的系統具有現場化、可視化、安全性、經濟性、可控性及無破壞性等優點.
通過參考國內外大量超空泡控制問題的研究文獻及基于OpenGL的虛擬現實仿真技術的文獻資料,針對仿真平臺的開發目的,該虛擬現實仿真系統應滿足下面的需求:
1)友好的用戶操作界面.
2)仿真平臺提供視覺感良好、真實生動的水下環境,包括海底的顯示、海面的顯示及海洋環境的顯示等,可供研究其他水下潛器之用,省去了渲染環境所耗費的時間.
3)超空泡航行體周圍空泡的形成過程及最終的穩定形態應按照經過試驗驗證的公式進行仿真,而不是簡單的動畫效果.
4)為仿真平臺中的超空泡航行體建立動力學模型,設計控制方案,在屏幕上觀察控制效果,篩選正確的控制方案.在控制算法的選擇處留有接口,以便添加其他控制算法,實現軟件平臺的可擴展性.
根據超空泡航行體的實際物理外觀,在3Dmax中繪制三維模型,經MilkShape軟件轉換成可以加載到OpenGL中的Ms3d格式,并放入工程目錄下.在屏幕上顯示加載模型,并對其進行建模、控制方案的設計、周圍環境的渲染及空泡的動態生成等操作,其基本組成框架如圖1所示.

圖1 系統組成Fig.1 Block diagramof the system
平臺中超空泡航行體模型是實際模型的近似,由圓錐段和圓柱段組成.圓錐段的長度為Lcon,圓柱段的長度為Lcyl.圓柱段的長度為圓錐段長度的2倍,整個航行體的長度為L=Lcon+Lcyl,圓柱截面的半徑為R,空化器的半徑為Rn.
參考坐標系原點為空化器的壓力中心,x軸沿著航行體的對稱軸指向前方,w為航行體垂直速度,V為航前向速度,z軸與航行體平面垂直,俯仰角由θ表示,q為俯仰角速度.超空泡航行體的動力學模型為

式(1)中參數的含義詳見參考文獻[4].
利用空泡截面獨立擴張原理,并根據國內外大量的實驗數據得到未受擾動的空泡經驗計算
公式[5]:

式中:RC為空泡中截面半徑,σ =0.03,Cx0=0.82,x1=2Rn,L 是超空泡的長度,y是距離空化器x處的空泡半徑.經MATLAB仿真,空泡形狀如圖2所示.可見,無擾動空泡形狀為兩端開口的對稱橢圓.

圖2 空泡外形仿真Fig.2 Simulation of the cavity shape
但在實際航行過程中,空化器攻角、航行體重力、空泡自身浮力等均對空泡形狀產生影響,導致空泡變形.引入空泡軸向高度變量hf,描述攻角導致空泡形態變化,如圖3所示.

圖3 攻角引起的空泡外形變化Fig.3 Deformation of the cavity for angle of attack
應用攝動研究方法,得出hf為[6]
式中:Cy=2Fy/ρV2πR2n,Fy為作用在空化器上的升力[7],=2x/L.

當航行速度較低時,空泡軸線會在重力的作用下向上偏移,當航行速度較高時,可以忽略重力對空泡形態影響,計算出不對稱空泡的上下邊界:式中:yc1、yc2分別為非對稱空泡的上、下邊界,xc為重心位置,α為攻角,R(x)為空泡半徑.空泡受到浮力作用,使中心線向上偏轉,有經驗公式如下:

式中:

式中:x為航行體中心線上的某點,Ok為x橫截面處閉合的空泡容積,R(x)為空泡半徑.
基于超空泡航行體的動力學模型,設計了6種控制方案,分別為狀態反饋控制、反饋線性化控制、滑模控制、最優控制、突變控制及開環控制等.運用VC++編程顯示二維動態控制效果.
操作人員通過用戶友好界面,裝訂航行體結構參數,主要流體動力參數,選擇控制方案,對控制器參數進行裝訂,最后動態觀測航行體運動姿態,比較控制效果.軟件的運行邏輯如圖4所示.
程序運行時,先在屏幕上確定出航行體重心的位置,以其為基準,按照航行體各部分的比例關系,確定其頭部、尾部、尾翼等位置,使用畫圖函數,畫出航行體.解算航行體的運動方程及相應控制算法,并設定定時器,動態顯示航行體的運動形態.

圖4 軟件邏輯數據流Fig.4 The software logic data stream
以狀態反饋控制及滑??刂茷槔瑢Τ张莺叫畜w的控制方案進行對比.狀態反饋控制及滑??刂频姆抡娼Y果如圖5及6所示.
從圖中可以看出,超空泡航行體的航行狀態在狀態反饋控制方案下,響應較快、穩定時間長、狀態響應較平穩.可見狀態反饋控制的控制效果較好.與此類似,其余4種控制方案的控制效果也可以通過相同的方法比較得出.

圖5 狀態反饋控制效果的界面示意Fig.5 Diagramof interface for state feedback control

圖6 滑??刂菩Ч慕缑媸疽釬ig.6 Diagramof interface for slidemode control
根據超空泡航行體的實際物理外觀,在3Dmax中繪制三維航行體模型,經MilkShape軟件轉換成可以加載到OpenGL中的Ms3d格式,并放入工程目錄下.在屏幕上顯示加載的模型,并對其進行運動建模及控制方案的實施、周圍環境的渲染及空泡動態生成等操作,仿真系統的驅動過程如圖7所示.

圖7 系統仿真驅動過程Fig.7 Systemsimulation diagramof driving process
為展現超空泡航行體真實的運行場景,需要對海洋和海底環境進行渲染.由于該視景仿真系統,對海洋及海底的真實度要求不高,所以均采用紋理映射技術[8].先設置實現航行體飛越大面積海底環境的矩陣,然后對這些矩陣進行紋理貼圖,紋理的選取應滿足對視覺效果的要求.
此外,對海面波浪進行模擬,使視覺效果更加逼真.通過實現一個正弦波方式運動的圖像,模擬海面波浪.
為使視覺效果更加逼真,在海底添加了障礙物.障礙物的繪制采用了OpenGL中二次曲面的繪制方法.通過繪制球體、三角柱、四角柱等幾何體的組合體,實現對障礙物的繪制.繪制步驟如圖8所示.該系統中,根據視點坐標及目標移動的規律設置障礙物的位置和大小.障礙物的數據在記事本文件中設置并讀取.

圖8 OpenGL中二次曲面的繪制步驟Fig.8 mapping steps of quadric surface in OpenGL
由于OpenGL中沒有繪制三維模型的函數,如用OpenGL中的基本圖元繪制,不僅實現困難,并且渲染時間長,模型真實度欠缺.所以,經常使用三維繪圖軟件繪制模型,加載到OpenGL中,再對其進行控制等一系列操作[9].
本系統中使用3Dmax軟件繪制航行體模型,包括尾翼及空化器.繪制過程中,用到了多邊形圓滑、材質貼圖、布爾運算等功能.最后,將繪制好的模型保存為“.max”格式,為方便將它載入 OpenGL中,使用Ms3d軟件將該文件轉換為Ms3d格式.圖8為3Dmax中航行體模型的實現.

圖9 3Dmax中航行體模型的實現Fig.9 Vehiclemodel implementation in 3Dmax
在OpenGL中實現Ms3d模型的加載要經過讀入文件和調用OpenGL圖形庫2個步驟.將Ms3d格式文件添加到OpenGL工程目錄下,但是文件格式并不能成功加載一個模型,必須定義一個保存數據的結構,然后把數據讀入這個結構.結構定義在model.h中,分別定義頂點結構、三角形結構、網格結構和材質屬性.
超空泡航行體在水下運行時,當速度超過一定的范圍,就會在周圍產生空泡,根據式(2)及第2節給出的模型尺寸與其周圍形成的空泡尺寸的比例,在屏幕上顯示同樣比例的航行體及其周圍產生的空泡.在z=0平面上,以空化器上下邊緣為基準,上下各取100個點,畫出空泡的輪廓,再由這100個點繪制出三維空泡.如圖10所示.

圖10 空泡的繪制過程Fig.10 Diagramof drawing process of cavity
利用三角形拼接空泡的外形,即在OpenGL的函數glBegin(GL_TRIANGLES)及glEnd()之間加入glVertex3f()函數,函數參數為以坐標方式描述的三角形頂點數據.
采用OpenGL完成的超空泡的三維視景顯示,超空泡的形成過程如圖11所示.

圖11 超空泡形成過程示意Fig.11 Diagramof the supercavity developing
航行體尾部煙霧的實現要借助于OpenGL粒子系統.粒子系統采用的設計思想是由大量的具有一定形狀和大小、速度和運動方向、生命周期和屬性的微小粒子作為基本元素,繪制各種不規則的模糊對象,如動態不規則的雨、雪、煙霧及火焰等自然場景[10-11].
實現航行體尾部煙霧效果時,首先需要定義粒子基本參量的數據結構,對粒子的初始屬性進行初始的設置時會用到這些數據.包括粒子的位置坐標、生命周期、粒子運動速度的大小及方向等參數.仿真效果見圖12所示.

圖12 尾部煙霧的效果Fig.12 Effect chart of the tail smoke
超空泡航行體運動過程中俯仰角不斷變化,為動態顯示這一過程,應用OpenGL中的旋轉函數gl-Rotatef().該函數的作用是將物體繞原點到點(x,y,z)的連線逆時針旋轉angle角度,x,y,z值非零即1,為局部坐標系.由于航行體俯仰角的變化可以理解為航行體繞其前端的旋轉過程,旋轉的角度即為由動態方程解算出來的俯仰角.因此,直接應用該函數實現上述功能還不夠,需要先將航行體平移,平移的坐標為航行體所繞行的位置處的坐標,然后進行旋轉操作后,再將航行體平移至原來的位置.局部坐標系下,航行體的坐標原點已經設定在位置(aereo.x,aereo.y,aereo.z)處,由于這里需要將航行體繞行部位設置為航行體頭部,頭部位置處的屏幕坐標為(aereo.x-13,aereo.y,aereo.z),需要經過如下處理:
glTranslatef(aereo.x-13,aereo.y,aereo.z);
glRotatef(angle,0.0f,0.0f,1.0f);
glTranslatef(13,0.0,0.0);
此時,將已有的數據信息轉換成代碼,便可以解算出俯仰角數組,將其作為參數傳入函數glRotatef().為對航行過程進行實時模擬,使用VC++時鐘,時鐘響應的時間間隔設置太大,會造成水下高速運行體的運行產生跳躍感.經過實驗測試,本系統設置20 ms,可以真實反映出航行體的實時俯仰角變化情況及其與空泡的接觸情況,如圖13所示.

圖13 航行體動態運行效果Fig.13 Effect chart of themoving vehicle
仿真系統中,通過鍵盤操作,實現了視角變換的功能.
程序中,添加WM_KEYDOWN消息響應函數,系統便可捕捉用戶的鍵盤操作.然后通OpenGL中的視點變換函數gluLookAt()即可實現視角的變換功能.如圖14所示,可以清晰的觀察到航行體的尾部與空泡的接觸情況,即滑行力的變化情況.

圖14 仿真系統視角變換效果Fig.14 Effect chart of changing visual angle
本文在已有超空泡航行體動力學模型的基礎上,設計控制方案,利用虛擬現實技術對控制效果進行三維視景仿真研究.完成了對超空泡航行體運行環境的視景仿真,包括海面波浪、海底環境、海底障礙物、三維航行體模型、空泡的形成過程、尾部煙霧的形成、控制效果的動態演示、視角變換等.對該軟件平臺的測試表明,可以完成超空泡航行體控制方案的選擇與控制效果分析,空泡形態變化、航行體運動姿態變化三維視景仿真等任務.
本文建立的航行體物理模型為實際超空泡模型的簡化模型,逼真程度較高.控制方案參數修改靈活,航行體動態效果模擬較準確,能夠為科研人員在超空泡航行體控制問題的研究中,提供方便快捷的有效途徑,獲得直觀、清晰的認識.
[1]SAVCHENKO Y N.Control of supercavitation flowand stability of supercavitatingmotion of bodies[C]//VKISpecial Course on Supercavitating Flows.Brussel,Belgium,2001:313-329.
[2]楊莉,張慶明.超空泡技術的應用現狀和發展趨勢[J].戰術導彈技術,2006(5):6-10.YANG Li,ZHANG Qingming.Current application and perspectives on supercavitation technology research[J].Tactical Missile Technology,2006(5):6-10.
[3]曹偉,魏英杰,王聰,等.超空泡技術現狀、問題與應用[J].力學進展,2006,36(4):571-579.CAOWei,WEI Yingjie,WANG Cong,et al.Current status,problems and applications of supercavitation technology[J].Advances in Mechanics,2006,36(4):571-579.
[4]DZIELSKIJ,KURDILA A J.A benchmark control problemfor supercavitating vehicles and an initial investigation of solutions[J].Journal of Vibration and Control,2003,6(9):791-804.
[5]ANUKUL G.Robust control of supercavitating vehicles in the presence of dynamic and uncertain cavity[D].Orlando:University of Florida,2005:79-86.
[6]馬宏男.高速水下航行體半實物實時仿真系統研究[D].哈爾濱:哈爾濱工程大學,2010:53-60.MA Hongnan.Semi-physical real-time simulation systemresearch of super highspeed underwater vehicle[D].Harbin:Harbin Engineering University,2010:53-60.
[7]趙新華,孫堯,莫宏偉,等.水下超高速航行體縱向運動的控制方法研究[J].工程力學,2009,26(2):242-246.ZHAO Xinhua,SUN Yao,MO Hongwei,et al.Longitudinalmotion control of underwater high-speed vehicle[J].Engineering Mechanics,2009,26(2):242-246.
[8]宋志明,康鳳舉,閻晉屯,等.海洋環境視景仿真方法研究[J].計算機仿真,2004,21(6):131-134.SONG Zhiming,KANG Fengju,YAN Jintun,et al.Research on themethods of ocean scene simulation[J].Computer Simulation,2004,21(6):131-134.
[9]殷明均,鄭一露.基于MilkShape 3D的建模設計應用[J].電腦知識與技術,2009,5(17):4543-4546.YINMingjun,ZHENGYilu.Modeling and realization of threedimensional object based on MilkShape 3D[J].Computer Knowledge and Technology,2009,5(17):4543-4546.
[10]徐利明,姜昱明.基于粒子系統與OpenGL的實時雨雪模擬[J].計算機仿真,2005,22(7):242-245.XU Liming,JIANG Yuming.Realtime simulation of rain and snowbased on particle systemand OpenGL[J].Computer Simulation,2005,22(7):242-245.
[11]胡春,田金文,明德烈.多機協同的分布式海上攻防視景仿真[J].華中科技大學學報:自然科學版,2008,36(2):62-66.HU Chun,TIAN Jinwen,MING Delie.Collaborative distributed ocean attack-defense scene simulation[J].Journal of Huazhong University of Science and Technology:Nature Science Edition,2008,36(2):62-66.