王意存,陳 琦,常思江
(南京理工大學 能源與動力工程學院, 南京 210094)
Simulink是MATLAB重要組成部分,它能夠對連續系統、離散系統、混合系統進行充分建模與仿真,操作直觀簡單,只需鼠標拖動選出庫模塊,通過信號線連接即可構造復雜仿真模型[1]。Simulink結合了MATLAB強大的計算能力,越來越多被應用到彈道仿真設計中。
VRML(Virtual Reality Modeling Language) 即虛擬現實建模語言,是一種三維造型和渲染的圖形描述語言。VRML文件主要由節點、事件、世界、原型腳本和路由等組成[2]。編輯VRML文件的軟件有很多,比如VrmlPad、Cosmo World、3Ds max、V-Realm Builder等。V-Realm Builder 2.0是MATLAB自帶的一款功能強大的可視化VRML編輯器[3]。它簡單易用,在生成復雜世界時無需輸入大量的命令而只需要輕輕拖動鼠標即可實現大量程序才可能完成的功能[4]。
Simulink可以很好實現六自由度彈道仿真,文獻[5-7]均進行了詳細的研究分析,然而只是純粹數值仿真,沒有實現可視化。文獻[8]利用MATLAB中的GUIDE工具建立了外彈道系統的圖形用戶界面,實現了仿真界面的可視化,并不是導彈飛行過程的可視化。文獻[9-10]成功實現了導彈飛行過程的可視化。其中,文獻[9]只有動力學和運動學模塊,并未加入制導,且沒有跟蹤視角,不能很好觀察導彈的姿態變化。文獻[10]基于網絡化控制系統(NCSLab)設計開發了導彈3D實時仿真平臺,然而系統開發設計的過程復雜,使用不便。為了彌補上述不足,本研究在完整實現閉環六自由度彈道仿真的基礎上,利用虛擬現實技術,加入可視化仿真,并創造性地設置跟蹤觀察視角,以便能更好觀察導彈的飛行姿態。
搭建六自由度彈道數值仿真模型時,采用了模塊化建模設計思想[11]。為便于調試和修改參數,將復雜系統分成多個子模塊,分別搭建子模塊,明確各模塊輸入輸出關系,然后把各個子模塊連接起來,從而建立一個清晰的Simulink仿真系統。
導彈仿真系統由4個子模塊組成,分別是導彈運動模塊、氣動力計算模塊、制導模塊和自動駕駛儀模塊。其中,導彈運動模塊的核心在于導彈六自由度運動方程的搭建,詳細方程及其推導見文獻[12-13]。該模塊的主要作用是根據導彈的受力及力矩,結合導彈的結構解算出導彈的姿態、位置等信息。氣動力計算模塊根據彈體姿態、導彈受力及控制指令解算出導彈的受力和力矩,本研究將其包含在導彈運動模塊中。制導模塊根據導彈信息和目標信息,計算出過載指令。制導模塊分為導引頭子模塊和制導律子模塊,導引頭子模塊的輸入是彈目位置信息,計算出視線角和視線角速率等信息,而制導律子模塊則根據上述信息計算得到導彈的過載指令。過載自動駕駛儀模塊的輸入是導彈狀態及過載指令,然后根據PID控制律,最終輸出舵偏角信號,以實現對導彈的控制。
搭建好上述各個子模塊后,通過封裝,將其對應連接起來,從而建立六自由度彈道Simulink數值仿真模型,如圖1所示。
考慮到導彈模型的精準美觀,本研究先運用Solidworks軟件建立導彈3D模型,如圖2所示。將模型另存為WRL格式文件,再導入到V-Realm Builder 2.0中。

圖1 六自由度彈道Simulink數值仿真模型

圖2 Solidworks建立的導彈3D模型圖
V-Realm Builder 中一個重要部分是Object Library(對象庫),它包含有已設計好的虛擬對象,可以直接將對象庫中的標本對象加入到虛擬現實模型中[8]。本文的目標模型就是利用對象庫直接獲得,通過Libraries菜單欄下的Import From選項可選擇所需模型。本文選用的目標模型是一棟大樓。
對于導入的導彈模型和目標模型,其初始參數并不盡合理,需對其進行調整,主要調整參數是調節大小的scale參數和調節位置的position參數。需要說明的是,位置參數position也并非必須調節,因為在后續過程中,會對虛擬現實模型設置translation端口來導入仿真數據。
視角(Viewpoint)的添加和設計是整個虛擬現實模型建立的重要問題,關于視角的添加方式參見文獻[14]。視角設計的關鍵是設置好視角的orientation參數和position參數。為了能夠直觀跟蹤觀察導彈飛行姿態,本文設置了三視圖視角,分別是右側視角,前方視角以及俯視視角,如圖3所示。為了實現跟蹤觀察,本文先為視角設置position端口,然后導入Simulink仿真數據。
當產生一個數值仿真模型和虛擬現實模型后,便可以通過虛擬現實工具箱(VR工具箱)將二者連接起來。連接的核心模塊是VR Sink模塊,它提供了從Simulink到虛擬現實模型的接口,是連接數值仿真和虛擬現實的紐帶[15]。

圖3 導彈的跟蹤觀察視角圖
本文設置的VR Sink接口包括控制導彈位置的Missile translation接口,控制導彈姿態變化的Missile rotation接口,控制目標位置的Building translation接口,以及控制跟蹤觀察視角位置的ViewRight position、ViewForward position、ViewUp position接口。
由Simulink數值仿真模型生成的數據信號并不能直接導入到虛擬現實模型中,必須要經過轉換。信號轉換過程主要包含如下兩方面。
首先,對于控制視角位置的3個接口,視角的位置一定要與導彈位置相距合適的距離,否則并不能觀察到導彈。其次,對于導彈的姿態角,需要轉換成虛擬現實模型中的角度。方法是通過Rotation Angles to Direction Cosine Matrix模塊把3個姿態角轉換為方向余弦矩陣,然后利用Rotation Matrix to VRML Rotation模塊把方向余弦矩陣轉換為一個四元素向量,代表了旋轉軸和繞該軸旋轉的角度[14]。最終建立的虛擬現實信號轉化模塊如圖4所示。
將前文搭建的數值仿真模塊、信號轉換模塊和VR Sink模塊進行相應連接,從而搭建成可視化仿真模型,如圖5所示。
應用搭建好的Simulink數值仿真模型,設定仿真參數,主要參數值的設置見表1所示。
運行仿真,仿真計算的部分結果如圖6~圖9所示。
從圖6可以看出,導彈先是在x-y面飛行,當彈目距離小于設定值R*時開始啟動末制導。從圖7可以看出,俯仰角是先從正值減小到0,然后繼續減小為負值,在該階段,導彈無控飛行。當飛行時間t=85 s左右時,彈目距離開始小于設定值,制導系統開始啟動。由于目標的位置大于導彈無控飛行射程,因此在制導系統的作用下,導彈俯仰角逐漸增大,以使導彈繼續向前飛行,變化情況符合導彈實際飛行情況。從圖8可以看出,在t=85 s左右攻角和側滑角發生劇烈變化,說明在此時開始末制導。導彈舵偏角變化曲線如圖9所示,從中可以看出,在末制導過程中,俯仰舵偏角為正值,而偏航舵偏角為負值。正的俯仰舵操縱導彈抬頭,進而增大俯仰角,這和圖7中的現象是一致的。

圖4 虛擬現實信號轉化模塊框圖

圖5 六自由度彈道可視化仿真模型框圖

參數數值初速V0/(m·s-1)800彈道傾角θ0/(°)45導彈初位置坐標P0/m(0,0,0)目標位置坐標PT/m(32 000,0,500)末制導啟動距離R*/m5 000
運行六自由度彈道可視化仿真模型,在VR Viewer中觀看仿真動畫,同時可以切換3種跟蹤視角,觀察導彈的飛行姿態。通過仿真動畫可以看出大約在t=85 s左右俯仰角達到最小值,然后啟動制導,俯仰角開始增大,與數值仿真結果吻合。分別截取t=20 s,t=80 s和t= 95 s的飛行姿態三視圖如圖10~圖12所示。對比數值仿真結果,可以驗證模型的正確性。

圖6 導彈飛行三維軌跡

圖7 導彈姿態角變化

圖8 攻角和側滑角變化

圖9 導彈舵偏角變化

圖10 飛行時間t=20 s導彈飛行姿態三視圖

圖11 飛行時間t=80 s導彈飛行姿態三視圖

圖12 飛行時間t=95 s導彈飛行姿態三視圖
1) 利用Simulink平臺,先后建立了六自由度彈道數值仿真模型和可視化仿真模型,得出了數值仿真結果和可視化仿真結果,并進行了對比驗證,結果符合實際情況。
2) 利用添加的多個跟蹤觀察視角,可以實時、直觀地觀察到導彈飛行姿態變化。
3) 可視化結果清晰直觀,便于觀察,有助于增強對模型的理解,在教學、演示、實驗中都將起到重要作用。