李春陽,張廷華,田磊源
(1.航天工程大學(xué),北京 101416;2.96945 部隊(duì),河北 保定 072653)
隨著航天技術(shù)的不斷發(fā)展進(jìn)步,各個(gè)國家的航天活動(dòng)逐漸增加,對于空間優(yōu)勢的爭奪日漸激烈,空間目標(biāo)監(jiān)視日益重要??臻g目標(biāo)監(jiān)視是爭奪空間優(yōu)勢的前提,隨著航天活動(dòng)的增多,軌道預(yù)報(bào)對于掌握空間目標(biāo)的位置與運(yùn)動(dòng)特性十分重要。軌道預(yù)報(bào)是指利用軌道根數(shù)計(jì)算航天器未來預(yù)期時(shí)間的運(yùn)行軌道,對于航天任務(wù)分析、空間目標(biāo)碰撞預(yù)警等具有重要作用[1]。
STK(Satellite Tool Kit)是由美國分析圖形公司(Analytical Graphics,Inc.,AGI)開發(fā)的用于航天領(lǐng)域仿真設(shè)計(jì)的商業(yè)化分析軟件,其具有成熟的三維顯示模塊、鏈路分析模塊、通信分析模塊、接近分析模塊、覆蓋分析模塊、高分辨率數(shù)字地圖等功能,但其獲取的數(shù)據(jù)類型非常繁雜,價(jià)格比較昂貴,且存在技術(shù)封鎖,用戶無法控制源代碼。STK 能夠?qū)崿F(xiàn)對衛(wèi)星、飛機(jī)、艦船、車輛以及地面觀測站及其傳感器等各系統(tǒng)的建模和仿真分析,有可視化窗口,提供多種三維數(shù)據(jù)模型,具有完備的、可在線更新的數(shù)據(jù)庫,可實(shí)現(xiàn)實(shí)時(shí)的數(shù)字/半實(shí)物仿真,具有強(qiáng)大的交互式圖文輸出能力[2-6]。
Matlab GUI 是可視化的軟件顯示平臺,通過STK與Matlab 的聯(lián)合仿真,根據(jù)功能需求設(shè)計(jì)進(jìn)行程序書寫,設(shè)計(jì)布局合理、功能清晰,具有形象生動(dòng)的衛(wèi)星目標(biāo)軌道預(yù)報(bào)用戶界面,可實(shí)現(xiàn)仿真功能以及信息的高效利用。
STK 的Connect 模塊為第三方應(yīng)用程序提供了擴(kuò)展接口,可以與Matlab 聯(lián)合仿真,實(shí)現(xiàn)第三方應(yīng)用程序向STK 發(fā)送指令并接收STK 數(shù)據(jù),完成信息交互。STK 將通信過程封裝成動(dòng)態(tài)鏈接庫,用戶只需調(diào)用相應(yīng)的函數(shù)即可實(shí)現(xiàn)與STK 的信息傳遞,同時(shí),仿真連接著STK 和STK/VO,可以實(shí)時(shí)觀察事件[7-9]。
STK 軟件本身的數(shù)據(jù)處理能力較弱,Matlab 是由美國MathWorks 公司出品的科學(xué)計(jì)算常用的系統(tǒng)軟件,通過兩個(gè)軟件聯(lián)合仿真分析可以取長補(bǔ)短。利用STK 與Matlab 聯(lián)合仿真需要對兩個(gè)軟件進(jìn)行互聯(lián)設(shè)置,在正確安裝STK 與Matlab 后,在Matlab 中刷新路徑,獲取配置文件。
在進(jìn)行STK 與Matlab 連接時(shí),分別打開兩個(gè)軟件,在Matlab 中執(zhí)行如下命令:
stkInit;%建立初始連接
若出現(xiàn)以下提示,則表示互聯(lián)成功:“警告:ConnectHost:setting default connection to localhost:5001
警告:mexConnect:Connecting to localhost:5001”。
STK 與Matlab 最多可同時(shí)創(chuàng)建兩個(gè)連接,因此每次實(shí)時(shí)數(shù)據(jù)傳遞且在通信完成后,通常需要及時(shí)關(guān)閉連接,以免下次運(yùn)行重新建立時(shí)連接個(gè)數(shù)過多而出現(xiàn)錯(cuò)誤連接。
在STK 軟件中為每個(gè)行星都定義了相對應(yīng)的坐標(biāo)系,這些坐標(biāo)系的原點(diǎn)都在中心天體的質(zhì)心上,而每個(gè)天體的坐標(biāo)系不同[10]。J2000 地心慣性坐標(biāo)系是慣性坐標(biāo)系,基于牛頓力學(xué)的衛(wèi)星動(dòng)力學(xué)和運(yùn)動(dòng)學(xué)方程在該坐標(biāo)系描述,以地心為中心度量的其他天體運(yùn)動(dòng)參數(shù)也在該坐標(biāo)系下描述[11]。
在衛(wèi)星目標(biāo)參數(shù)設(shè)置時(shí)同時(shí)確定空間坐標(biāo)系統(tǒng)的選擇,其函數(shù)為:
其中,objPath 代表對象名稱,propagator 代表傳播函數(shù),coordSystem 代表坐標(biāo)系名稱,tStart 和tStop代表仿真的開始和結(jié)束時(shí)間,dt 代表時(shí)間步長,semimajorAxis、eccentricity、inclination、argOfPerigree、RAAN、meanAnomaly 為衛(wèi)星軌道六根數(shù)。
設(shè)置觀測站位置信息函數(shù)為:
其中,acPath 代表對象路徑,llaPos 為觀測站的位置信息,包括地理經(jīng)度、緯度以及水平高度。在觀測站添加傳感器,根據(jù)實(shí)際觀測系統(tǒng)設(shè)置傳感器,因此設(shè)置傳感器類型為矩形傳感器。
在測控資源的調(diào)度過程中,測站對目標(biāo)的跟蹤預(yù)報(bào)為調(diào)度制定者提供基礎(chǔ)數(shù)據(jù),這些數(shù)據(jù)顯示了測站對衛(wèi)星的觀測時(shí)間段內(nèi)的時(shí)間窗口、方位角、仰角和距離等相關(guān)信息[12-13]。用戶獲取衛(wèi)星的過境報(bào)告,需要利用STK 的Access 功能建立空間目標(biāo)與地面站間的聯(lián)接關(guān)系。訪問分析工具Access 是STK 的核心分析工具,可以用于計(jì)算任何對象之間的可視狀態(tài),即一個(gè)對象是否可以看到另一個(gè)對象,計(jì)算對象之間滿足要求的時(shí)間間隔。為滿足衛(wèi)星過境數(shù)據(jù)需求,基于Access 分析工具可實(shí)現(xiàn)測站對衛(wèi)星的可視狀態(tài)分析。
利用Matlab GUI 對用戶界面進(jìn)行設(shè)計(jì),在界面添加相應(yīng)的組件按鈕,并利用ActiveX 實(shí)現(xiàn)仿真場景的可視化顯示。主界面主要分為左右兩側(cè),左側(cè)主要進(jìn)行觀測時(shí)間、位置坐標(biāo)等參數(shù)輸入,右側(cè)為可視化顯示窗口,供用戶實(shí)時(shí)查看事件響應(yīng)。子界面與主界面沿用同樣設(shè)計(jì)風(fēng)格,界面功能主要包括獲取目標(biāo)TLE 文件、計(jì)算目標(biāo)過境預(yù)報(bào)以及獲取目標(biāo)天文坐標(biāo),其中主界面用于多目標(biāo)可見性分析,子界面用于單目標(biāo)可見性分析。
兩行軌道數(shù)據(jù)(Two-Line Element,TLE) 是由北美空防司令部發(fā)布的空間目標(biāo)(包括人造衛(wèi)星、航天器、飛行體和火箭碎片)的運(yùn)行狀態(tài)數(shù)據(jù),以開普勒軌道參數(shù)之間的數(shù)學(xué)關(guān)系確定空間目標(biāo)的時(shí)間、坐標(biāo)、方位、速度等各項(xiàng)參數(shù),具有極高的精度[16]。
TLE 兩行星歷文件參數(shù)較少但能夠保證精度,因此利用Space-Track 網(wǎng)站、CelesTrak 網(wǎng)站以及Heavens-Above 網(wǎng)站查詢選取在軌衛(wèi)星、空間站等空間目標(biāo)軌道的兩行軌道根數(shù),以此作為空間目標(biāo)庫的數(shù)據(jù)。目前空間目標(biāo)庫有歷年來各國發(fā)射的各類衛(wèi)星、空間站等包含星鏈衛(wèi)星在內(nèi)的空間目標(biāo)800余個(gè),且以TLE 星歷文件的格式存儲。
仿真通過Matlab 指令函數(shù)控制STK 執(zhí)行命令,建立新場景及新的對象,包括衛(wèi)星、觀測站以及傳感器。利用界面輸入觀測時(shí)間、觀測地點(diǎn)、傳感器參數(shù)以及衛(wèi)星軌道預(yù)報(bào)器類型參數(shù)等信息。仿真實(shí)現(xiàn)流程如圖1 所示。
圖1 衛(wèi)星過境預(yù)報(bào)仿真流程
用戶界面功能函數(shù)指令通過Connect 模塊的協(xié)議路徑產(chǎn)生相關(guān)信息以及接收各種診斷信息的反饋,以消息的形式反饋給用戶,主要利用函數(shù)AgUtMsg()和AgUtMsgSetMsgFunc()進(jìn)行運(yùn)作。其中,AgUtMsg()用于傳遞消息,而AgUtMsgSetMsgFunc()是用于更改消息處理函數(shù)。利用模塊內(nèi)部AgCon ProcessSTKCmd()函數(shù)向STK 發(fā)送指令,建立新場景及新的對象,包括衛(wèi)星、觀測站以及傳感器等對象。根據(jù)界面用戶輸入信息,分別對相應(yīng)的目標(biāo)實(shí)現(xiàn)參數(shù)設(shè)置[15]。
在仿真過程中,首先設(shè)置預(yù)期觀測時(shí)間和地點(diǎn),設(shè)置傳感器參數(shù),若用戶需要選擇在預(yù)期時(shí)間、預(yù)期地點(diǎn)內(nèi)可觀測的已知空間合作目標(biāo)時(shí),可直接調(diào)用空間目標(biāo)庫中衛(wèi)星軌道信息,通過計(jì)算獲取在預(yù)設(shè)參數(shù)條件下空間目標(biāo)的可見性結(jié)果。當(dāng)空間目標(biāo)庫中所有目標(biāo)在當(dāng)前參數(shù)條件下不能被觀測到時(shí),重新返回設(shè)置相關(guān)參數(shù),進(jìn)行再次仿真計(jì)算;當(dāng)空間目標(biāo)庫中目標(biāo)在當(dāng)前參數(shù)條件下可以被觀測到時(shí),在可見衛(wèi)星中選擇需要觀測的目標(biāo),通過仿真計(jì)算進(jìn)行可見性分析。若用戶需要自行設(shè)置軌道信息,則可選擇調(diào)用外部TLE 文件,或者直接輸入軌道要素,即軌道半長軸、偏心率、軌道傾角、近地點(diǎn)幅角、升交點(diǎn)赤經(jīng)以及真近點(diǎn)進(jìn)行仿真計(jì)算。當(dāng)有多顆衛(wèi)星時(shí),利用主界面功能對衛(wèi)星進(jìn)行可見性分析,從中篩選一顆可見過境衛(wèi)星進(jìn)行仿真跟蹤,實(shí)現(xiàn)過境預(yù)報(bào)。
在衛(wèi)星過境預(yù)報(bào)界面進(jìn)行操作,運(yùn)行程序可以觀察到三維仿真顯示圖,利用Matlab 抓取STK 數(shù)據(jù),其相對應(yīng)函數(shù)為:
其中,objPath 代表對象的路徑,objPath 代表分析目標(biāo)的路徑,rptStyle 代表所需獲取報(bào)告的類型。
獲取兩行星歷文件的方式有兩種,一種為單點(diǎn)式,即選取仿真時(shí)間內(nèi)的某一個(gè)時(shí)間點(diǎn),獲取兩行星歷文件;另一種為軌跡采樣式,即是在全時(shí)段內(nèi)獲取兩行星歷文件。單點(diǎn)式獲取星歷誤差較大,因此選擇第二種方式,以獲取精度較高的星歷文件用于軌道預(yù)報(bào)分析。過境預(yù)報(bào)是指通過衛(wèi)星軌道預(yù)報(bào),計(jì)算出衛(wèi)星在未來某一段時(shí)間內(nèi)通過預(yù)定區(qū)域的弧獲取過境數(shù)據(jù),使用函數(shù)如下:
其中,accObjPath 代表分析目標(biāo)的路徑。該報(bào)告包括過境時(shí)間、方位角以及高度角,部分報(bào)告如圖2 所示。以衛(wèi)星00733 為仿真對象,與STK 仿真數(shù)據(jù)、國家天文臺的軌道預(yù)報(bào)軟件獲取數(shù)據(jù)進(jìn)行對比,如圖3、4 所示。
圖2 衛(wèi)星過境預(yù)報(bào)部分?jǐn)?shù)據(jù)截取
圖3 過境預(yù)報(bào)功能與STK誤差對比
從圖3 與圖4 可以看出,三種軟件仿真數(shù)據(jù)的差值在角秒量級,精確度較高,且主要誤差為角度與弧度之間轉(zhuǎn)換無效位造成。利用STK/Matlab 聯(lián)合仿真的過境數(shù)據(jù)可以用于引導(dǎo)觀測設(shè)備實(shí)現(xiàn)精確觀測,縮小目標(biāo)搜索空域范圍,減小目標(biāo)捕獲時(shí)間,實(shí)現(xiàn)快速尋找目標(biāo)進(jìn)行跟蹤觀測的目的。
圖4 過境預(yù)報(bào)功能與國家天文臺軟件誤差對比
文中利用基于STK/Matlab 聯(lián)合平臺實(shí)現(xiàn)觀測站對衛(wèi)星的跟蹤預(yù)報(bào),實(shí)現(xiàn)對仿真過程的可視化顯示。通過仿真以及計(jì)算分析,快速準(zhǔn)確地獲取衛(wèi)星目標(biāo)過境預(yù)報(bào)數(shù)據(jù)以及可見時(shí)間窗口,為進(jìn)行實(shí)際空間目標(biāo)觀測跟蹤奠定數(shù)據(jù)基礎(chǔ)。該設(shè)計(jì)充分利用聯(lián)合平臺的優(yōu)勢,利用Matlab GUI 將該功能軟件化,避免了STK 源代碼無法更改的問題,可以將該功能集成到其他軟件系統(tǒng)中,充分實(shí)現(xiàn)有限信息的充分利用。