田意翔,孫劍偉,朱瑞峰
基于Unity3D的衛星運行可視化系統設計與實現
田意翔,孫劍偉,朱瑞峰
(華北計算技術研究所,北京市 100083)
在航天工程中,人造衛星有著十分廣泛的用途,比如導航定位、通信、科研及軍事等應用。而人造衛星的這些應用往往離不開衛星狀態的各個參數數據,其中衛星的運行軌道和運行姿態是決定衛星應用功能的兩個主要因素,是衛星系統工程設計的重要組成部分。因此,本文應用可視化技術,設計出了一套基于Unity3D的衛星運行可視化系統。該系統可以實時顯示衛星軌道運行的全過程,為衛星實時管理提供了重要的輔助決策。
衛星軌道;可視化;Unity3D
近年來,我國在航天航空領域取得了一系列令人矚目的成就,而高速發展的航空航天領域也為各種高新科技的應用提供了廣闊的平臺,航天工程已經逐漸成為各國關注的焦點。航天航空工程中所產生的大量航天數據(比如衛星狀態數據)的實時處理和動態顯示則是在航天任務中做出科學決策的重要技術基礎[1]。
應用可視化技術,結合相關模擬仿真程序,就能用得到的衛星軌道參數、衛星位置信息等有效數據構建出衛星在軌運行的場景,從而準確描述并重現衛星的實時運行和姿態,為衛星軌道分析設計,衛星運行狀態監測等衛星應用提供十分直接的指導[2]。
Unity3D是一款讓視景開發人員可以輕松創建實時三維視景、數字娛樂游戲、建筑可視化漫游等互動內容的、支持多平臺發布運行的綜合型三維開發工具,也是一個具有成熟開發者社區的專業實時三維制作引擎。根據Unity3D整合度高、可交互的圖像化開發環境、模型渲染效果好、資源利用率小、上手快和最后生成的軟件可以跨平臺的種種特點,本文選擇了Unity3D作為系統軟件的開發平臺[3]。

圖1 系統架構圖Fig.1 system architecture diagram
本系統采用的是基于Unity3D平臺框架的特點采用MVC模式和組件模式混合的系統架構。該架構不僅使系統開發過程明確清晰,而且使得系統內部模塊之間能充分解耦和有效的復用,也能提高系統的可擴展性[4]。
系統主要分成了數據層、業務邏輯層和表示層,分別與MVC設計模式中的模型層、控制層和視圖層相對應。
數據層是可視化軟件的驅動層,數據層從軟件外部通過網絡傳輸或文件獲取與業務相關的實時數據或歷史數據;業務邏輯層負責根據數據層提供的數據繪制復雜的二三維可視化效果;表示層負責把業務層邏輯層內繪制的效果通過計算機硬件在顯示器渲染出來。
其中,根據對象模型和業務關系的復雜程度,又在業務邏輯層分成了基礎層組件、圖元層組件和可視層組件。
基礎層:是業務邏輯的最底層,主要包括了Unity3D內置組件和科學計算組件。
圖元層:是邏輯業務的中間層,包含有軌道繪制組件等。
可視層:是業務邏輯的最上層,作為最頂層他不僅含有與業務相關的效果組件也包含了游戲對象模型。
Unity3D的一大特點在于,使用對象模型描述游戲對象的外形特征;使用組件來描述游戲對象的狀態、行為、物理特征;使用業務邏輯為對象賦予交互功能,包括對象間的物理交互和用戶界面與對象間的交互。
2.1衛星軌道計算
牛頓萬有引力定律和開普勒三定律是計算衛星運行軌道的理論基礎,由二者可以導出衛星運行的六個參數。這六個參數在被確定的情況下可以根據二體運動方程解出任意給定時刻衛星的位置和速度,反之亦然。因此,這六個能夠決定衛星軌道的參數被稱為基本軌道要素,也叫軌道根數[5]。

圖2 軌道根數圖Fig.2 track elements diagram

其中n為衛星平均角速度,μ為地球引力常數,τ為過近地點時刻。
偏近點角E和平近點角M滿足開普勒方程:

由于這個方程存在唯一解。可用迭代法可解開普勒方程:

當丨Ei+1-Ei丨<ε時,取E=Ei+1。此時ε為給定的精度,迭代的初值可以取E1=M。
知道了?上述參數后,?就可以求得t時刻的衛星位置矢量r和速度矢量v:

對于圓軌道,0e=,同時可取為升交點為近地點,則近地點幅角,0ω=。

2.2衛星姿態控制
衛星在太空中運行時的位置和姿態是處于不斷的變化之中,由于存在外干擾力矩的影響,這種變化往往不能按照研究人員所期望的規律而進行。因此,這就需要對其進行姿態穩定和控制[7]。
本文所涉及的應用中要求衛星無論運行到任何位置,衛星的姿態應該保持以下狀態,即衛星的前部始終指向地球中心,同時太陽板也始終與當前的衛星軌道平行[8]。
按照圖3所示,要使衛星坐標系的y軸負方向始終指向地球坐標系的原點(地心),還要使得衛星坐標系的x軸與衛星在當前位置處的軌道切線方向重合。為了實現上述衛星姿態控制的目標,需要根據姿態參數,通過旋轉衛星實現衛星主體姿態的調控。此外還要根據太陽光線方向,旋轉太陽帆板實現帆板對日定向。
衛星本地坐標系與地球坐標系在初始化時可以看作是處于重合狀態,此時,地球與衛星都處于地球坐標系的原點(0,0,0)處。為實現以上的衛星姿態控制目標,首先要通過衛星軌道參數計算出在指定時刻衛星在地球坐標系中的位置坐標,然后再通過平移變換把衛星放置在地球坐標系的某點上,這就完成了衛星的定位[9]。

圖3 衛星坐標示意圖Fig.3 satellite coordinates diagram
按圖4所示,O點為地球坐標系xyz的原點,O′為衛星的本地坐標系xyz′′′的原點。當衛星通過平移直接放置(即未旋轉)在衛星軌道上時,衛星的初始姿態如圖4中所示:x′軸與x軸平行,y′軸與y軸平行,z′軸與z軸平行。從圖4中可看出,為實現以上的衛星姿態控制目標,其方法是通過旋轉變換,使衛星坐標系的y′軸方向與OO′向量重合,使衛星坐標系的x′軸與衛星在當前位置處的軌道切線方向重合。因此之后就要計算出在衛星的本地坐標系中衛星繞各個坐標軸旋轉的角度,然后通過旋轉變換完成衛星的姿態調整。

圖4 衛星初始姿態Fig.4 Initial attitude of the satellite
2.3模型構建
3D Max作為最常使用的三維建模軟件之一,功能十分強大,制作流程高效簡潔。因此,在這里使用它來構建一些復雜的模型,如衛星、天線[10]。
此外,本系統應用Unity3D內置球模型加紋理貼圖的方法構建三維地球對象模型。因為如果應用3D Max來構建逼真度較高的地球三維模型,構建的模型中會要求有更多的面片,這個會導致模型本身就很大,并且使得Unity3D在加載時需要消耗大量的內存和顯存。而應用球模型加紋理貼圖的方式,只需要制作分辨率較高的世界地圖,并將其作為求模型的紋理貼圖就能完成三維地球模型的構建,這樣模型本身不是很大,而且不會對內存和顯存有過高的要求[11]。
相比于地球模型。衛星模型更加的復雜,既要考慮衛星模型的整體運動,也要局部考慮太陽帆板等部分的單獨運動。此外,由于不像地球模型那樣規則,為使衛星模型顯得更加美觀、逼真,還需要有不同的材質、紋理應用于衛星的不同部位[12]。
在各個系統組件完成之后,利用Unity3D平臺進行了系統集成和渲染。最終構建出了以地球球心為中心繞地球運動的衛星運行可視化實時場景,將大量的實時數據或原始數據進行科學計算和處理后轉化為圖形、圖像,以更形象、直觀、整體的表達了出來。系統效果圖如下所示。

圖5 衛星軌道運行圖Fig.5 satellite in orbit diagram
本文研究并實現了基于Unity3D平臺下的衛星運行可視化系統,并對系統架構以及衛星軌道計算、衛星姿態控制、三維建模等關鍵技術進行了闡述。
為了開發更加逼真的衛星可視化軟件系統,還需研究許多細節方面的問題,如對象的數據結構、模型數據庫、可視化建模方法、渲染效率、仿真視覺效果等。本系統更加偏重于星地實時真實數據的可視化方面,在衛星運行模擬仿真方面涉足不多,未來可以朝著這個方向繼續研究和完善星地可視化軟件系統,做到不用真實數據也能模擬實現逼真的星地動態場景,從而建立更加實用、效果更好、應用更靈活的軟件系統,以適合于各類航天應用的需求。
[1] 岳鋼, 王楠. 網絡學習中知識可視化效率研究[J]. 軟件, 2015, 36(2): 92-96.
[2] 鐘彩. 邊緣檢測算法在圖像預處理中的應用[J]. 軟件, 2013, 34(1): 158-159.
[3] 陳楊毅, 陳凌宇. 基于最優幾何的改進型多星座衛星選星算法[J]. 軟件, 2014, 35(1): 26-31.
[4] 趙黛巖, 孫劍偉. 星地時間同步任務規劃綜合評價技術研究[J]. 軟件, 2014, 35(1): 60-64.
[5] 白文娟. 基于OpenGL的GPS衛星軌道仿真與可視化實現[D]. 哈爾濱工程大學, 2009.
[6] 楊平利, 黃少華, 江凌, 袁媛. 衛星運行三維場景及星下點軌跡可視化研究[J]. 計算機工程與科學, 2012, 05: 101-106.
[7] 張志恒, 尹路明, 王茂磊. 采用組合優化策略的電子偵察衛星規劃方法[J]. 軟件, 2014, 35(4): 143-149.
[8] 劉冠男, 傅寧. 基于流量工程的最小鏈路代價多層衛星路由算法[J]. 軟件, 2015, 36(10): 72-76.
[9] 韓江雪, 李昕. 基于NS2 的多層衛星網絡路由協議開發方案[J]. 軟件, 2016, 37(02): 63-65.
[10] 肖啟東. 多星座組合導航系統的RAIM 算法研究[J]. 軟件, 2015, 36(4): 97-101.
[11] 楊柯. 分層技術在計算機軟件開發中的應用效果分析[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
田意翔,男,華北計算技術研究所,研究生;孫劍偉,男,華北計算技術研究所,高級工程師;朱瑞峰,華北計算技術研究所,軟件工程師。
本文著錄格式:田意翔,孫劍偉,朱瑞峰. 基于Unity3D的衛星運行可視化系統設計與實現[J]. 軟件,2017,38(2):112-115