劉 哲 董長虹 韓 潮
(北京航空航天大學(xué) 宇航學(xué)院,北京 100191)
空間攔截仿真平臺設(shè)計(jì)
劉 哲 董長虹 韓 潮
(北京航空航天大學(xué) 宇航學(xué)院,北京 100191)
仿真平臺研制是系統(tǒng)仿真的重要課題.根據(jù)空間攔截過程仿真的需要,提出了一個(gè)可集成多種空間攔截任務(wù)、便于擴(kuò)展、具有完善可視化功能的仿真平臺設(shè)計(jì)方案.介紹了仿真平臺的層次劃分、各層次的主要功能以及層次間的關(guān)系.詳細(xì)闡述了仿真平臺的整體框架.重點(diǎn)研究了平臺可視化的實(shí)現(xiàn)技術(shù)和集成多種攔截任務(wù)的具體方法.實(shí)際應(yīng)用表明:該平臺可以完成多種空間攔截任務(wù)的仿真并具備足夠的擴(kuò)展能力,完備的可視化功能更為空間攔截問題的研究提供了便利.
仿真;設(shè)計(jì);多任務(wù);可視化
隨著計(jì)算機(jī)技術(shù)的迅速發(fā)展,航空航天領(lǐng)域仿真軟件正向著通用化、可視化的方向發(fā)展.國外如美國AGI公司研制的STK(Satellite Tool Kit),是可執(zhí)行陸、海、空、天、電(磁)等多種任務(wù)的仿真平臺.STK應(yīng)用內(nèi)嵌的三維顯示模塊提供逼真的三維顯示環(huán)境[1].再如文獻(xiàn)[2]開發(fā)的開源飛行模擬軟件包FlightGear,其核心的JSBSim飛行動(dòng)力學(xué)引擎可以模擬多種航空飛行器的真實(shí)飛行,同時(shí)利用了OSG(Open Scence Graphic)圖形庫進(jìn)行飛行場景的組織和渲染.當(dāng)前國內(nèi)也有仿真平臺研發(fā)的報(bào)道,如基于HLA(High Level Architecture),以及 OpenGL(Open Graphics lib)[3]的仿真平臺.
針對空間攔截任務(wù),目前國內(nèi)外很少有成熟的仿真平臺公開發(fā)行.其原因:①出于軍事安全的考慮,如STK的攔截飛行工具模塊(IFT,Intercept Flight Tools)和導(dǎo)彈飛行工具模塊(MFT,Missile Flight Tools)僅在美國國內(nèi)銷售;②由于攔截問題本身的復(fù)雜性:由于不同型號的攔截器其動(dòng)力學(xué)模型有差異,制導(dǎo)體制也相去甚遠(yuǎn),即便是同種攔截器,面對不同性能的目標(biāo)時(shí)其相應(yīng)的攔截策略也大相徑庭.針對這種情況,自主研制一款集通用性(即可進(jìn)行多種空間攔截任務(wù)的仿真)和完善的可視化能力于一身的仿真平臺很有必要.
本文首先介紹了仿真軟件的層次劃分和各層次的主要功能,然后詳細(xì)闡述仿真軟件的系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn),重點(diǎn)討論仿真軟件層次內(nèi)和層次間的服務(wù)與連接關(guān)系、建立于這些關(guān)系基礎(chǔ)之上的多任務(wù)集成與擴(kuò)展的實(shí)現(xiàn)方法、多視圖的實(shí)現(xiàn)方法等.此外,文中還對攔截程序的文件配置方式和仿真場景的保存與恢復(fù)加以說明.
本文將空間攔截仿真軟件系統(tǒng)按功能的不同劃分為3個(gè)層次:界面層、邏輯層、數(shù)據(jù)層.軟件界面用于獲得用戶的輸入,包括輸入的數(shù)據(jù)及仿真進(jìn)程的控制指令,并以多個(gè)視圖的方式從不同角度表現(xiàn)邏輯層對輸入數(shù)據(jù)的處理結(jié)果;邏輯層是軟件的核心層次,將輸入數(shù)據(jù)帶入該層中的仿真程序進(jìn)行計(jì)算,同時(shí)在計(jì)算過程中響應(yīng)用戶對仿真進(jìn)程的控制指令,最后將得到的計(jì)算結(jié)果送給界面層顯示或數(shù)據(jù)層保存;數(shù)據(jù)層則負(fù)責(zé)數(shù)據(jù)文件的讀取和保存,本文的數(shù)據(jù)文件包括對邏輯層中的空間攔截程序進(jìn)行初始值配置的文本文件及保存仿真場景數(shù)據(jù)的二進(jìn)制文件.
仿真軟件的3個(gè)層次中每2個(gè)層次間都有直接的關(guān)聯(lián),見圖1.界面層可以控制邏輯層中的仿真進(jìn)程的進(jìn)行,也可調(diào)用數(shù)據(jù)層的配置程序?qū)壿媽又蟹抡娉绦蜻M(jìn)行初始參數(shù)配置.界面層的視圖數(shù)據(jù)和邏輯層的仿真程序當(dāng)前狀態(tài)可以通過數(shù)據(jù)層存儲為仿真場景文件,數(shù)據(jù)層也可讀取仿真場景文件完成界面層和邏輯層仿真數(shù)據(jù)的恢復(fù).
圖1 仿真軟件的3個(gè)層次
軟件系統(tǒng)的設(shè)計(jì)主要是將系統(tǒng)劃分為不同功能的模塊,明確各模塊間的層次關(guān)系,確定模塊間的接口及人機(jī)交互界面等.通常采用面向?qū)ο?object oriented)的設(shè)計(jì)方法,并在設(shè)計(jì)過程中遵循一定的設(shè)計(jì)模式[4].
1)邏輯層的3層庫架構(gòu).本文將邏輯層劃分為3個(gè)層次:底層工具箱、飛行器模型庫、飛行程序類庫.
邏輯層中需囊括通用的工具、方法、模型、算法,這些功能比較獨(dú)立和基礎(chǔ),組成了邏輯層的底層工具箱,為上層提供支持.為縮短研制周期,工具箱并未完全抽象成類,一部分由本實(shí)驗(yàn)室既有靜態(tài)函數(shù)組成,這些靜態(tài)函數(shù)接口定義明確,使用方便,計(jì)算結(jié)果準(zhǔn)確.底層工具箱的構(gòu)成見圖2,圖中灰色模塊已封裝成類.
圖2 底層工具箱預(yù)置工具
邏輯層中還預(yù)置了不同的攔截導(dǎo)彈和目標(biāo)模型.
預(yù)置的攔截導(dǎo)彈模型分為兩種,這兩種攔截導(dǎo)彈為攔截不同的目標(biāo)而設(shè)計(jì).兩種模型都可進(jìn)行全彈道仿真.導(dǎo)彈彈道跨越大氣層內(nèi)外,大氣層內(nèi)彈道計(jì)算通過調(diào)用底層庫的數(shù)值積分函數(shù),解算地心慣性坐標(biāo)系下六自由度運(yùn)動(dòng)方程完成,大氣層外彈道計(jì)算通過軌道預(yù)報(bào)器完成.攔截導(dǎo)彈調(diào)用底層庫的坐標(biāo)變換函數(shù)完成地心慣性坐標(biāo)系與諸如發(fā)射坐標(biāo)系、發(fā)射慣性坐標(biāo)系、彈道坐標(biāo)系、本體坐標(biāo)系等的坐標(biāo)系變換.底層庫的插值函數(shù)、大氣模型用于計(jì)算攔截導(dǎo)彈的氣動(dòng)力系數(shù).
預(yù)置的目標(biāo)模型涵蓋了大氣層內(nèi)、外飛行的不同種類飛行器.這些模型的彈道數(shù)據(jù)的產(chǎn)生方式有兩種:通過仿真平臺實(shí)時(shí)計(jì)算或讀入給定的彈道數(shù)據(jù)然后按需要進(jìn)行插值;彈道數(shù)據(jù)的實(shí)時(shí)計(jì)算同樣由底層庫來支持.
以上飛行器模型全部封裝成了類,形成了飛行器模型類庫,類庫組成見圖3.這是邏輯層的第2層,應(yīng)用底層庫的服務(wù),同時(shí)為上層提供服務(wù).
邏輯層頂層為飛行程序類庫.飛行程序類內(nèi)嵌多種制導(dǎo)律,用于攔截導(dǎo)彈的初、中、末制導(dǎo);在攔截過程中,飛行程序類需要得到目標(biāo)及攔截導(dǎo)彈的狀態(tài)信息,應(yīng)用這些信息計(jì)算彈、目相對運(yùn)動(dòng)參數(shù),并通過內(nèi)嵌的制導(dǎo)規(guī)律計(jì)算出攔截導(dǎo)彈的控制指令,傳送給攔截導(dǎo)彈控制其飛行.這樣,飛行程序類相當(dāng)于一個(gè)中介,協(xié)調(diào)導(dǎo)彈和目標(biāo)的交互.因此,應(yīng)用 Mediator(中介者)[4]設(shè)計(jì)模式設(shè)計(jì)飛行程序類.針對不同類型的攔截導(dǎo)彈及目標(biāo),邏輯層預(yù)置了3類Mediator,見圖3.頂層庫中每一個(gè)Mediator都具有對它所包含的攔截彈的攔截全程進(jìn)行仿真的能力.
圖3 邏輯層的飛行程序類庫
2)邏輯層的擴(kuò)展方法.仔細(xì)分析圖3可以得到邏輯層自頂向下的擴(kuò)展方案.如果邏輯層頂層預(yù)置的 Mediator 1,Mediator 2,Mediator 3中的導(dǎo)彈和目標(biāo)的數(shù)據(jù)交互方式不能滿足仿真需求,研究人員可自行開發(fā)新的Mediator,如圖3中的Mediator 4,在Mediator 4中重新定義滿足需要的數(shù)據(jù)交互方式.擴(kuò)展的Mediator中包含的攔截導(dǎo)彈和目標(biāo)可以使用飛行器模型庫中預(yù)置的模型,如果沒有合適的模型,則可先對飛行器模型庫進(jìn)行擴(kuò)充,定義新的模型,再將模型集成到擴(kuò)展的Mediator中.如果擴(kuò)展的飛行器模型需要額外的底層工具的支持,則再對底層工具箱進(jìn)行擴(kuò)展.
1)界面層的文檔/視圖模式.由第1節(jié)可知,界面層需要實(shí)現(xiàn)與邏輯層的交互,并且需要具備多視圖顯示的能力.本文采用 MFC(Microsoft Foundation Classes)多文檔應(yīng)用程序框架設(shè)計(jì)人機(jī)界面,可以滿足界面層的需求.MFC的全面介紹參見文獻(xiàn)[5].為滿足仿真平臺的性能需求,采用Microsoft的GDI(Graphics Device Interface)實(shí)現(xiàn)了符合要求的動(dòng)畫,GDI的深入闡釋參見文獻(xiàn)[6].
文檔/視圖是MFC的基石,其最大好處是將數(shù)據(jù)與視圖分離.對MFC的文檔/視圖的透徹講解參見文獻(xiàn)[7].MFC的多文檔應(yīng)用程序框架提供了文檔模板類來記錄文檔與視圖的關(guān)聯(lián)信息.一個(gè)應(yīng)用程序可以擁有多個(gè)模板,一個(gè)模板默認(rèn)關(guān)聯(lián)一個(gè)文檔,一個(gè)文檔可以關(guān)聯(lián)多個(gè)視圖.結(jié)合邏輯層的特點(diǎn),直接利用MFC的多文檔應(yīng)用程序框架,完成了界面層的設(shè)計(jì).
圖4 仿真平臺詳細(xì)架構(gòu)
界面層內(nèi)部詳細(xì)結(jié)構(gòu)參見圖4.圖4中,將一個(gè)飛行程序類的實(shí)例作為一個(gè)文檔的成員變量,這樣邏輯層與界面層就關(guān)聯(lián)起來.運(yùn)行應(yīng)用程序時(shí),首先通過圖4或圖5中①所示的目標(biāo)選擇對話框選擇特定的文檔模板,利用文檔模板中記錄的文檔和視圖的關(guān)聯(lián)信息來實(shí)例化文檔及與其相關(guān)聯(lián)的視圖,同時(shí)也實(shí)例化了飛行程序,為仿真做好準(zhǔn)備.
2)基于GDI的動(dòng)畫技術(shù).近年來,體系完整、功能強(qiáng)大的開源圖形庫層出不窮.如OpenInventor,OSG,OGRE等.前兩者提供的功能較為底層,基本上是對OpenGL的面向?qū)ο蠓庋b,并提供場景圖結(jié)構(gòu),方便3D場景的管理.OGRE是一款游戲引擎,提供強(qiáng)大的游戲場景渲染和游戲資源的管理能力,主要面向3D游戲的開發(fā)者.
如果使用上述圖形庫實(shí)現(xiàn)仿真平臺的動(dòng)畫視圖,會達(dá)到逼真的顯示效果,但開源圖形庫體系龐大而復(fù)雜,使用過程中往往有不可預(yù)料的問題發(fā)生,難于掌控,對開發(fā)人員的知識水平、經(jīng)驗(yàn)要求較高.同時(shí),3D場景運(yùn)行時(shí)往往需要更多的計(jì)算機(jī)資源,對運(yùn)行環(huán)境的要求都較高.為在有限時(shí)間實(shí)現(xiàn)多視圖,保證質(zhì)量,滿足需求,本文直接使用GDI實(shí)現(xiàn)動(dòng)畫.
GDI較為底層,只提供2D繪圖能力,并不支持3D渲染和動(dòng)畫,所以需要自行實(shí)現(xiàn).GDI動(dòng)畫的關(guān)鍵技術(shù)在于兩個(gè)方面:使用雙緩存技術(shù)避免動(dòng)畫的閃爍;依據(jù)計(jì)算機(jī)圖形學(xué)完成3D數(shù)據(jù)的正則投影、透視投影和視點(diǎn)切換.圖4中,每個(gè)文檔都關(guān)聯(lián)一個(gè)視圖列表,每個(gè)列表都包含了一組視圖,包括2D視圖、3D視圖、曲線視圖.程序運(yùn)行時(shí),文檔包含的飛行程序?qū)嵗M(jìn)行計(jì)算得到相關(guān)數(shù)據(jù),文檔將這些數(shù)據(jù)送到與其關(guān)聯(lián)的視圖,對視圖進(jìn)行更新.本文實(shí)現(xiàn)的曲線視圖、2D動(dòng)畫視圖、3D動(dòng)畫視圖見圖5.
圖5 仿真平臺的多視圖人機(jī)交互界面
本文使用XML格式的文本文件保存仿真平臺模型的配置參數(shù),如圖5所示的XML配置文件,③是目標(biāo)衛(wèi)星的6個(gè)初始軌道根數(shù).為完成配置文件的生成和解析,本文實(shí)現(xiàn)了飛行程序配置模塊.數(shù)據(jù)層中的飛行程序配置模塊也實(shí)現(xiàn)為文檔的一個(gè)成員變量,通過文檔來實(shí)現(xiàn)配置模塊對飛行程序的配置動(dòng)作.具體的執(zhí)行流程是:由圖4或圖5中②標(biāo)示的配置文件選擇框選擇對應(yīng)于特定目標(biāo)的配置文件,然后由文檔調(diào)用飛行程序配置模塊對配置文件進(jìn)行解析,解析得到的數(shù)據(jù)對文檔中的飛行程序進(jìn)行配置.
仿真場景文件中存儲的數(shù)據(jù)包括2個(gè)部分:視圖列表中的視圖數(shù)據(jù)和飛行程序當(dāng)前狀態(tài)數(shù)據(jù).仿真平臺通過讀取仿真場景文件可以復(fù)現(xiàn)場景.如圖4所示,由于視圖列表和飛行程序都與文檔直接關(guān)聯(lián),故文檔可直接得到這些數(shù)據(jù),從而將仿真場景數(shù)據(jù)保存為仿真場景文件.恢復(fù)場景時(shí),如圖4中①所示,先由仿真場景文件選擇對話框相應(yīng)的仿真場景文件,則MFC框架會選擇合適的文檔模板,創(chuàng)建模板關(guān)聯(lián)的文檔和視圖,然后通過文檔讀取仿真場景文件中的數(shù)據(jù),對視圖及飛行程序進(jìn)行賦值,從而完成仿真場景的重現(xiàn).
仿真平臺的一體化擴(kuò)展指的是依據(jù)界面層、邏輯層和數(shù)據(jù)層的結(jié)構(gòu)關(guān)系,3個(gè)層次同時(shí)進(jìn)行功能性擴(kuò)展.圖4虛線標(biāo)示的部分即為3個(gè)層次的擴(kuò)展部分.2.1節(jié)已闡述了邏輯層的擴(kuò)展方法,由圖4知,在邏輯層增加了新類型的飛行程序之后,界面層需要新定義一個(gè)文檔和文檔模板,將新的飛行程序作為新文檔的成員變量.文檔關(guān)聯(lián)的視圖完全可以復(fù)用已有的2D、3D和曲線視圖.
下面詳細(xì)描述彈道導(dǎo)彈攔截衛(wèi)星,并且彈道末段使用比例導(dǎo)引法時(shí)的仿真流程.第1步選擇“文件”菜單下的“新建”,打開圖5中①所示的目標(biāo)選擇對話框,選擇“人造衛(wèi)星”后,打開攔截人造衛(wèi)星的仿真場景;第2步打開“文件”菜單下的“導(dǎo)入配置文件”對話框,選擇一個(gè)場景配置文件,通過場景配置文件讀入導(dǎo)彈、目標(biāo)的相關(guān)參數(shù).當(dāng)末制導(dǎo)律為比例導(dǎo)引時(shí),點(diǎn)擊“配置”菜單中的“當(dāng)前配置”,在制導(dǎo)律選擇下拉框中選擇“比例導(dǎo)引”.其它配置參數(shù)保持默認(rèn)值.之后點(diǎn)擊仿真進(jìn)程控制中的“繼續(xù)”按鈕,開始運(yùn)行仿真程序,則界面上將動(dòng)態(tài)輸出隨時(shí)間變化的攔截導(dǎo)彈和衛(wèi)星的飛行軌跡.點(diǎn)擊工具欄上的“保存”按鈕則可以將仿真生成的導(dǎo)彈和衛(wèi)星數(shù)據(jù)保存為二進(jìn)制文件.
本文詳細(xì)設(shè)計(jì)并實(shí)現(xiàn)了通用、具有完善的可視化能力的空間攔截仿真平臺.該平臺分為界面層、邏輯層、數(shù)據(jù)層3個(gè)層次.界面層采用MFC的多文檔應(yīng)用程序框架,界面層的文檔將邏輯層、數(shù)據(jù)層以及視圖列表相互聯(lián)系,可以通過增加文檔模板的形式增加新的飛行程序,從而集成更多的飛行程序,即完成仿真平臺的擴(kuò)展;界面層應(yīng)用GDI實(shí)現(xiàn)了多個(gè)視圖.邏輯層采取模塊化、層次化設(shè)計(jì).數(shù)據(jù)層實(shí)現(xiàn)了仿真場景保存、恢復(fù)以及飛行程序配置文件的生成和解析.該平臺的設(shè)計(jì)和實(shí)現(xiàn)方式對于航空航天仿真軟件的研制具有一定的參考價(jià)值.
References)
[1]楊穎.STK在計(jì)算機(jī)仿真中的應(yīng)用[M].北京:國防工業(yè)出版社,2005:1-4 YangYing.The application of STK in computer simulation[M].Beijing:National Defense Industry Press,2005:1 - 4(in Chinese)
[2]張宇宏,胡亞海,彭曉源,等.基于HLA的防空導(dǎo)彈武器系統(tǒng)仿真平臺研究[J].北京航空航天大學(xué)學(xué)報(bào),2003,29(1):1-4 Zhang Yuhong,Hu Yahai,Peng Xiaoyuan,et al.Simulation platform based on HLA for air defense missile weapon system[J].Journal of Beijing University of Aeronautics and Astronautics,2003,29(1):1 -4(in Chinese)
[3]張建平,余芳強(qiáng),吳大鵬,等.基于OpenGL的建筑施工虛擬仿真平臺的研究與開發(fā)[J].土木建筑工程信息技術(shù),2009,1(2):55-62 Zhang Jianping,Yu Fangqiang,Wu Dapeng,et al.Research and development of open GL-based construction virtual simulation platform[J].Journal of Information Technology in Civil Engineering and Architecture,2009,1(2):55 -62(in Chinese)
[4] Gamma E.Design patterns:elements of reusable object-oriented software[M].Boston,MA:Addision Wesley,1994:305 -315
[5] Kruglinski D J.Programming micros oft visual C++6.0 技術(shù)內(nèi)幕[M].5版.北京:北京希望電子出版社,2002:3-542 Kruglinski D J.Programming micros oft visual C++6.0[M].5th ed.Beijing:Beijing Hope Electronic Press,2002:3 - 542(in Chinese)
[6] Feng Yuan.Windows graphics programming Win32 GDIand direct Draw[M].Vpper Saddle River:Prentice Hall PTR,2000:3-202
[7]侯俊杰.深入淺出MFC[M].2版.北京:華中科技大學(xué)出版社,2001:401-409 Hou Junjie.Dissecting MFC[M].2nd ed.Beijing:Huazhong U-niversity of Science and Technology,2001:401 - 409(in Chinese)
(編 輯:張 嶸)
Simulation platform design for space intercept
Liu Zhe Dong Changhong Han Chao
(School of Astronautics,Beijing University of Aeronautics and Astronautics,Beijing 100191,China)
It is important for system simulation to build up a simulation platform.A simulation platform scheme,which was able to integrate varied space intercept missions,easy to extend,and with perfect visualization ability,was presented.The hiberarchy of the platform,main functions of each layer,and relationship between layers were introduced.The platform's architecture was described in detail.The implementation of visualization and concrete approaches to integrate varied missions were particularly studied.It is demonstrated through practice that this platform is capable of performing multi space intercept tasks,easy enough to extend,and convenient to study space intercept problems due to its powerful visualization.
simulation;design;multitasking;visualization
TP 391.9
A
1001-5965(2011)03-0355-05
2010-01-08
劉 哲(1985-),男,遼寧阜新人,碩士生,neo_csdn@Yeah.net.