孫詩行 宗 群 徐 銳
(天津大學(xué)電氣與自動化工程學(xué)院 天津 300072)
?
基于OGRE的衛(wèi)星視景仿真軟件的設(shè)計與實現(xiàn)
孫詩行宗群徐銳
(天津大學(xué)電氣與自動化工程學(xué)院天津 300072)
針對衛(wèi)星三維視景仿真的需求,設(shè)計并開發(fā)基于OGRE圖形引擎的衛(wèi)星視景仿真軟件,對整個飛行過程進行模擬和演示。衛(wèi)星視景仿真軟件基于OGRE圖形引擎進行底層渲染,結(jié)合3ds Max建模軟件進行三維實體模型構(gòu)建,基于自主開發(fā)的場景編輯工具生成衛(wèi)星星空場景。仿真軟件的功能模塊包括OGRE主體框架模塊、文件路徑管理模塊、場景數(shù)據(jù)管理模塊、網(wǎng)絡(luò)通信模塊和人機交互模塊。運行結(jié)果表明,衛(wèi)星視景仿真軟件可以逼真地模擬再現(xiàn)衛(wèi)星飛行場景,能夠?qū)崟r進行畫面模擬、數(shù)據(jù)監(jiān)視,具有廣闊的應(yīng)用前景。
視景仿真OGRE模塊化開發(fā)衛(wèi)星視景實時模擬
在航空航天技術(shù)的發(fā)展過程中,新時代的學(xué)科交叉對于推動航空航天技術(shù)的不斷進步起到了關(guān)鍵的作用,其中一個非常重要的方面就是視景仿真技術(shù)在航空航天相關(guān)領(lǐng)域研究中的應(yīng)用。視景仿真承擔(dān)了進行可視化的任務(wù),利用視景仿真技術(shù)對空間任務(wù)進行全程模擬,可以獲得高效可靠的設(shè)計對策,并提供較為直觀的演示效果,增強了仿真的真實性,有利于增加研究人員對于整個實驗過程的了解和認(rèn)識。
至今,視景仿真技術(shù)已經(jīng)取得了不小進展,許多國內(nèi)外的高校和研究機構(gòu)都進行了視景開發(fā)與技術(shù)研究相關(guān)的工作。目前國外的三維視景仿真有采用OpenGL圖形庫的方式,比如美國航空航天局(NASA)德萊頓飛行研究中心開發(fā)的飛行訓(xùn)練系統(tǒng),其中的實時視景模擬部分就是基于OpenGL進行開發(fā)的[1]。美國MultiGen-Paradigm公司雖然開發(fā)了一款簡捷的三維視景軟件Vega,但是由于該軟件許多底層的功能并沒有實現(xiàn),所以難以完成精細(xì)的開發(fā)[2]。華盛頓大學(xué)基于OGRE開發(fā)了移動機器人視景仿真系統(tǒng),取得了良好的效果[3]。國內(nèi)的視景仿真研究主要在近十幾年的時間內(nèi)興起,也取得了一定的研究進展和成果。例如,西北工業(yè)大學(xué)基于STK模塊開發(fā)了衛(wèi)星實時仿真系統(tǒng),但由于其非開源的特性,加大了研究和使用的成本[4];南京航空航天大學(xué)基于OGRE圖形引擎開發(fā)了電子海戰(zhàn)對戰(zhàn)模擬系統(tǒng)[5];華中科技大學(xué)基于OGRE開發(fā)了港口仿真的可視化演示系統(tǒng)[6];另外一些國內(nèi)的學(xué)者也針對衛(wèi)星視景軟件進行了相關(guān)的研究工作[7-9]。上述這些視景仿真軟件雖然都實現(xiàn)了視景仿真效果,但某些非開源軟件耗費了大量的開發(fā)時間與成本,需要團隊人員較多,商業(yè)授權(quán)版本昂貴,不適合研究使用;某些開發(fā)基于底層圖形API,導(dǎo)致開發(fā)復(fù)雜,可復(fù)用程度低。
在此背景下,本文選擇了開源免費的OGRE圖形引擎進行了衛(wèi)星視景仿真軟件的開發(fā)。該視景軟件使用可靠的軟件系統(tǒng)結(jié)合實時仿真平臺,實現(xiàn)對整個仿真過程的數(shù)字化、信息化及可視化監(jiān)控和管理。最后對設(shè)計的控制算法作出科學(xué)合理的判斷,并對算法進行不斷優(yōu)化。本文首先進行了基礎(chǔ)軟件模塊的設(shè)計與開發(fā),采用了模塊化可復(fù)用的架構(gòu)設(shè)計,極大地簡化了后續(xù)開發(fā)以及改進的流程,降低了使用以及維護的難度。然后在實時數(shù)據(jù)驅(qū)動的基礎(chǔ)上,使用已設(shè)計的基礎(chǔ)軟件模塊開發(fā)了一套以實時演示和可視化技術(shù)為基礎(chǔ)的衛(wèi)星視景仿真軟件,為衛(wèi)星飛行中對編隊構(gòu)型設(shè)計的驗證和各個衛(wèi)星姿態(tài)的實時觀察提供一個更加優(yōu)秀的解決方案,提高衛(wèi)星控制算法驗證的效率,驗證算法設(shè)計的正確性。
本文開發(fā)的衛(wèi)星視景仿真軟件依托于仿真平臺而運行,仿真平臺結(jié)構(gòu)主要包括xPC實時仿真計算機、主控計算機以及視景仿真計算機。其中xPC實時仿真機運行衛(wèi)星編隊仿真模型與算法,并將仿真數(shù)據(jù)實時發(fā)送給主控計算機。這里,主控計算機用來模擬“地面站”,對整個仿真系統(tǒng)進行管理與控制;同時通過以太網(wǎng)發(fā)送衛(wèi)星編隊的位置與姿態(tài)信息給視景仿真計算機,由其上運行的衛(wèi)星視景仿真軟件實時演示衛(wèi)星編隊過程。
1.1視景仿真軟件需求分析
視景演示軟件的開發(fā)目標(biāo),是在OGRE圖形引擎的基礎(chǔ)上,構(gòu)建可復(fù)用的實時視景演示程序,配合仿真平臺進行實時的三維模擬演示。軟件需要實現(xiàn)以下性能指標(biāo):
1) 較高的開發(fā)效率。視景仿真軟件基于OGRE圖形引擎進行開發(fā),相對于DirectX和OpenGL圖形API擁有更高的開發(fā)效率,能夠極大地縮短開發(fā)周期,減少維護難度。
2) 基礎(chǔ)模塊的組成化特性。視景仿真軟件應(yīng)該對通用的功能特性(例如網(wǎng)絡(luò)、人機界面等)具有很好的抽象,并具備相應(yīng)的基礎(chǔ)模塊,符合軟件工程的模塊化和可復(fù)用性的基本思想。
3) 良好的可擴展性。視景仿真軟件的代碼構(gòu)建應(yīng)當(dāng)充分考慮需求變更的擴展性,每當(dāng)需求發(fā)生改變的時候都能夠很好地應(yīng)對,降低開發(fā)人員所面臨的困難和復(fù)雜度。
4) 三維模型和場景構(gòu)建的簡易性。為了能夠在視景軟件中簡化三維模型和場景的構(gòu)建與導(dǎo)入工作,視景仿真軟件應(yīng)當(dāng)支持常用建模軟件,同時構(gòu)建適合演示的三維場景。
5) 良好的渲染幀率和顯示效果。視景仿真軟件應(yīng)當(dāng)具有較高的渲染幀率,使得整個演示過程流暢。因此衛(wèi)星視景開發(fā)的所有代碼都應(yīng)當(dāng)充分考慮運行效率,避免不必要的內(nèi)存和顯卡開銷,使用良好的軟件設(shè)計模式,選用最優(yōu)的數(shù)據(jù)結(jié)構(gòu),降低軟件運行的時間、空間復(fù)雜度,提高渲染幀率和效果。
1.2衛(wèi)星視景仿真軟件的架構(gòu)設(shè)計
視景仿真軟件架構(gòu)設(shè)計如圖1所示,包括基礎(chǔ)環(huán)境、視景系統(tǒng)基礎(chǔ)軟件模塊和視景應(yīng)用軟件三大部分。
1) 基礎(chǔ)環(huán)境部分主要包括操作系統(tǒng)、圖形API庫、OGRE圖形引擎開發(fā)和運行環(huán)境。操作系統(tǒng)是開發(fā)和運行視景應(yīng)用的基礎(chǔ),圖形API庫(包括DirectX和OpenGL)是支撐環(huán)境。OGRE圖形引擎結(jié)合DirectX和OpenGL的特點,實現(xiàn)了跨操作系統(tǒng)平臺移植和開發(fā)的特性[10-13]。
2) 視景系統(tǒng)基礎(chǔ)軟件模塊是在綜合分析三維視景應(yīng)用軟件的共有特點基礎(chǔ)上,為提高開發(fā)效率,獨立抽象和開發(fā)的可復(fù)用軟件模塊,能夠?qū)崿F(xiàn)與主控計算機間的數(shù)據(jù)傳輸,提供友好的人機交互界面顯示和文件讀寫功能。
3) 應(yīng)用軟件部分根據(jù)具體的視景開發(fā)需求實現(xiàn)不同的視景應(yīng)用程序。
圖1 視景仿真軟件架構(gòu)設(shè)計
基于OGRE圖形引擎的基礎(chǔ)軟件模塊部分的設(shè)計與實現(xiàn),是后續(xù)視景軟件開發(fā)的基礎(chǔ)?;A(chǔ)軟件模塊結(jié)構(gòu)如圖2所示,包括OGRE主體框架模塊、文件路徑管理模塊、場景數(shù)據(jù)管理模塊、網(wǎng)絡(luò)通信模塊和人機交互模塊共五大模塊。
圖2 衛(wèi)星視景基礎(chǔ)軟件模塊
2.1OGRE主體框架模塊
OGRE主體框架模塊是在OGRE圖形引擎的基礎(chǔ)上進行開發(fā)的基礎(chǔ)。各部分的初始化和配置工作需要按照OGRE相關(guān)要求進行,這部分模塊主要負(fù)責(zé)主體視景程序的構(gòu)建和初始化工作,是視景軟件系統(tǒng)的入口點。同時,主體框架模塊是推進整個渲染進程的渲染泵。本文的設(shè)計抽象出了所有視景應(yīng)用的共有部分,從而避免了針對相同問題的重復(fù)開發(fā),提高了代碼的可復(fù)用性,提高了開發(fā)效率,同時也符合面向?qū)ο蟮拈_發(fā)思想。當(dāng)需要開發(fā)新的場景,或者擴展不同的視景應(yīng)用時,可以在BaseApp類基礎(chǔ)上進行繼承,復(fù)用已有的接口。
圖3 TinyXML庫解析XML文件流程
2.2文件路徑管理模塊
能夠統(tǒng)一管理文件和路徑,提供簡單易用的接口,減少每次文件讀寫時進行的代碼修改工作。
這里將相關(guān)功能抽象為文件和路徑類型(PATHMANAGER類),該類型全局共享,所有數(shù)據(jù)和方法均采用static關(guān)鍵字進行標(biāo)注,不需要生成實例對象。同時將配置文件編譯成XML格式,基于TinyXML庫讀取XML配置文件,不必每次對視景程序進行重新編譯,大大簡化了操作步驟,提高了開發(fā)效率。TinyXML庫解析XML文件流程如圖3所示[15]。
2.3場景數(shù)據(jù)管理模塊
針對不同視景仿真的場景,構(gòu)建多種場景素材,用于三維模擬演示。場景數(shù)據(jù)管理模塊封裝了與場景顯示相關(guān)的場景數(shù)據(jù),包括地形、天空、三維模型等常見的視景應(yīng)用數(shù)據(jù)。場景數(shù)據(jù)模塊結(jié)構(gòu)如圖4所示。其中地形系統(tǒng)主要生成地形數(shù)據(jù)和地形靜態(tài)實體,包括樹木、石塊、草地等;天氣系統(tǒng)主要包括天氣變化,包括雨、雪等不同天氣,實現(xiàn)方式為添加粒子效果。通過使用OGRE中的粒子系統(tǒng),可以很方便地進行粒子效果模擬。
圖4 場景數(shù)據(jù)模塊結(jié)構(gòu)圖
2.4網(wǎng)絡(luò)通信模塊
圖5 網(wǎng)絡(luò)程序接口流程
網(wǎng)絡(luò)通信模塊負(fù)責(zé)與仿真平臺進行數(shù)據(jù)交互和傳輸?shù)认嚓P(guān)工作,實現(xiàn)實時仿真數(shù)據(jù)驅(qū)動的三維模擬演示。網(wǎng)絡(luò)通信模塊采用UDP協(xié)議方式實現(xiàn)。UDP協(xié)議是面向數(shù)據(jù)報的協(xié)議,不需要建立連接,也無需重傳確認(rèn),在點對點的簡單環(huán)境當(dāng)中干擾因素較少,不需要對網(wǎng)絡(luò)數(shù)據(jù)進行反復(fù)確認(rèn)。所以這里的協(xié)議構(gòu)建基于UDP協(xié)議進行,保證網(wǎng)絡(luò)傳輸具有較好的響應(yīng)效率[15]。視景仿真系統(tǒng)網(wǎng)絡(luò)接口流程如圖5所示。
2.5人機交互模塊
圖6 加載CEGUI庫流程圖
友好的圖形操作界面負(fù)責(zé)在視景程序中對用戶的功能選項進行響應(yīng)。OGRE圖形引擎并沒有提供與圖形界面相關(guān)的工具或者接口,圖形界面的開發(fā)需要依賴于第三方庫或者是操作系統(tǒng)接口API,這里選用CEGUI庫進行圖形界面的開發(fā)。加載CEGUI庫流程如圖6所示,初始化完成之后,在幀監(jiān)聽當(dāng)中加入對應(yīng)的代碼,使得圖形界面能夠捕獲到系統(tǒng)輸入,并進行用戶事件響應(yīng)。
同時通過第三方的OIS組件庫,結(jié)合OGRE圖形引擎,實現(xiàn)對人機交互的監(jiān)聽工作,包括用戶的鼠標(biāo)操作和鍵盤事件等。
在上述視景基礎(chǔ)軟件模塊的基礎(chǔ)上,根據(jù)衛(wèi)星視景開發(fā)的特點和需求,進行了衛(wèi)星視景仿真軟件的開發(fā)。
3.1三維模型與場景構(gòu)建
衛(wèi)星視景仿真主要包括衛(wèi)星模型、地球模型和星空背景等。
衛(wèi)星與地球的三維模型主要通過3ds Max建模軟件進行構(gòu)建,采用適當(dāng)?shù)牟馁|(zhì)系統(tǒng)和紋理貼圖進行外觀設(shè)計與調(diào)整;然后使用第三方插件OgreMax工具對建模軟件生成的資源素材進行格式轉(zhuǎn)換,并將轉(zhuǎn)換后的資源文件存放在OGRE圖形引擎資源路徑當(dāng)中。同時基于場景數(shù)據(jù)管理模塊,采用天空盒原理的方式進行星空背景構(gòu)建,如圖7所示。
圖7 3ds Max下衛(wèi)星三維模型編輯
3.2多線程程序設(shè)計
為了協(xié)調(diào)各個程序功能之間的邏輯關(guān)系,進行多線程控制以避免邏輯混亂[16,17]。在視景應(yīng)用當(dāng)中,主要任務(wù)分為實時渲染、網(wǎng)絡(luò)數(shù)據(jù)傳輸和圖形界面交互等。在程序?qū)崿F(xiàn)中,將這幾個任務(wù)抽象成為多個線程,其中渲染線程的主要流程如圖8所示。
圖8 渲染線程流程圖
本文用于仿真驗證的衛(wèi)星編隊構(gòu)型如圖9所示,采用一顆主星、三顆從星的編隊方式,構(gòu)成空間圓編隊。其中主星位于圓心處,三顆從星構(gòu)成同一平面的等邊三角形,四顆衛(wèi)星進行姿態(tài)調(diào)整進而完成對深空的觀測任務(wù)。針對任務(wù)要求,整個仿真過程為6335 s,0~800 s為軌跡優(yōu)化與姿態(tài)調(diào)整階段;800~1000 s為編隊姿態(tài)保持階段;1000~6335 s為自由漂浮階段,整個仿真過程持續(xù)時間約為2小時。在各個階段,四顆衛(wèi)星的編隊構(gòu)型以及自身姿態(tài)均不完全相同,因此采用衛(wèi)星視景仿真軟件可以直觀真實地模擬再現(xiàn)整個過程。這里采用的衛(wèi)星軌道模型與姿態(tài)控制算法為實驗室現(xiàn)有的算法,如圖10所示,不再贅述。
圖9 衛(wèi)星編隊構(gòu)型
圖10 衛(wèi)星軌道與姿態(tài)控制simulink模型
在實驗室視景計算機、實時仿真計算機和主控計算機的驅(qū)動下,衛(wèi)星飛行視景仿真效果如圖11所示。實時仿真計算機運行實時仿真程序(這里為基于xPC Target下的實時仿真程序)。通過以太網(wǎng)通信的方式,主控計算機將實時仿真數(shù)據(jù)發(fā)送給運行有衛(wèi)星視景仿真軟件的視景計算機,進而驅(qū)動衛(wèi)星視景仿真軟件進行衛(wèi)星飛行過程的模擬與演示。
圖11 衛(wèi)星編隊仿真視景效果圖
本文基于OGRE圖形引擎對衛(wèi)星視景仿真軟件中的基礎(chǔ)開發(fā)模塊進行設(shè)計與實現(xiàn),采用了模塊化可復(fù)用的架構(gòu)設(shè)計。這些基礎(chǔ)模塊是可復(fù)用的視景應(yīng)用模塊,是開發(fā)的基本組成部分?;谶@些模塊的設(shè)計,進行了衛(wèi)星視景仿真軟件的開發(fā),并實現(xiàn)了衛(wèi)星飛行的三維視景演示。本套視景仿真軟件克服了數(shù)值仿真階段不夠直觀的特點,并且降低了開發(fā)以及維護的難度,節(jié)約了實驗成本,使用方便,效果逼真,極大地縮短了仿真算法的設(shè)計周期。本套視景仿真軟件取得了滿意的效果,達到了預(yù)期希望,具有廣闊的應(yīng)用前景。
[1] Curlett B P.A Software Framework for Aircraft Simulation[R].NASA TM-214639,2008.
[2] 吳金華.基于Vega的SAR成像系統(tǒng)實時交互仿真研究[D].南京:南京理工大學(xué),2011.
[3] Starzyk J A,Raif P.Cognitive agent and its implementation in the blender game engine environment[C]//Computational Intelligence for Human-like Intelligence (CIHLI),2013 IEEE Symposium on.IEEE,2013:1-8.
[4] 張欣光,劉蕓,唐碩,等.基于STK的衛(wèi)星視景仿真軟件的設(shè)計與實現(xiàn)[J].飛行器測控學(xué)報,2011,30(4):73-76.
[5] 肖笛.電子對抗中三維仿真關(guān)鍵技術(shù)的研究與實現(xiàn)[D].南京:南京航空航天大學(xué),2010.
[6] 上官右柏.基于OGRE的港口仿真[D].武漢:華中科技大學(xué),2011.
[7] 張利強,鄭昌文,胡曉惠,等.一種基于HLA的衛(wèi)星仿真系統(tǒng)的設(shè)計與實現(xiàn)[J].系統(tǒng)仿真學(xué)報,2009,21(20):6487-6491,6497.
[8] 董加強,任松.基于OpenGL的衛(wèi)星在軌運行可視化仿真系統(tǒng)設(shè)計與實現(xiàn)[J].計算機測量與控制,2008,16(6):824-826,855.
[9] 王成,雷小永,戴樹嶺.衛(wèi)星在軌運行視景仿真中的真實感實現(xiàn)[C]//第九屆全國虛擬現(xiàn)實與可視化學(xué)術(shù)會議,2009:87-90.
[10] 吳青,宋成果,劉懷漢,等.基于OGRE 3D的三維內(nèi)河航道仿真系統(tǒng)研究[J].武漢理工大學(xué)學(xué)報:交通科學(xué)與工程版,2014,38(3):585-588.
[11] 羅會蘭,胡思文.基于OGRE引擎的虛擬場景瀏覽[J].計算機工程與設(shè)計,2013,34(5):1744-1751.
[12] 林巧民,林萍,王汝傳.基于OGRE的智能游戲引擎的設(shè)計與實現(xiàn)[J].南京郵電大學(xué)學(xué)報:自然科學(xué)版,2010,30(2):71-76.
[13] 孫遜,杜小菁,馬春艷,等.高動態(tài)飛行器姿態(tài)解算及三維視景仿真研究[J].系統(tǒng)仿真學(xué)報,2007,19(14):3266-3269.
[14] 羅秋鵬,高曉光,楊建國.空戰(zhàn)三維視景仿真設(shè)計與實現(xiàn)[J].電光與控制,2008,15(10):33-36,73.
[15] 佩措爾德.Windows程序設(shè)計[M].方敏,譯.5版.北京:清華大學(xué)出版社,2010.
[16] 駱斌,費翔林.多線程技術(shù)的研究與應(yīng)用[J].計算機研究與發(fā)展,2000,37(4):407-412.
[17] 李剛,金蓓弘.基于線程的并發(fā)控制技術(shù)研究與應(yīng)用[J].計算機工程,2007,33(14):43-45.
DESIGN AND REALISATION OF SATELLITE VISUAL SIMULATION SOFTWARE BASED ON OGRE
Sun ShihangZong QunXu Rui
(SchoolofElectricalandAutomationEngineering,TianjinUniversity,Tianjin300072,China)
For the needs of satellite visual simulation, we designed and developed the OGRE graphics engine-based satellite visual simulation software to carry out the simulation and demonstration of entire flight process. Satellite visual simulation software makes underlying rendering based on OGRE graphics engine, builds three-dimensional solid model in combination with 3ds Max modelling software, and generates the satellite sky scene on the basis of self-developed scene editing tools. The functional module of the simulation software includes OGRE main frame module, file path management module, scene data management module, network communication module and human-computer interaction module. Operational result showed that the satellite visual simulation software can realistically simulate the satellite flying scene. It is capable of making real-time screen simulation and data monitoring, therefore has broad application prospects.
Visual simulationOGREModular designSatellite visualReal-time simulation
2015-06-30。國家高技術(shù)研究發(fā)展計劃項目(2013AA 122602);天津市應(yīng)用基礎(chǔ)與前沿技術(shù)研究計劃項目(11JCZDJC25100)。孫詩行,碩士生,主研領(lǐng)域:三維視景軟件開發(fā)。宗群,教授。徐銳,碩士。
TP311.52
A
10.3969/j.issn.1000-386x.2016.10.045