彭亮,黃心漢
(華中科技大學(xué) 控制科學(xué)與工程系,湖北 武漢,430074)
巡航導(dǎo)彈作為遠(yuǎn)程精確制導(dǎo)的高技術(shù)武器裝備,已成為以“非接觸精確打擊”的重要武器。建立巡航導(dǎo)彈實(shí)時(shí)視景仿真系統(tǒng),可以降低其研制和開發(fā)的費(fèi)用和周期,減少巡航導(dǎo)彈遇到內(nèi)部故障或在不可預(yù)見的復(fù)雜戰(zhàn)場環(huán)境中導(dǎo)致故障的可能性,有利于研究人員的研究和開發(fā)。虛擬現(xiàn)實(shí)仿真技術(shù)是20世紀(jì)80年代末發(fā)展起來的一項(xiàng)仿真技術(shù),它以良好的沉浸感、逼真度和人機(jī)交互性能已應(yīng)用于軍事、航空航天、建筑、娛樂和醫(yī)療等領(lǐng)域[1?2]。一般的基于PC環(huán)境下開發(fā)的仿真系統(tǒng)側(cè)重于視景沉浸感的表現(xiàn)或運(yùn)動(dòng)模擬。應(yīng)用C++等高級(jí)編程語言開發(fā)的仿真系統(tǒng)往往注重于物體的運(yùn)動(dòng)模擬,開發(fā)代碼繁復(fù),開發(fā)周期長,可靠性低,不利于系統(tǒng)的維護(hù)。而采用Vega Prime等仿真軟件能對(duì)虛擬環(huán)境進(jìn)行快速開發(fā)[3],但對(duì)于運(yùn)動(dòng)的模擬效果一般。為此,本文作者首先對(duì)巡航導(dǎo)彈進(jìn)行受力分析,建立導(dǎo)彈的六自由度動(dòng)力學(xué)方程,然后,利用Matlab/Simulink軟件建立巡航導(dǎo)彈的數(shù)學(xué)模型,建立巡航導(dǎo)彈的運(yùn)動(dòng)仿真系統(tǒng);利用Multigen Creator軟件建立巡航導(dǎo)彈的實(shí)體模型,并運(yùn)用Vega Prime軟件建立視景仿真系統(tǒng);最后,利用Visual C++將2個(gè)系統(tǒng)聯(lián)合起來,組成完整的巡航導(dǎo)彈實(shí)時(shí)視覺仿真系統(tǒng)。
對(duì)巡航導(dǎo)彈的動(dòng)力學(xué)進(jìn)行分析和求解時(shí),必須先選用適當(dāng)?shù)拿枋鲅埠綄?dǎo)彈的坐標(biāo)系。對(duì)于導(dǎo)彈等飛行器,常用的右手坐標(biāo)系有地面坐標(biāo)系A(chǔ)xyz、彈體坐標(biāo)系Ox1y1z1、彈道坐標(biāo)系Ox2y2z2和速度坐標(biāo)系Ox3y3z3[4]。
(1) 地面坐標(biāo)系A(chǔ)xyz:與地面固聯(lián),原點(diǎn)A取導(dǎo)彈質(zhì)心在地面上的投影點(diǎn),Ax軸在水平面內(nèi),指向目標(biāo)(或目標(biāo)在水平面上的投影點(diǎn))為正;Ay軸與水平面垂直,往上為正;Az軸按右手定則確定。
(2) 彈體坐標(biāo)系Ox1y1z1:原點(diǎn)O取在導(dǎo)彈的質(zhì)心;Ox1軸與彈體縱軸重合,指向頭部為正;Oy1軸在彈體縱向?qū)ΨQ平面內(nèi)與Ox1軸垂直,向上為正;Oz1軸垂直于Ox1y1平面,方向按照右手定則確定。
(3) 彈道坐標(biāo)系Ox2y2z2:原點(diǎn)O取在導(dǎo)彈的質(zhì)心;Ox2軸與導(dǎo)彈的速度矢量V重合;Oy2軸位于包含速度矢量的鉛垂平面內(nèi)且與 Ox2軸垂直,向上為正;Oz2軸按照右手定則確定。
(4) 速度坐標(biāo)系Ox3y3z3:原點(diǎn)O取在導(dǎo)彈的質(zhì)心;Ox3軸與導(dǎo)彈的速度矢量V重合;Oy3軸在彈體縱向?qū)ΨQ平面內(nèi)與Ox3軸垂直,向上為正;Oz3軸垂直于Ox1y1平面,方向按照右手定則確定。
導(dǎo)彈在飛行時(shí),所受的力主要有重力、發(fā)動(dòng)機(jī)推力、空氣動(dòng)力、氣動(dòng)力矩等[5]。
(1) 推力是導(dǎo)彈飛行的動(dòng)力,與燃料消耗量等因素有關(guān)。
式中:m˙為單位時(shí)間內(nèi)的發(fā)動(dòng)機(jī)燃料消耗量;ue為燃?xì)饨橘|(zhì)對(duì)彈體的噴出速度;Sa為發(fā)動(dòng)機(jī)噴管出口處的橫截面積;pa為發(fā)動(dòng)機(jī)噴管出口處燃?xì)饬鞯膲簭?qiáng);pH為導(dǎo)彈所處高度的大氣壓強(qiáng)。
(2) 空氣動(dòng)力可分解為阻力Fx、升力Fy和側(cè)向力Fz。試驗(yàn)結(jié)果表明:空氣動(dòng)力與來流的動(dòng)壓頭q和導(dǎo)彈的特征面積S成正比,即
式中:Cx,Cy和Cz分別為相對(duì)于彈體坐標(biāo)系的側(cè)向力、法向力和橫向力系數(shù),隨飛行馬赫數(shù)、高度、側(cè)滑角、攻角等飛行狀態(tài)的變化而變化;ρ為空氣密度;v為導(dǎo)彈飛行速度。
(3) 氣動(dòng)力矩主要包括俯仰力矩、偏航力矩、滾轉(zhuǎn)力矩,分別用無量綱力矩因數(shù)表示為:
(4) 導(dǎo)彈所受的重力和導(dǎo)彈的飛行高度有關(guān)。
式中:g0為地球表面的重力加速度,一般取為 9.81 m/s2;Re為地球半徑,一般取為6 371 km; H為導(dǎo)彈離地面的高度。
根據(jù)導(dǎo)彈的受力以及剛體運(yùn)動(dòng)學(xué)原理,就可以得到導(dǎo)彈的六自由度數(shù)學(xué)模型。導(dǎo)彈運(yùn)動(dòng)方程組是表征導(dǎo)彈運(yùn)動(dòng)規(guī)律的數(shù)學(xué)模型,是分析、計(jì)算或模擬導(dǎo)彈運(yùn)動(dòng)的基礎(chǔ)。導(dǎo)彈在空間的運(yùn)動(dòng)方程由描述導(dǎo)彈質(zhì)心運(yùn)動(dòng)和彈體姿態(tài)變化的動(dòng)力學(xué)方程、運(yùn)動(dòng)學(xué)方程、導(dǎo)彈的質(zhì)量變化方程和角度關(guān)系方程等組成[6?7]:
式中:各參數(shù)的具體含義見文獻(xiàn)[6]。
Simulink是Matlab最重要的組件之一,它提供一個(gè)動(dòng)態(tài)系統(tǒng)建模、仿真和綜合分析的集成環(huán)境,具有強(qiáng)大的數(shù)據(jù)處理和仿真功能[8]。根據(jù)導(dǎo)彈的動(dòng)力學(xué)數(shù)學(xué)模型,利用Simulink建立導(dǎo)彈運(yùn)動(dòng)仿真系統(tǒng),將導(dǎo)彈的整個(gè)武器裝備系統(tǒng)按功能分為多個(gè)模塊(如圖1所示),并將其進(jìn)行封裝,有利于程序的可移植性與重用性。然后,利用 Matlab/Simulink建立巡航導(dǎo)彈的Simulink模型[9],如圖2所示。這樣,可以根據(jù)已建立的Simulink仿真模型獲得導(dǎo)彈各個(gè)時(shí)刻運(yùn)動(dòng)的位置、速度、加速度。還可以根據(jù)這些信息利用Simulink模擬動(dòng)畫,但視圖只能展現(xiàn)出一維信息,對(duì)于空間的表現(xiàn)力不強(qiáng)。采用仿真軟件Vega Prime能克服該缺點(diǎn)。
利用Vega Prime軟件進(jìn)行仿真,首先要建立導(dǎo)彈等物體的實(shí)體模型。Multigen Creator軟件獨(dú)有的可視化數(shù)據(jù)庫為實(shí)時(shí)系統(tǒng)的應(yīng)用提供了有效的途徑。利用Wall和Loft等方法,結(jié)合CAD導(dǎo)入實(shí)體模型,采用DOF技術(shù),加入特征紋理,建立導(dǎo)彈實(shí)體模型,可以獲得良好的視覺效果[10]。導(dǎo)彈的實(shí)體模型結(jié)構(gòu)如圖3所示。
圖1 導(dǎo)彈飛行仿真模塊Fig.1 Flight simulation module of missile
圖2 基于Simulink的系統(tǒng)仿真模型Fig.2 System simulation model based on Simulink
圖3 導(dǎo)彈的實(shí)體模型框架Fig.3 Framework of constructing entity model
在使用導(dǎo)彈模型時(shí),必須保證紋理文件和*.fit格式的模型文件在1個(gè)文件夾下,這將會(huì)使程序的可靠性降低。利用插件將兩者組合生成*.fst格式的模型文件,可以提高程序的可靠性,使Vega Prime軟件調(diào)用速度更快。導(dǎo)彈的*.fst模型如圖4所示。
圖4 導(dǎo)彈的*.fst模型Fig.4 *.fst model of missile
Vega Prime應(yīng)用程序一般分為2個(gè)主要階段:Vega Prime系統(tǒng)的靜態(tài)描述階段和Vega Prime系統(tǒng)的動(dòng)態(tài)循環(huán)。前一階段的主要工作是為確保Vega Prime系統(tǒng)的正常運(yùn)行進(jìn)行必要的系統(tǒng)設(shè)置,主要包括內(nèi)存分配、參數(shù)配置、Vega Prime基本類的定義等,這一階段保證渲染出流暢的動(dòng)態(tài)視景仿真畫面,再加入相應(yīng)的交互控制代碼完成各種仿真應(yīng)用[11?12]。本系統(tǒng)中,導(dǎo)彈是場景中運(yùn)動(dòng)的物體,在Vega Prime軟件的開發(fā)環(huán)境下,每一個(gè)運(yùn)動(dòng)的物體都是1個(gè)控制對(duì)象,為場景中的導(dǎo)彈運(yùn)動(dòng)物體需要建立了相應(yīng)的控制,要控制導(dǎo)彈的運(yùn)動(dòng)就是通過改變它的位置來實(shí)現(xiàn)的。在視景端,導(dǎo)彈需要按照預(yù)先定義的路徑運(yùn)動(dòng),從而實(shí)現(xiàn)仿真運(yùn)動(dòng)效果,本文中導(dǎo)彈的運(yùn)動(dòng)數(shù)據(jù)是通過 Matlab/Simulink仿真軟件計(jì)算得到的。Vega Prime應(yīng)用程序框架如圖5所示。
圖5 視覺仿真系統(tǒng)流程圖Fig.5 Flow chart of vision simulation system
利用Vega Prime和Creator聯(lián)合完成的視景仿真系統(tǒng),提供了真實(shí)環(huán)境的沉浸感,但對(duì)于導(dǎo)彈這種對(duì)象的運(yùn)動(dòng)控制要求很高,簡單的情景再現(xiàn)不夠,這就需要利用Visual C++將Vega Prime和Matlab/Simulink 2種仿真軟件聯(lián)合起來,實(shí)現(xiàn)各自的優(yōu)勢。
彈道實(shí)時(shí)參數(shù)感知仿真平臺(tái)是 1個(gè)由軟件 Vega Prime,Visual C++和Matlab相結(jié)合,采用可視化軟件Vega Prime、利用Matlab/simulink強(qiáng)大的計(jì)算能力和仿真能力作為后臺(tái)的實(shí)時(shí)計(jì)算平臺(tái),它利用 Visual C++強(qiáng)大的接口功能實(shí)現(xiàn)前后平臺(tái)間的實(shí)時(shí)數(shù)據(jù)傳輸。系統(tǒng)原理如圖6所示。
圖6 系統(tǒng)原理圖Fig.6 System schematic diagram
為了實(shí)現(xiàn)虛擬現(xiàn)實(shí)仿真平臺(tái),首先利用建模軟件Creator進(jìn)行底層建模,建立模型庫,生成*.flt實(shí)體模型文件;運(yùn)用Matlab/Simulink軟件強(qiáng)大的計(jì)算功能以及矩陣計(jì)算能力計(jì)算導(dǎo)彈的位姿、速度、加速度;利用Vega Prime調(diào)用*.acf文件來進(jìn)行場景配置;最后,利用 Visual C++集真仿真平臺(tái),生成*.exe可執(zhí)行文件[13]。程序流程如圖7所示。
圖7 程序流程圖Fig.7 Program flow chart
在該仿真平臺(tái)下,Visual C++用于整個(gè)系統(tǒng)的集成;用Vega Prime軟件對(duì)仿真系統(tǒng)進(jìn)行驅(qū)動(dòng),實(shí)現(xiàn)可視化仿真;用Matlab/Simulink軟件實(shí)現(xiàn)復(fù)雜的導(dǎo)彈彈道及位姿等信息的計(jì)算。采用該系統(tǒng)設(shè)計(jì)的仿真平臺(tái),充分利用了Matlab/Simulink軟件豐富的數(shù)值運(yùn)算和仿真功能以及Vega Prime軟件的可視化功能。同時(shí),它結(jié)合Visual C++軟件面向?qū)ο?、可視化等Windows效率和程序功能,具有明顯的優(yōu)越性和通用性。
Visual C++與Matlab軟件的混合編程有以下幾種形式[14]:(1) 利用Matlab的API標(biāo)準(zhǔn)接口實(shí)現(xiàn)混合編程;(2) 利用Matcom實(shí)現(xiàn)Matlab與Visual C++的混合編程;
(3) 在Visual C++軟件中調(diào)用Matlab引擎,通過在后臺(tái)運(yùn)行Matlab來實(shí)現(xiàn)與Visual C++軟件的混合編程;
(4) 通過調(diào)用語言編譯器和連接器,將Matlab程序編譯成Visual C++文件。
本文采用形式(4),在Matlab環(huán)境中將Matlab函數(shù)編譯成可以脫離Matlab環(huán)境運(yùn)行的動(dòng)態(tài)連接庫,在Visual C++環(huán)境中編寫Vega Prime應(yīng)用程序,加載并調(diào)用動(dòng)態(tài)連接庫,實(shí)現(xiàn)三者之間的無縫連接。該方法的關(guān)鍵在于對(duì)Matlab與Visual C++的接口進(jìn)行編程。由于其完全脫離了Matlab環(huán)境,并提高了編程效率,因此,得到了廣泛應(yīng)用。
Simulink與VC應(yīng)用程序接口一個(gè)顯著的特點(diǎn)是Simulink仿真必須依賴于 MATLAB系統(tǒng)[15]。到目前為止,MATLAB提供引擎方式將Simulink與VC應(yīng)用程序的編程結(jié)合起來。要通過引擎方式將Simulink與VC結(jié)合起來,首先需掌握VC與MATLAB通過引擎方式混合編程以及Simulink命令行仿真技術(shù)。
實(shí)時(shí)可視化仿真試驗(yàn)平臺(tái)由控制模塊、繪圖模塊以及算法子模塊3部分構(gòu)成,如圖8所示。
圖8 程序模塊圖Fig.8 Program module chart
控制模塊由Visual C++語言編寫,實(shí)現(xiàn)對(duì)場景以及導(dǎo)彈模型的選取和控制。對(duì)導(dǎo)彈的控制包括導(dǎo)彈的平移和旋轉(zhuǎn)以及在有效算法下對(duì)目標(biāo)進(jìn)行攻擊。同時(shí),采用Vega Prime軟件提供的接口函數(shù)以獲取導(dǎo)彈運(yùn)行環(huán)境的實(shí)時(shí)參數(shù)。
繪制模塊由Vega Prime應(yīng)用程序編寫。由于Vega Prime軟件本身自帶了在Windows平臺(tái)下的API接口,因此,大大簡化了開發(fā)過程,縮短了開發(fā)周期,并使開發(fā)的程序具有很大的通用性。它主要用于實(shí)現(xiàn)對(duì)對(duì)象模型的驅(qū)動(dòng),從而實(shí)現(xiàn)三維仿真,并通過參數(shù)傳遞接受控制模塊的控制。
算法子模塊由 Matlab編寫,把有效算法編寫成*.m文件,經(jīng)過上述操作,制作成動(dòng)態(tài)鏈接庫,通過Visual C++與Matlab/Simulink的接口編程,與控制模塊之間實(shí)現(xiàn)參數(shù)交換,并對(duì)繪制模塊進(jìn)行有效控制。
在該平臺(tái)下對(duì)某型導(dǎo)彈進(jìn)行視景仿真試驗(yàn),運(yùn)行結(jié)果如圖9和圖10所示。其中:圖9所示為導(dǎo)彈的爬升狀態(tài)截圖,圖10所示為仿真系統(tǒng)總體框架的界面圖。
圖9 導(dǎo)彈飛行圖Fig.9 Missile flight drawing
圖10 總界面圖Fig.10 Total interface drawing
(1) 在充分分析當(dāng)前巡航導(dǎo)彈操作訓(xùn)練所帶來的問題的基礎(chǔ)上,提出采用軟件VC和Vega Prime軟件開發(fā)視景仿真程序的方法,以巡航導(dǎo)彈虛擬仿真系統(tǒng)為背景,實(shí)現(xiàn)了用Vega Prime軟件進(jìn)行視景仿真驅(qū)動(dòng)。
(2) 利用Matlab/Simulink軟件建立導(dǎo)彈的運(yùn)動(dòng)仿真部分,獲取導(dǎo)彈各個(gè)時(shí)刻的速度、位置、加速度等,能夠?qū)?dǎo)彈的運(yùn)動(dòng)特性進(jìn)行模擬并具有良好的移植性,可供不同的研究對(duì)象使用。結(jié)合VC和Vega Prime軟件兩者的優(yōu)勢,采用面向?qū)ο蟮脑O(shè)計(jì)方法,有利于提高系統(tǒng)的可擴(kuò)展性、重用性和可修改性。
(3) 該系統(tǒng)在有效算法的控制下,可以實(shí)現(xiàn)對(duì)導(dǎo)彈彈道參數(shù)、氣動(dòng)力及導(dǎo)彈位姿參數(shù)的實(shí)時(shí)計(jì)算,并實(shí)現(xiàn)對(duì)導(dǎo)彈整個(gè)運(yùn)行過程的三維實(shí)時(shí)仿真。
(4) 所研究的設(shè)計(jì)方案基于VC和Vega Prime軟件的視景仿真控制方法,對(duì)開發(fā)類似武器裝備的操作訓(xùn)練系統(tǒng)具有一定的參考價(jià)值。
[1]古伊, 高井祥, 孫九運(yùn). 基于Creator Pro/Vega Prime的三維地形仿真技術(shù)[J]. 礦山測量, 2005(1): 27?29.GU Ying, GAO Jing-xiang, SUN Jiu-yun. Description of creator Pro/Vega Prime based three-dimensional topographic simulation techniques[J]. Mine Surveying, 2005(1): 27-29.
[2]王云翔, 趙經(jīng)成, 付戰(zhàn)平, 等. 基于Vega Prime的視景仿真驅(qū)動(dòng)技術(shù)研究[J]. 微型計(jì)算機(jī)信息, 2008, 24(3): 214?216.WANG Yun-xiang, ZHAO Jing-cheng, FU Zhan-ping, et al.Research of scene simulation drive technique based on Vega Prime[J]. Microcomputer Information, 2008, 24(3): 214?216.
[3]李亞臣, 胡健, 黎遠(yuǎn)忠, 等. 基于Vega Prime的航天器視景仿真中的多坐標(biāo)系問題[J]. 系統(tǒng)仿真學(xué)報(bào), 2007, 19(3): 575?578.LI Ya-chen, HU Jian, LI Yuan-zhong, et al. Research on various coordinate systems in spacecraft visual simulation based on Vega Prime[J]. Journal of System Simulation, 2007, 19(3): 575?578.
[4]張靜瑜. 導(dǎo)彈彈道建模與仿真系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)[D]. 吉林大學(xué)計(jì)算機(jī)科學(xué)與技術(shù)學(xué)院, 2009.ZHANG Jing-yu. Design and implementation of missile trajectory modeling and simulation system[D]. College of Computer Science and Technology, Jilin University, 2009.
[5]錢杏芳, 張鴻端, 林瑞雄. 導(dǎo)彈飛行力學(xué)[M]. 北京: 北京理工大學(xué)出版社, 2000.QIAN Xing-fang, ZHANG Hong-duan, LIN Rui-xiong. Missile flight mechanics[M]. Beijing: Beijing Institute of Technology Press, 2000.
[6]趙晶慧. 遠(yuǎn)程空空導(dǎo)彈制導(dǎo)控制系統(tǒng)研究[D]. 哈爾濱工業(yè)大學(xué)航天工程系, 2007.ZHAO Jing-hui. Study on guidance control system of long range air to air missile[D]. Department of Astronautic Engineering,Harbin Institute of Technology, 2007.
[7]郝麗杰, 姚郁, 姜宇. 質(zhì)量矩控制導(dǎo)彈的建模與仿真研究[J].系統(tǒng)仿真學(xué)報(bào), 2005, 17(9): 2054?2056.HAO Li-jie, YAO Yu, JIANG Yu. Modeling and simulation research of missile based on mass moment control[J]. Journal of System Simulation, 2005, 17(9): 2054?2056.
[8]黃永安, 馬路, 劉慧敏. MATLAB7.0/Simulink6.0建模仿真開發(fā)與高級(jí)工程應(yīng)用[M]. 北京: 清華大學(xué)出版社, 2005.HUANG Yong-an, MA Lu, LIU Hui-min. Modeling and simulation for development and advanced project application of MATLAB7.0/Simulink6.0[M]. Beijing: Tsinghua University Press, 2005.
[9]王欣, 姚俊, 王育欣. 基于 Matlab/Simulink的導(dǎo)彈三通道彈道仿真[J]. 裝備制造技術(shù), 2007(12): 68?69.WANG Xin, YAO Jun, WANG Yu-xin. Three-channel ballistic simulation of missile based on Matlab/Simulink[J]. Equipment Manufacturing Technology, 2007(12): 68?69.
[10]CHEN Shi-neng, XU Li-mei, LI Hui. Research on 3D modeling in scene simulation based on Creator and 3dsmax[J]. Journal of Electronic Science and Technology of China, 2006, 4(2):1736?1740.
[11]ZHANG Shu-ai, TAN Guo-xin, LIANG Bo, et al. Design and implementation of real-time 3D campus scene simulation management system based on Vega[C]//International Conference on Computer Science and Software Engineering. Wuhan, 2008:1162?1165.
[12]YANG Si, LI Xiao-min, XIE Hui. UAV servicing and training system based on VR and HLA[C]//The Eighth International Conference on Electronic Measurement and Instruments. Xi’an,2007, 341?345.
[13]CHEN Gang, GAN Zhi-chun, SHENG Jian-jun, et al. Equipment simulation training system based on virtual reality[C]//International Conference on Computer and Electrical Engineering. Zhengzhou, 2008: 563?567.
[14]沈智芳, 易從艷. Visual C++與MATLAB程序的接口研究[J].電腦開發(fā)與應(yīng)用, 2008(10): 824?826.SHEN Zhi-fang, YI Cong-yan, Visual C++ and MATLAB the procedure interface studies[J]. Computer Development and Applications. Zhengzhou, 2008(10): 824?826.
[15]王春民, 安海忠, 王豐貴. 基于VC和Smiulink的電力電子仿真實(shí)驗(yàn)平臺(tái)設(shè)計(jì)[J]. 吉林大學(xué)學(xué)報(bào): 信息科學(xué)版, 2008, 26(3):265?269.WANG Chun-min, AN Hai-zhong, WANG Feng-gui. Design of simulation experimental platform for power electronics based on VC and Simulink [J]. Journal of Jilin University: Information Science Edition, 2008, 26(3): 265?269.