蘇昊翔,董正宏,楊 帆,劉立昊
(航天工程大學 航天信息學院,北京 101416)
衛星載荷是衛星用于完成具體任務的實體,衛星載荷的覆蓋范圍決定衛星完成任務的時間與效率。隨著航天技術的快速發展,衛星在我國經濟建設和國防建設等領域中的應用日趨廣泛[1]。通過動態可視化模擬,能夠使用戶更直觀地判斷衛星載荷的運行情況及其與地面間的覆蓋關系,從而進一步對載荷及數據進行分析。同時,通過WebGL技術[2]所開發的仿真可視化平臺,使得用戶通過瀏覽器即可以進行仿真[3],大幅提高了仿真的便捷性。
目前,對衛星載荷的可視化仿真及過境分析主要是利用特定平臺下的軟件進行。文獻[4]基于Vega Prime和OpenGL進行衛星軌道及載荷的可視化仿真,同時利用HLA體系分散模型計算,避免了單一節點超負荷的現象。文獻[5]基于Unity3D引擎設計一種星地監控可視化系統,利用實時生成的衛星參數展示衛星及載荷的多維運行狀態。文獻[6]通過使用Unity3D腳本實現了對地面覆蓋區域的繪制。文獻[7]以OSGEarth為底層平臺開發衛星軌道及載荷可視化支撐平臺,同時通過選擇性繪制衛星軌跡,降低了客戶端的計算量。文獻[8]使用C#對STK進行調用,通過STK[9]計算相關數據并在ArcGlobe平臺中進行顯示。文獻[10]基于Qt平臺構建了衛星覆蓋性分析軟件,同時利用插件技術提高了軟件的復用性。
上述研究雖然完成了衛星載荷可視化及過境分析,但都需要在平臺上單獨安裝相應軟件,難以實現跨平臺使用,并且仿真數據結果及可視化仍需使用特定軟件進行展示,不利于仿真結果的可視化共享,對于僅需要仿真可視化結果的用戶來說提高了使用成本。同時由于將數據計算與實時渲染放在同一硬件中實現,對仿真硬件的要求也較高。本文基于Cesium[11]三維GIS框架構建一種可以通過瀏覽器直接使用的衛星載荷可視化仿真分析平臺,采用四維變換矩陣對衛星載荷邊界可視化仿真及過境分析過程進行準確計算,同時以JSON格式對場景數據進行保存與讀取,實現仿真數據的共享。
基于Cesium的衛星載荷可視化仿真分析平臺采用B/S架構[12],如圖1所示。

圖1 平臺系統架構Fig.1 System structure of the platform
系統整體分為數據層、支撐層、業務層及表現層4層結構。其中:數據層用于存儲和管理基礎地理信息數據、衛星軌道計算模型、載荷計算模型以及過境分析模型4類基本數據;支撐層為平臺提供了基礎框架,通過采用“平臺+插件”的技術框架,使用Cesium基礎平臺,提供GIS功能、API以及程序開發框架,同時利用功能插件對軌道、路徑、載荷以及分析等數據進行計算;業務層是系統的核心部分,通過基礎操作服務、地理信息服務、數據可視化以及數據分析計算4個模塊為表現層提供業務支持;表現層是展示給用戶的界面,用戶可以使用瀏覽器對系統進行訪問,通過人機交互操作對衛星載荷及過境分析進行可視化仿真。
在衛星載荷可視化及過境分析過程中,無論是進行衛星軌道數據的遞推還是計算載荷覆蓋區域,都需要進行大量的數據運算。同時,在3D可視化[13]渲染過程中也會進行大量的運算。如果將這些運算都集中在客戶端,會對客戶端硬件帶來巨大的壓力,不但會大幅降低數據計算的速度,而且還會影響可視化結果的顯示。
如圖2所示,平臺將主要功能模塊分別部署在用戶端及服務器端。交互控制模塊主要用于用戶輸入仿真參數并對仿真場景進行控制與編輯,而可視化模塊主要用于仿真數據的可視化分析,從而為用戶提供直觀的仿真結果,因此,這兩個模塊使用JS實現并部署在用戶端。數據計算分析模塊主要對仿真數據進行計算,通過搭建計算服務器,用于衛星軌道遞推、目標路徑計算、載荷覆蓋范圍計算[14]以及過境分析等大量復雜數據運算,同時利用AJAX技術[15]進行客戶端與服務器端的數據交換,從而將復雜數據計算與可視化化渲染相分離,減輕客戶端的計算壓力,提高仿真效率。

圖2 系統功能模塊Fig.2 System function module
在可視化仿真分析過程中,需要進行大量的數據計算,同時還要對結果進行實時可視化渲染,因此,為減低客戶端計算壓力,本文采用數據計算與渲染相分離的模式,用戶通過瀏覽器,僅需調用服務器API即可獲取數據計算結果。
以衛星軌道仿真為例,衛星軌道計算及其可視化過程如圖3所示。用戶可以直接通過如圖4所示的用戶交互界面輸入衛星軌道參數,瀏覽器通過AJAX服務將衛星參數傳輸至計算服務器,計算服務器通過調用軌道計算模型庫中的模型,對衛星軌道進行遞推,計算出仿真時間內每一時刻衛星在慣性坐標系下的軌道位置,并將計算結果返回瀏覽器端,瀏覽器通過在Cesium框架中添加衛星實體實現衛星軌道可視化并將結果呈現給用戶。

圖3 衛星軌道計算及其可視化過程Fig.3 Satellite orbit calculation and its visualization process

圖4 衛星參數采集界面Fig.4 Satellite parameter acquisition interface
平臺可視化結果如圖5所示。其中,圖5(a)為衛星軌道三維可視化結果,圖5(b)為衛星軌道二維可視化結果。平臺通過Cesium所提供的API接口為用戶提供不同投影方式,用戶可以通過場景切換按鈕分別查看仿真數據在三維、二維及哥倫布投影中的不同可視化結果,從而直觀地從多角度展示仿真數據,更好地為用戶提供決策所需信息。

圖5 衛星仿真可視化結果Fig.5 Visual results of satellite simulation
2.2.1 基于四維矩陣的載荷覆蓋區域計算
衛星載荷在仿真時一般可等效為矩形載荷[16]及圓形載荷[17],即將載荷覆蓋等效為一個頂點在衛星所在位置的四棱錐或圓錐。現階段,對于載荷覆蓋區域計算一般都采用根據衛星與邊界載荷覆蓋邊界間的關系直接計算載荷邊界覆蓋點所在的經緯度坐標,但這種方法需要進行多次坐標轉換[18],計算復雜,同時僅對未進行三維旋轉的載荷有較好的計算精度,對于經過三維旋轉的載荷,計算更為復雜,且精度較低,因此,本文采用一種基于四維轉換矩陣[19]的載荷覆蓋區域計算方法。該方法能夠精確地對所有類型載荷覆蓋范圍進行有效計算,同時其四維轉換矩陣還可應用于過境分析檢測。
如圖6所示,本文首先通過在載荷坐標系下建立高為1的單位載荷模型,并根據載荷類型及其視場角大小,分別計算出以衛星為原點的載荷邊界向量坐標;然后通過當前時刻衛星軌道位置、衛星三維旋轉角及載荷三維旋轉角,計算出當前時刻將載荷邊界向量從載荷坐標系下轉換至地固坐標系下的四維變換矩陣;再通過所計算的變換矩陣,將載荷邊界向量坐標轉換至地固坐標系下;最后通過建立載荷邊界向量方程,計算其與地球橢球的交點,從而獲取載荷邊界點在地固坐標系下的坐標。

圖6 基于四維轉換的載荷覆蓋區域計算過程Fig.6 Calculation process of load coverage area based on four-dimensional transformation
2.2.2 四維轉換矩陣計算
在使用三維矩陣進行坐標變換時,由于進行位移變換時需要對三維坐標進行加操作,在進行旋轉與縮放變換時需要進行乘操作[20],因此運算過程復雜,而且不利于其逆變換。本文使用四維轉換矩陣對3種變換進行統一,將運算過程全部轉換為乘操作,在簡化坐標轉換邏輯的同時實現逆變換。基本變換公式如下:
Vr=T·R·N·Vo
(1)
其中,Vo為原始四維坐標,Vr為變換后的四維坐標,T為四維位移矩陣,R為四維旋轉矩陣,N為四維縮放矩陣。
對于任意的三維坐標(x,y,z),當其第4維為1時,即表示一個點,當其第4維為0時,即表示一個向量,對于任意的四維坐標(x,y,z,w),當w=0時,表示一個向量,其三維坐標為(x,y,z);當w≠0時,表示一個點,其三維坐標為(x/w,y/w,z/w)。
對于任意的平移轉換(tx,ty,tz),T的四維矩陣為:
(2)
以繞x軸旋轉θ角為例,R的四維矩陣為:
(3)
對于任意的縮放變換(sx,sy,sz),N的四維變換矩陣為:
(4)
四維矩陣在求逆變換時有巨大的優勢,對于一個四維變換M=T·R·N,其變換矩陣為:
M=N-1·R-1·T-1
(5)
因此,當衛星在地球固定坐標系下的坐標為(x,y,z)時,衛星本體坐標系相對于地球固定坐標系旋轉角度分別為θx、θy、θz,并且當載荷相對于衛星旋轉角度為θr、θp、θh時,其四維轉換矩陣為:
(6)
2.2.3 基于四維逆變換的過境分析計算
由于四維變換矩陣的逆變換計算簡單,因此本文通過四維逆變換矩陣,將地面點坐標轉換至衛星本體坐標系,并通過計算地面點與衛星本體坐標原點間的角度關系進行判斷。
通過計算衛星S、地面點G與坐標原點形成角θog進行初步篩選,對于矩形載荷,θog應滿足:
θog≤π/2-min(θxh,θyh)
(7)
對于圓形載荷,θog應滿足:
θog≤π/2-θfov
(8)
若θog滿足條件,則根據地面點在地固坐標系下的坐標(xge,yge,zge)及式(6)所計算出的四維轉換矩陣M,計算地面點在衛星本體坐標系下的坐標(xgovygo,zgo):
(9)
對于矩形載荷,計算G、S與z軸所形成的角在xSz面上的投影θxSz及在ySz面上的投影θySz:
(10)
若載荷能夠覆蓋地面點,則:
(11)
對于圓形載荷,則直接計算G、S與z軸所形成的角:
(12)
若載荷能夠覆蓋地面點,則:
|θGSz|≤θfov
(13)
載荷可視化主要是通過Cesium進行實現的。Cesium框架并未直接提供衛星載荷實體類,僅提供了一種柱體實體類,可以通過柱體的頂部半徑設置為0使其顯示成為椎體,但這一類實體無法根據實際需求任意調節載荷的視場角及三維旋轉,無法直接使用。Cesium框架中包含兩種圖形接口,即Entity和Primitive接口,雖然都可以繪制圖形,從而顯示數據可視化,但相較于Entity接口,Primitive接口更加接近WebGL底層,在加載時效率更高,自由度也更高,因此,本文采用在Primitive接口基礎上對其進行二次開發,對衛星載荷類進行封裝。
如圖7所示,衛星載荷可視化類參數主要包括6項,分別用于確定衛星載荷名稱、載荷外部紋理、載荷邊界寬度、載荷邊界顏色、載荷邊界點坐標以及載荷頂點坐標。載荷邊界點坐標是通過計算服務器獲取的一組邊界點坐標值,在可視化過程中,每次讀取坐標數組中的2個坐標,并與載荷頂點坐標一同傳入 PolygonGraphics接口,形成三角形,最終通過多個三角面對衛星載荷進行可視化模擬,可視化結果如圖8所示。其中,圖8(a)為矩形載荷三維可視化結果,圖8(b)為圓形載荷三維可視化結果,每種載荷參數在每幅圖左上角均有顯示,也可以通過添加動作進行實時更改。

圖7 衛星載荷可視化類參數Fig.7 Parameters of satellite load visualization

圖8 衛星載荷可視化結果Fig.8 Visual results of satellite load
過境分析結果主要通過圖9所示界面展示給用戶,用戶根據分析結果確定過境時間與時長,從而對衛星或載荷下一步行動進行設置。

圖9 衛星載荷過境分析的可視化結果Fig.9 Visual result of satellite load transit analysis
場景信息的保存與讀取是仿真場景及仿真結果共享的基礎。本文平臺提供了本地保存及讀取以及網絡保存及讀取2種方式。把場景基本信息保存為一個JSON文件,并將其下載到本地或上傳至服務器端實現場景的保存。
如圖10(a)所示,JSON文件中主要包括場景開始、結束時間以及9個不同的實體及實體參數列表,其中實體參數列表中保存了如圖10(b)所示的實體主要參數及計算結果。平臺通過讀取JSON文件并根據實體參數對場景中的實體進行設置,從而實現場景信息的恢復。

圖10 場景JSON數據Fig.10 JSON data of scene
為驗證本文方法的有效性,針對圓形載荷和方形載荷,在不同側擺角下對地面固定目標與對地面移動目標的覆蓋情況分別進行仿真,并與STK結果進行對比。
本文實驗使用的機器配置如下:操作系統Windows 10,處理器Intel Core I9-9900K,顯卡NVIDIA GeForce RTX 2080 8 GB,內存DDR4 64 GB。本文平臺可視化基于Cesium架構使用JS語言實現,后臺計算服務器使用Nodejs實現。
仿真起始時刻為2020年4月12日04:00:00(UTCG),仿真結束時刻為2020年4月14日04:00:00(UTCG)。所使用的衛星軌道參數、載荷參數及地面目標參數如表1~表3所示。

表1 衛星軌道參數Table 1 Satellite orbit parameters

表2 載荷參數Table 2 Load parameters (°)

表3 地面目標經緯度Table 3 Latitude and longitude of ground targets (°)
圖11為衛星1搭載方形載荷情況下本文平臺與STK軟件的可視化結果對比。其中,圖11(a)與圖11(c)為STK可視化結果,圖11(b)與圖11(d)為本文可視化結果,圖11(a)與圖11(b)為2020年4月12日04:00:00(UTCG)時刻,載荷滾動角、俯仰角、偏航角均為0°情況下的對比,圖11(a)與圖11(b)為2020年4月12日07:33:14.950(UTCG)時刻,載荷滾動角為8°、俯仰角為16°、偏航角為40°情況下的對比。可以看出,本文平臺可視化結果與STK結果基本一致,同時通過設置地面邊界顏色,其使地面覆蓋情況可以更清晰地展現在用戶面前。

圖11 矩形載荷可視化結果對比Fig.11 Comparison of visual results of rectangular load
如圖12所示,本文對衛星2參數搭載圓形載荷可視化結果與STK軟件可視化結果進行了對比。其中,圖12(a)與圖12(c)為STK可視化結果,圖12(b)與圖12(d)為本文平臺可視化結果,圖12(a)與圖12(b)為2020年4月12日04:00:00(UTCG)時刻,載荷滾動角、俯仰角、偏航角均為0°情況下的對比,圖12(a)與圖12(b)為2020年4月13日05:04:29.436(UTCG)時刻,載荷滾動角為-4.3°、俯仰角為-8.6°、偏航角為0°情況下的對比。可以看出,本文平臺可視化結果與STK結果基本一致。

圖12 圓形載荷可視化結果對比Fig.12 Comparison of circular load visual results
如圖13所示,本文還增加了對載荷覆蓋邊界的可視化仿真,用戶可以根據自身需要,獲取邊界點及載荷中心點的具體坐標。圖13(a)為圓形載荷獲取邊界點及載荷中心點的可視化結果,圖13(b)為矩形載荷獲取邊界點擊載荷中心點的可視化結果。通過獲取載荷覆蓋范圍的中心點及邊界點,可以更清晰地了解載荷的覆蓋情況,同時也為對地面成像仿真提供了便利。

圖13 載荷邊界及中心點可視化結果Fig.13 Visual results of load boundary and center point
實驗結果表明,本文提出的四維變換矩陣法能夠通過Cesium平臺對衛星載荷進行有效仿真,相較于STK,用戶還可以通過交互手段,在仿真過程中實時獲取載荷具體覆蓋區域,并動態改變其載荷參數。同時,通過將數據計算與可視化相分離,有效減少了前臺的計算壓力,進一步提升了仿真的效率。
表4為衛星1搭載矩形載荷在載荷無偏轉情況下對固定目標的過境分析結果對比。圖14(a)和圖14(b)為矩形載荷在2020年4月12日07:46:31.81(UTCG)時刻STK與本文過境可視化情況對比,圖14(c)和圖14(d)為圓形載荷在2020年4月12日14:13:16.27(UTCG)時刻STK與本文過境可視化情況對比。可以看出,本文方法與STK結果誤差極小,均在毫秒級別,同時通過圖14可見本文平臺計算結果與可視化結果一致。

表4 過境窗口起始時刻及持續時間對比Table 4 Comparison of the start time and duration of the transit window

圖14 過境開始時刻可視化結果對比Fig.14 Comparison of visual results at the beginning of transit
圖15、圖16分別為本文平臺所計算的衛星搭載不同載荷對固定目標及移動目標的過境起始時刻及過境持續時間分析結果與STK軟件計算結果之間的誤差。可以看出,在載荷無偏轉情況下,過境起始時刻及過境時長誤差均在0.1 s左右,在載荷偏轉情況下,過境起始時刻及過境時長誤差均在0.5 s左右,基本可以滿足工程實踐中的需要。

圖15 過境起始時刻誤差Fig.15 Transit start time error

圖16 過境時長誤差Fig.16 Transit time error
本文設計一種基于Cesium的衛星載荷可視化仿真分析平臺,通過將復雜數據計算置于云端,使其能在任意瀏覽器上流暢運行,有效提高了可視化仿真的便捷性,同時利用JSON文件對仿真數據進行存儲,降低了仿真結果共享難度。此外,還提出一種基于四維矩陣的載荷邊界及過境仿真計算方法。仿真結果表明,本文方法可以得到較好的衛星載荷可視化仿真效果,準確分析過境情況。本文僅對單個目標進行分析,并只仿真了單個衛星的情況,下一步將針對區域目標進行研究,同時提高大量衛星數據的計算效率。