田意翔,孫劍偉,朱瑞峰
基于Unity3D的衛(wèi)星運行可視化系統(tǒng)設(shè)計與實現(xiàn)
田意翔,孫劍偉,朱瑞峰
(華北計算技術(shù)研究所,北京市 100083)
在航天工程中,人造衛(wèi)星有著十分廣泛的用途,比如導(dǎo)航定位、通信、科研及軍事等應(yīng)用。而人造衛(wèi)星的這些應(yīng)用往往離不開衛(wèi)星狀態(tài)的各個參數(shù)數(shù)據(jù),其中衛(wèi)星的運行軌道和運行姿態(tài)是決定衛(wèi)星應(yīng)用功能的兩個主要因素,是衛(wèi)星系統(tǒng)工程設(shè)計的重要組成部分。因此,本文應(yīng)用可視化技術(shù),設(shè)計出了一套基于Unity3D的衛(wèi)星運行可視化系統(tǒng)。該系統(tǒng)可以實時顯示衛(wèi)星軌道運行的全過程,為衛(wèi)星實時管理提供了重要的輔助決策。
衛(wèi)星軌道;可視化;Unity3D
近年來,我國在航天航空領(lǐng)域取得了一系列令人矚目的成就,而高速發(fā)展的航空航天領(lǐng)域也為各種高新科技的應(yīng)用提供了廣闊的平臺,航天工程已經(jīng)逐漸成為各國關(guān)注的焦點。航天航空工程中所產(chǎn)生的大量航天數(shù)據(jù)(比如衛(wèi)星狀態(tài)數(shù)據(jù))的實時處理和動態(tài)顯示則是在航天任務(wù)中做出科學(xué)決策的重要技術(shù)基礎(chǔ)[1]。
應(yīng)用可視化技術(shù),結(jié)合相關(guān)模擬仿真程序,就能用得到的衛(wèi)星軌道參數(shù)、衛(wèi)星位置信息等有效數(shù)據(jù)構(gòu)建出衛(wèi)星在軌運行的場景,從而準(zhǔn)確描述并重現(xiàn)衛(wèi)星的實時運行和姿態(tài),為衛(wèi)星軌道分析設(shè)計,衛(wèi)星運行狀態(tài)監(jiān)測等衛(wèi)星應(yīng)用提供十分直接的指導(dǎo)[2]。
Unity3D是一款讓視景開發(fā)人員可以輕松創(chuàng)建實時三維視景、數(shù)字娛樂游戲、建筑可視化漫游等互動內(nèi)容的、支持多平臺發(fā)布運行的綜合型三維開發(fā)工具,也是一個具有成熟開發(fā)者社區(qū)的專業(yè)實時三維制作引擎。根據(jù)Unity3D整合度高、可交互的圖像化開發(fā)環(huán)境、模型渲染效果好、資源利用率小、上手快和最后生成的軟件可以跨平臺的種種特點,本文選擇了Unity3D作為系統(tǒng)軟件的開發(fā)平臺[3]。
圖1 系統(tǒng)架構(gòu)圖Fig.1 system architecture diagram
本系統(tǒng)采用的是基于Unity3D平臺框架的特點采用MVC模式和組件模式混合的系統(tǒng)架構(gòu)。該架構(gòu)不僅使系統(tǒng)開發(fā)過程明確清晰,而且使得系統(tǒng)內(nèi)部模塊之間能充分解耦和有效的復(fù)用,也能提高系統(tǒng)的可擴展性[4]。
系統(tǒng)主要分成了數(shù)據(jù)層、業(yè)務(wù)邏輯層和表示層,分別與MVC設(shè)計模式中的模型層、控制層和視圖層相對應(yīng)。
數(shù)據(jù)層是可視化軟件的驅(qū)動層,數(shù)據(jù)層從軟件外部通過網(wǎng)絡(luò)傳輸或文件獲取與業(yè)務(wù)相關(guān)的實時數(shù)據(jù)或歷史數(shù)據(jù);業(yè)務(wù)邏輯層負(fù)責(zé)根據(jù)數(shù)據(jù)層提供的數(shù)據(jù)繪制復(fù)雜的二三維可視化效果;表示層負(fù)責(zé)把業(yè)務(wù)層邏輯層內(nèi)繪制的效果通過計算機硬件在顯示器渲染出來。
其中,根據(jù)對象模型和業(yè)務(wù)關(guān)系的復(fù)雜程度,又在業(yè)務(wù)邏輯層分成了基礎(chǔ)層組件、圖元層組件和可視層組件。
基礎(chǔ)層:是業(yè)務(wù)邏輯的最底層,主要包括了Unity3D內(nèi)置組件和科學(xué)計算組件。
圖元層:是邏輯業(yè)務(wù)的中間層,包含有軌道繪制組件等。
可視層:是業(yè)務(wù)邏輯的最上層,作為最頂層他不僅含有與業(yè)務(wù)相關(guān)的效果組件也包含了游戲?qū)ο竽P汀?/p>
Unity3D的一大特點在于,使用對象模型描述游戲?qū)ο蟮耐庑翁卣?;使用組件來描述游戲?qū)ο蟮臓顟B(tài)、行為、物理特征;使用業(yè)務(wù)邏輯為對象賦予交互功能,包括對象間的物理交互和用戶界面與對象間的交互。
2.1衛(wèi)星軌道計算
牛頓萬有引力定律和開普勒三定律是計算衛(wèi)星運行軌道的理論基礎(chǔ),由二者可以導(dǎo)出衛(wèi)星運行的六個參數(shù)。這六個參數(shù)在被確定的情況下可以根據(jù)二體運動方程解出任意給定時刻衛(wèi)星的位置和速度,反之亦然。因此,這六個能夠決定衛(wèi)星軌道的參數(shù)被稱為基本軌道要素,也叫軌道根數(shù)[5]。
圖2 軌道根數(shù)圖Fig.2 track elements diagram
其中n為衛(wèi)星平均角速度,μ為地球引力常數(shù),τ為過近地點時刻。
偏近點角E和平近點角M滿足開普勒方程:
由于這個方程存在唯一解。可用迭代法可解開普勒方程:
當(dāng)丨Ei+1-Ei丨<ε時,取E=Ei+1。此時ε為給定的精度,迭代的初值可以取E1=M。
知道了?上述參數(shù)后,?就可以求得t時刻的衛(wèi)星位置矢量r和速度矢量v:
對于圓軌道,0e=,同時可取為升交點為近地點,則近地點幅角,0ω=。
2.2衛(wèi)星姿態(tài)控制
衛(wèi)星在太空中運行時的位置和姿態(tài)是處于不斷的變化之中,由于存在外干擾力矩的影響,這種變化往往不能按照研究人員所期望的規(guī)律而進行。因此,這就需要對其進行姿態(tài)穩(wěn)定和控制[7]。
本文所涉及的應(yīng)用中要求衛(wèi)星無論運行到任何位置,衛(wèi)星的姿態(tài)應(yīng)該保持以下狀態(tài),即衛(wèi)星的前部始終指向地球中心,同時太陽板也始終與當(dāng)前的衛(wèi)星軌道平行[8]。
按照圖3所示,要使衛(wèi)星坐標(biāo)系的y軸負(fù)方向始終指向地球坐標(biāo)系的原點(地心),還要使得衛(wèi)星坐標(biāo)系的x軸與衛(wèi)星在當(dāng)前位置處的軌道切線方向重合。為了實現(xiàn)上述衛(wèi)星姿態(tài)控制的目標(biāo),需要根據(jù)姿態(tài)參數(shù),通過旋轉(zhuǎn)衛(wèi)星實現(xiàn)衛(wèi)星主體姿態(tài)的調(diào)控。此外還要根據(jù)太陽光線方向,旋轉(zhuǎn)太陽帆板實現(xiàn)帆板對日定向。
衛(wèi)星本地坐標(biāo)系與地球坐標(biāo)系在初始化時可以看作是處于重合狀態(tài),此時,地球與衛(wèi)星都處于地球坐標(biāo)系的原點(0,0,0)處。為實現(xiàn)以上的衛(wèi)星姿態(tài)控制目標(biāo),首先要通過衛(wèi)星軌道參數(shù)計算出在指定時刻衛(wèi)星在地球坐標(biāo)系中的位置坐標(biāo),然后再通過平移變換把衛(wèi)星放置在地球坐標(biāo)系的某點上,這就完成了衛(wèi)星的定位[9]。
圖3 衛(wèi)星坐標(biāo)示意圖Fig.3 satellite coordinates diagram
按圖4所示,O點為地球坐標(biāo)系xyz的原點,O′為衛(wèi)星的本地坐標(biāo)系xyz′′′的原點。當(dāng)衛(wèi)星通過平移直接放置(即未旋轉(zhuǎn))在衛(wèi)星軌道上時,衛(wèi)星的初始姿態(tài)如圖4中所示:x′軸與x軸平行,y′軸與y軸平行,z′軸與z軸平行。從圖4中可看出,為實現(xiàn)以上的衛(wèi)星姿態(tài)控制目標(biāo),其方法是通過旋轉(zhuǎn)變換,使衛(wèi)星坐標(biāo)系的y′軸方向與OO′向量重合,使衛(wèi)星坐標(biāo)系的x′軸與衛(wèi)星在當(dāng)前位置處的軌道切線方向重合。因此之后就要計算出在衛(wèi)星的本地坐標(biāo)系中衛(wèi)星繞各個坐標(biāo)軸旋轉(zhuǎn)的角度,然后通過旋轉(zhuǎn)變換完成衛(wèi)星的姿態(tài)調(diào)整。
圖4 衛(wèi)星初始姿態(tài)Fig.4 Initial attitude of the satellite
2.3模型構(gòu)建
3D Max作為最常使用的三維建模軟件之一,功能十分強大,制作流程高效簡潔。因此,在這里使用它來構(gòu)建一些復(fù)雜的模型,如衛(wèi)星、天線[10]。
此外,本系統(tǒng)應(yīng)用Unity3D內(nèi)置球模型加紋理貼圖的方法構(gòu)建三維地球?qū)ο竽P?。因為如果?yīng)用3D Max來構(gòu)建逼真度較高的地球三維模型,構(gòu)建的模型中會要求有更多的面片,這個會導(dǎo)致模型本身就很大,并且使得Unity3D在加載時需要消耗大量的內(nèi)存和顯存。而應(yīng)用球模型加紋理貼圖的方式,只需要制作分辨率較高的世界地圖,并將其作為求模型的紋理貼圖就能完成三維地球模型的構(gòu)建,這樣模型本身不是很大,而且不會對內(nèi)存和顯存有過高的要求[11]。
相比于地球模型。衛(wèi)星模型更加的復(fù)雜,既要考慮衛(wèi)星模型的整體運動,也要局部考慮太陽帆板等部分的單獨運動。此外,由于不像地球模型那樣規(guī)則,為使衛(wèi)星模型顯得更加美觀、逼真,還需要有不同的材質(zhì)、紋理應(yīng)用于衛(wèi)星的不同部位[12]。
在各個系統(tǒng)組件完成之后,利用Unity3D平臺進行了系統(tǒng)集成和渲染。最終構(gòu)建出了以地球球心為中心繞地球運動的衛(wèi)星運行可視化實時場景,將大量的實時數(shù)據(jù)或原始數(shù)據(jù)進行科學(xué)計算和處理后轉(zhuǎn)化為圖形、圖像,以更形象、直觀、整體的表達了出來。系統(tǒng)效果圖如下所示。
圖5 衛(wèi)星軌道運行圖Fig.5 satellite in orbit diagram
本文研究并實現(xiàn)了基于Unity3D平臺下的衛(wèi)星運行可視化系統(tǒng),并對系統(tǒng)架構(gòu)以及衛(wèi)星軌道計算、衛(wèi)星姿態(tài)控制、三維建模等關(guān)鍵技術(shù)進行了闡述。
為了開發(fā)更加逼真的衛(wèi)星可視化軟件系統(tǒng),還需研究許多細節(jié)方面的問題,如對象的數(shù)據(jù)結(jié)構(gòu)、模型數(shù)據(jù)庫、可視化建模方法、渲染效率、仿真視覺效果等。本系統(tǒng)更加偏重于星地實時真實數(shù)據(jù)的可視化方面,在衛(wèi)星運行模擬仿真方面涉足不多,未來可以朝著這個方向繼續(xù)研究和完善星地可視化軟件系統(tǒng),做到不用真實數(shù)據(jù)也能模擬實現(xiàn)逼真的星地動態(tài)場景,從而建立更加實用、效果更好、應(yīng)用更靈活的軟件系統(tǒng),以適合于各類航天應(yīng)用的需求。
[1] 岳鋼, 王楠. 網(wǎng)絡(luò)學(xué)習(xí)中知識可視化效率研究[J]. 軟件, 2015, 36(2): 92-96.
[2] 鐘彩. 邊緣檢測算法在圖像預(yù)處理中的應(yīng)用[J]. 軟件, 2013, 34(1): 158-159.
[3] 陳楊毅, 陳凌宇. 基于最優(yōu)幾何的改進型多星座衛(wèi)星選星算法[J]. 軟件, 2014, 35(1): 26-31.
[4] 趙黛巖, 孫劍偉. 星地時間同步任務(wù)規(guī)劃綜合評價技術(shù)研究[J]. 軟件, 2014, 35(1): 60-64.
[5] 白文娟. 基于OpenGL的GPS衛(wèi)星軌道仿真與可視化實現(xiàn)[D]. 哈爾濱工程大學(xué), 2009.
[6] 楊平利, 黃少華, 江凌, 袁媛. 衛(wèi)星運行三維場景及星下點軌跡可視化研究[J]. 計算機工程與科學(xué), 2012, 05: 101-106.
[7] 張志恒, 尹路明, 王茂磊. 采用組合優(yōu)化策略的電子偵察衛(wèi)星規(guī)劃方法[J]. 軟件, 2014, 35(4): 143-149.
[8] 劉冠男, 傅寧. 基于流量工程的最小鏈路代價多層衛(wèi)星路由算法[J]. 軟件, 2015, 36(10): 72-76.
[9] 韓江雪, 李昕. 基于NS2 的多層衛(wèi)星網(wǎng)絡(luò)路由協(xié)議開發(fā)方案[J]. 軟件, 2016, 37(02): 63-65.
[10] 肖啟東. 多星座組合導(dǎo)航系統(tǒng)的RAIM 算法研究[J]. 軟件, 2015, 36(4): 97-101.
[11] 楊柯. 分層技術(shù)在計算機軟件開發(fā)中的應(yīng)用效果分析[J].軟件, 2013, 34(10): 47.
[12] 陳國強. 基于GPU 的圖像處理算法研究[J]. 軟件, 2014, 35(2): 135-136.
Design and Implementation of Satellite Operation Visualization System Based on Unity3D
TIAN Yi-xiang, SUN Jian-wei, ZHU Rui-feng
(North China Institute of Computing Technolgy, Beijing 100083, China)
In aerospace engineering, satellites have a wide range of uses, such as navigation and positioning, communications, research and military applications. The application of satellite satellites is often inseparable from the satellite state of the various parameters of data, in which the satellite orbit and running posture is to determine the satellite application function of the two main factors, is the satellite system engineering design an important part. Therefore, this paper uses Visualization technology to design a set of satellite visualization system based on Unity3D. The system can display the whole process of satellite on-orbit operation in real time, which provides important auxiliary decision for real-time satellite management.
Satellite orbit; Visualization; Unity3D
TP391
: A
10.3969/j.issn.1003-6970.2017.02.023
田意翔,男,華北計算技術(shù)研究所,研究生;孫劍偉,男,華北計算技術(shù)研究所,高級工程師;朱瑞峰,華北計算技術(shù)研究所,軟件工程師。
本文著錄格式:田意翔,孫劍偉,朱瑞峰. 基于Unity3D的衛(wèi)星運行可視化系統(tǒng)設(shè)計與實現(xiàn)[J]. 軟件,2017,38(2):112-115