李澤朋,馬純永,陳 戈
(中國海洋大學(xué) 信息科學(xué)與工程學(xué)院,山東 青島266100)
空間任務(wù)是一項耗資巨大、變量參數(shù)多、較為復(fù)雜的系統(tǒng)性工程,其設(shè)計方案的論證很難在真實環(huán)境下進行,因此為了對設(shè)計方案進行有效的分析和評估,將虛擬現(xiàn)實技術(shù)應(yīng)用于航天領(lǐng)域成為了必然趨勢[1]。與復(fù)雜的空間數(shù)據(jù)集相比,基于虛擬現(xiàn)實技術(shù)的仿真系統(tǒng)對空間任務(wù)場景的模擬顯得更為直觀有效。成熟的空間任務(wù)論證仿真系統(tǒng)能夠?qū)π碌目臻g任務(wù)技術(shù)和成本進行可行性論證、立項論證的分析和評估[2]。目前國外相關(guān)仿真系統(tǒng)的發(fā)展已相對完善,比較有代表性的是STK軟件 (STK定義請參見文獻[3]),它能快速方便地分析復(fù)雜的衛(wèi)星仿真任務(wù),提供易于用戶理解的圖表和文本形式的分析結(jié)果。而當(dāng)前國內(nèi)對于相關(guān)系統(tǒng)的研究還處在起步階段,隨著我國空間技術(shù)的快速發(fā)展以及空間任務(wù)本身多樣化、復(fù)雜化的特征,研究并構(gòu)建能夠在相關(guān)領(lǐng)域占據(jù)核心地位的仿真平臺是一項亟待解決的問題。為此,我們基于VC++和OpenGL設(shè)計并實現(xiàn)了空間應(yīng)用系統(tǒng)仿真支持平臺,并通過相關(guān)實驗驗證了該平臺的實際應(yīng)用價值。
在系統(tǒng)的整體架構(gòu)設(shè)計上,空間應(yīng)用仿真支持平臺共分為4個相對獨立的層:表示層、功能層、控制層及數(shù)據(jù)處理層。系統(tǒng)的框架結(jié)構(gòu)如圖1所示。
(1)表示層:對底層功能及操作控制直觀的UI表示,具有空間仿真所需的友好的用戶界面和便捷的交互手段。
(2)功能層:平臺多種功能的描述。提供多通道輸出、視錐交互、基本場景元素的渲染及模型庫屬性操作等多種功能組件接口實現(xiàn)平臺功能的分類管理。
(3)控制層:控制功能層的渲染方式及模型庫的信息存儲。分類管理場景基本元素對其顯示屬性進行標(biāo)定,通過仿真過程時間線的控制來設(shè)定仿真的實時模式和演示模式。
(4)數(shù)據(jù)處理層:整個渲染的驅(qū)動和模型數(shù)據(jù)信息的來源。接收仿真數(shù)據(jù)計算控制器封裝后的數(shù)據(jù),對仿真數(shù)據(jù)進行解析分類利用ICE分布式通信接口分發(fā)給控制層。
空間應(yīng)用仿真支持平臺的分層設(shè)計提高了系統(tǒng)的整體框架的靈活性,本層級的功能維護不會影響到其他層級,層級與層級之間通過特定的通信接口進行交互,使得各個模塊在相對獨立的基礎(chǔ)上高效的實現(xiàn)各自的功能。
圖1 系統(tǒng)整體架構(gòu)
通過仿真數(shù)據(jù)接收器、仿真數(shù)據(jù)計算控制器、模型屬性數(shù)據(jù)庫、空間應(yīng)用仿真支持平臺的渲染管理集等多個模塊進行數(shù)據(jù)流的傳輸,系統(tǒng)平臺最終實現(xiàn)空間任務(wù)的仿真。整個過程所涉及的所有的數(shù)據(jù)傳輸都是基于ICE(internet communications engine)中間件來實現(xiàn)的。圖2為系統(tǒng)整個仿真過程的數(shù)據(jù)流圖。
圖2 仿真數(shù)據(jù)流
ICE (internet communications engine)是一種由 ZeroC開發(fā)的面向?qū)ο蟮闹虚g件平臺,其適合在異構(gòu)環(huán)境中使用,客戶端和服務(wù)器用不同的編程語言編寫,可以運行在不同的操作系統(tǒng)和機器架構(gòu)上[4]??紤]到ICE中間件架構(gòu)在應(yīng)用開發(fā)中的種種優(yōu)勢如數(shù)據(jù)報協(xié)議 (UDP)支持、異步方法分派、嵌入的安全機制、代碼的開源性等[5],我們在平臺中選用ICE中間件來進行相關(guān)的數(shù)據(jù)傳輸。
在利用ICE進行數(shù)據(jù)傳輸時,首先要利用Slice語言定義各傳輸接口,由于平臺采用C++程序開發(fā),故需要將Slice語言映射為C++。在數(shù)據(jù)傳輸過程中,客戶端與服務(wù)器表示在某個數(shù)據(jù)傳輸請求從發(fā)起到數(shù)據(jù)傳輸結(jié)束,平臺數(shù)據(jù)傳輸應(yīng)用模塊某些部分所承擔(dān)的角色。由于系統(tǒng)數(shù)據(jù)傳輸?shù)碾p向性,仿真平臺既是客戶端又是服務(wù)器。仿真數(shù)據(jù)在向平臺進行傳輸時,平臺通過調(diào)用ICE中間件的API函數(shù)在其內(nèi)部建立一個對象適配器。通過實例化該對象適配器,在服務(wù)器中加入用于數(shù)據(jù)通信傳輸?shù)姆?wù)線程,調(diào)用適配器的添加方法將該服務(wù)線程交給適配器并加入標(biāo)識符,我們最終激活適配器。一旦適配器被激活,服務(wù)器就開始處理來自客戶端的請求并最終完成數(shù)據(jù)傳輸。
在空間任務(wù)的實時仿真過程中,用戶常常要求系統(tǒng)能夠真實的模擬航天員的在軌操作或空間機械臂的旋轉(zhuǎn)、伸縮及抓取等多種仿真任務(wù),這些任務(wù)最終需要利用骨骼動畫來實現(xiàn)。這是因為骨骼動畫較之以前的動畫方法,具有占用空間小等優(yōu)點。但是其代價是伴隨著計算量的增加繪制效率會逐步降低。骨骼運動歸根到底是一系列復(fù)雜的計算,主要包括動畫的相鄰幀之間的插值計算,骨骼點及皮膚網(wǎng)格頂點的新位置及其朝向的計算,父子骨骼間矩陣的相互影響等,在這中間還常常涉及到大量的計算結(jié)果的保存。因此,隨著骨骼結(jié)構(gòu)復(fù)雜度的上升,相應(yīng)骨骼運動所必需的復(fù)雜計算的密集度也會成倍的增長。這勢必會影響動畫的渲染效率,降低仿真平臺的性能。
基于上述問題,空間應(yīng)用仿真支持平臺引入了CUDA(compute unified device architecture)技術(shù)。CUDA 技術(shù)的核心是充分利用硬件設(shè)備來進行并行計算,其程序的基礎(chǔ)開發(fā)語言為C語言[6],CUDA這種通用的并行計算架構(gòu)能夠高效的利用GPU來完成復(fù)雜的圖像相關(guān)的運算。傳統(tǒng)的渲染運算是由CPU來完成的,CPU通過高速運算將結(jié)果傳輸?shù)絻?nèi)存,系統(tǒng)又從內(nèi)存中調(diào)取運算結(jié)果至顯存來實現(xiàn)渲染。整個過程除CPU的運算負荷較高外,運算結(jié)果的傳輸也耗費了大量的時間。然而CUDA技術(shù)的引入使得仿真平臺在渲染骨骼動畫時將大部分繁瑣的骨骼運算轉(zhuǎn)移到GPU,GPU通過創(chuàng)建多個不同的線程來進行復(fù)雜運算,運算的結(jié)果直接保存在顯存內(nèi)部,同時它對該過程進行統(tǒng)一的管理,保證各線程之間并行運行。利用這種并行計算技術(shù)很大程度上降低了CPU的運算負荷及數(shù)據(jù)傳輸?shù)拈_銷,提高了骨骼動畫的渲染效率使得空間任務(wù)展示模塊能夠快速流暢的運行。圖3為某空間站太陽能帆板展開后的效果。
在仿真平臺中模擬飛行器的空間飛行狀態(tài)時,需要對某些飛行器的尾焰進行高逼真度的仿真,而粒子系統(tǒng)渲染技術(shù)的引入可以很好解決這個問題。粒子系統(tǒng)的基本思想是通過具有一定生命周期和屬性的大量粒子的不規(guī)則運動來實現(xiàn)動態(tài)模擬[7]。然而隨著粒子數(shù)量的不斷增加,在達到逼真效果的同時,粒子的大量運算會使系統(tǒng)的效率大幅下降。為此,在進行飛行器尾焰仿真時,我們基于一組特定的視頻序列[8],通過少量的粒子建立火焰的輪廓線,在輪廓線內(nèi)填充真實火焰的動態(tài)連續(xù)紋理。由于只計算輪廓線的很少量的一些粒子的運動,同時計算中無需記錄粒子的狀態(tài),僅記錄其位置信息,因此相應(yīng)的計算量很小,占用的內(nèi)存空間也很小。粒子簡要結(jié)構(gòu)如下:
圖3 某空間站太陽能帆板展開效果
我們通過粒子系統(tǒng)屬性中指示的幀值來獲取該幀的紋理并將它填充到輪廓線內(nèi),這樣隨著粒子衰減周期循環(huán)填充紋理最終高效的完成尾焰仿真。如圖4所示為某飛行器的尾焰效果。
圖4 飛行器尾焰效果
仿真數(shù)據(jù)計算控制器與仿真平臺的鏈接是通過ICE中間件來實現(xiàn)的,為了保證擴展性,需要在負責(zé)鏈接的ICE接口層設(shè)計合理的數(shù)據(jù)包封裝協(xié)議。我們封裝的數(shù)據(jù)包中主要包含信息仿真時間、設(shè)備元素標(biāo)識、數(shù)據(jù)內(nèi)容、校驗等。仿真平臺與仿真數(shù)據(jù)計算控制器的數(shù)據(jù)通信如圖5所示。
圖5 數(shù)據(jù)通信
實時、快速的將三維空間任務(wù)仿真場景與仿真數(shù)據(jù)計算控制器相聯(lián)動使得用戶可以形象、直觀地查看各場景元素的運行狀態(tài)。圖6為平臺依據(jù)仿真數(shù)據(jù)計算控制器傳輸?shù)臄?shù)據(jù)而繪制的二維軌道覆蓋圖。
圖6 二維軌道覆蓋
仿真平臺的三維空間任務(wù)分為實時仿真[9]模式和演示仿真模式,仿真時間管理模塊通過對數(shù)據(jù)加入標(biāo)識以便使渲染管理集能夠區(qū)分當(dāng)前的仿真模式。在實時仿真模式下,如果用戶并未在場景數(shù)據(jù)中特別設(shè)置時間偏移量,那么仿真平臺默認(rèn)系統(tǒng)當(dāng)前的時間為初始仿真時間,反之則需要通過系統(tǒng)當(dāng)前時間與時間偏移量來推算仿真初始時間。演示仿真模式主要進行仿真過程的回放顯示,在回放過程中,用戶可通過鍵盤鼠標(biāo)進行控制,或根據(jù)編排指令自動切換場景的視錐,實現(xiàn)漫游、鳥瞰等效果。
仿真平臺的場景數(shù)據(jù)來源于仿真數(shù)據(jù)計算控制器,或為真實數(shù)據(jù)或為歷史數(shù)據(jù),因此需要對仿真數(shù)據(jù)進行記錄以便之后使用。當(dāng)接收到有效場景數(shù)據(jù)后,本模塊自動將與顯示有關(guān)的數(shù)據(jù)存儲在本機的數(shù)據(jù)文件中。這樣用戶在進入演示模式需要重現(xiàn)某一空間任務(wù)仿真時,仿真時間管理模塊便調(diào)用與該空間任務(wù)仿真相匹配的歷史數(shù)據(jù),顯示相應(yīng)的三維場景。該部分的運行示意圖如圖7所示。
圖7 仿真時間管理
在實時模式下的應(yīng)用測試中,我們發(fā)現(xiàn)仿真平臺顯示的時間是滯后于當(dāng)前系統(tǒng)時間的,這會對空間任務(wù)的評估或可行性論證產(chǎn)生不利的影響。為此,我們?nèi)藶榈陌褦?shù)據(jù)接收完畢后的系統(tǒng)時間與數(shù)據(jù)包中解析出的時間偏移量相減后的時間設(shè)為仿真初始時間,這就真正意義上實現(xiàn)了實時仿真。
目前,設(shè)備模型庫中的模型主要包括實體模型和生成模型。實體模型是指真實存在的天體或部件的模型。生成模型主要指在場景任務(wù)仿真中,飛行器形成的光路、軌道、通信鏈路、空間場等。傳統(tǒng)的場景保存結(jié)構(gòu)為層次結(jié)構(gòu),這種結(jié)構(gòu)維護成本高,信息冗余較大,大數(shù)據(jù)量的場景下這些不足尤為明顯。為此我們采用樹形結(jié)構(gòu)對場景數(shù)據(jù)分層管理,以樹形圖的形式組織場景[10],利用樹形結(jié)構(gòu)的特性,我們遞歸的訪問各節(jié)點,從而獲得各節(jié)點內(nèi)部存儲的場景數(shù)據(jù)。通過對場景數(shù)據(jù)的有效組織,我們最終得到整個被渲染場景。樹形圖中各節(jié)點的訪問過程如下所示:
值得一提的是,在具體仿真過程中,用戶有時并不需要對整個的場景進行渲染而僅僅關(guān)注某一局部區(qū)域。因此,在節(jié)點遍歷過程中我們需要判斷當(dāng)前節(jié)點是否需要訪問。通過樹形結(jié)構(gòu)的應(yīng)用,平臺在數(shù)據(jù)的存儲及搜索能力上得到很大的提高。
在具體的空間任務(wù)仿真中,仿真平臺通過仿真設(shè)備管理模塊從模型數(shù)據(jù)庫中調(diào)出所需要的場景數(shù)據(jù)并加載渲染來顯示星空背景、飛行器、準(zhǔn)確的行星位置等。仿真數(shù)據(jù)接收器在接收到數(shù)據(jù)后,將這些初始數(shù)據(jù)傳輸給仿真數(shù)據(jù)計算控制器,仿真數(shù)據(jù)計算控制器經(jīng)過處理將結(jié)果封裝成特定的數(shù)據(jù)包傳輸給仿真平臺渲染模塊。通過源源不斷的傳輸數(shù)據(jù),平臺最終完成對飛行器的運動軌跡及其姿態(tài)的實時仿真。在此過程中,用戶可從不同視角查看整個空間載荷系統(tǒng)的各組成結(jié)構(gòu),可切換不同的顯示模式來對比分析各空間任務(wù),也可以通過調(diào)用模型數(shù)據(jù)庫中的場景數(shù)據(jù)來實現(xiàn)整個任務(wù)過程的回放等,最終獲取到自己感興趣的信息。仿真平臺的部分功能界面如圖8所示。
圖8 軟件部分功能效果
本文著重研究并實現(xiàn)了空間應(yīng)用仿真支持平臺的系統(tǒng)框架,對空間任務(wù)數(shù)據(jù)的ICE傳輸、任務(wù)場景的實時顯示和三維重現(xiàn)、模型數(shù)據(jù)的存儲等功能進行了分析,平臺通過應(yīng)用于具體的科研單位進行了實踐檢驗,結(jié)果表明該平臺能夠為空間任務(wù)的方案設(shè)計及論證提供有效的技術(shù)支持。目前,平臺的開發(fā)還處在技術(shù)完善階段,在軟件界面布局及用戶使用體驗等方面還有待提高。
:
[1]Enrico Stoll,Jurgen Letschnik,Markus Wilde,et al.The future role of relay satellites for orbital telerobotics [J].Elsevier:Advances in Space Research,2012,50 (7):864-880.
[2]ZHANG Yuzhu,MENG Xin,PAN Zhongshi.Research on connecting heterogeneous RTIs in space mission simulation system[J].Computer Engineering and Design,2012,33 (3):1068-1072(in Chinese).[張玉珠,孟新,潘忠實.空間任務(wù)論證仿真系統(tǒng)中異類RTI連接技術(shù)研究 [J].計算機工程與設(shè)計,2012,33 (3):1068-1072.]
[3]DONG Jiaqiang.Design and realization of aerospace launch visualization simulation system based on STK [J].Computer Measurement&Control,2010,18 (2):446-449 (in Chinese).[董加強.基于STK的航天發(fā)射可視化仿真系統(tǒng)設(shè)計與實現(xiàn) [J].計算機測量與控制,2010,18 (2):446-449.]
[4]Michi Henning,Mark Spruiell.ICE distributed program design[EB].[2011-09-28].http://www.zeroc.com.
[5]ZHOU Keqiang,ZHANG Baoshan.Management of information based on middle ICE [J].Journal of Southeast University(Natural Science Edition),2008,38 (S2):208-212 (in Chinese).[周克強,張保山.基于ICE中間件的戰(zhàn)術(shù)信息管理[J]. 東 南 大 學(xué) 學(xué) 報 (自 然 科 學(xué) 版 ),2008,38 (S2):208-212.]
[6]DONG Luo,GE Wancheng,CHEN Kangli.Study on application of parallel computation on CUDA [J].Information Technology,2010,11 (5):11-15 (in Chinese).[董犖,葛萬成,陳康力.CUDA并行計算的應(yīng)用研究 [J].信息技術(shù),2010,11 (5):11-15.]
[7]ZHAO Ye,HAN Yiping,F(xiàn)AN Zhe,et al.Visual simulation of heat shimmering and mirage [J].IEEE Transactions on Visualization and Computer Graphics,2007,13 (1):179-189.
[8]YU Xin,HAN Yong,CHEN Ge.Fire simulation of realistic flame based on dynamic texture and particle system [J].Informatin and Computer,2009 (11):54-55 (in Chinese).[于鑫,韓勇,陳戈.基于動態(tài)紋理和粒子系統(tǒng)的火焰效果模擬 [J].信息與電腦,2009(11):54-55.]
[9]REN Chuanjun,JIANG Zhiwen.Research and application of realtime simulation on Real-Time Workshop [J].Computer Emulation,2007,24 (8):268-271 (in Chinese). [任傳俊,蔣志文.Real-Time Workshop實時仿真研究與應(yīng)用 [J].計算機仿真,2007,24 (8):268-271.]
[10]Nobuyuki Bannai,Robert B Fisher,Alexander Agathos.Multiple color texture map fusion for 3Dmodels [J].Pattern Recognition Letters,2007,28 (6):748-758.