苗繼松,邵瓊玲,任 元,呂永申,王 琛
(裝備學院 航天裝備系,北京 101416 )
MATLAB/STK聯合仿真方法研究及GUI設計
苗繼松,邵瓊玲,任 元,呂永申,王 琛
(裝備學院 航天裝備系,北京 101416 )
詳細介紹了MATAB(矩陣實驗室)與STK(衛星工具箱)軟件互聯的方法;STK提供了相應的二次開發接口,可供MATLAB等軟件進行二次開發;利用MATLAB和STK軟件組合搭建仿真環境,以某Walker星座的設計與優化算法為例,具體介紹了聯合仿真步驟流程及GUI界面的設計方法,并綜合考慮了衛星軌道、傳感器以及衛星編隊等相關參數對星座最優設計的影響;結果表明,利用MATLAB和STK組合仿真能夠以圖像及數據列表的形式方便直觀的給出最優結果,通過聯合仿真,較大程度上減小了MATLAB的編程工作量,同時通過GUI界面的設計,以可視化的形式對主體程序進行集成,只需輸入參數,便可快速進行相應的軌道仿真與數據輸出,避免了在進行衛星星座設計時需反復對STK參數進行調整的工作;在對衛星星座設計與運行軌道的問題分析中,MATLAB/STK聯合仿真相較于使用單一軟件進行問題分析而言,要更加便利、形象直觀。
矩陣實驗室;衛星工具箱;聯合仿真;GUI界面設計;星座優化
MATLAB是由“matrix”與“laboratory”組合的簡寫,意為矩陣實驗室(矩陣工廠),其是由美國mathworks公司發布的主要面向科學計算與數值仿真、可視化以及交互式程序設計的高科技計算軟件[1]。MATLAB的基本單元是矩陣,基本功能是能夠進行矩陣計算、創建用戶界面、繪制函數和數據曲線以及對其他編程語言的程序進行連接等,可廣泛應用于控制設計、工程計算、信號檢測、信號通訊、圖像處理及金融建模設計與分析等領域。它將數據可視化以及非線性動態系統的建模與仿真等諸多強大功能集成于一個易使用的視窗環境中,為很多科學領域提供了一種較為全面的解決方案,并在較大程度上摒棄了傳統的非交互式程序語言(如C、Fortran、C++、JAVA等)的編輯模式。MATLAB的指令寫法與實際數學和工程中常用的形式十分相近,故對同樣一件事情來說,相對于用C,FORTRAN等語言完成,用MATLAB來解算問題要簡便許多。同時,MATLAB也對像Maple等軟件的優點進行了吸收,使其成為一款功能強大的數學軟件[2]。
衛星星座設計最常用的仿真軟件是STK(衛星工具箱),其是一款由美國Analytical Graphics公司開發的在航天領域中一直處于領先地位的商品化分析軟件[3]。它能夠對航天任務周期的全過程提供支持,主要包括概念設計、需求分析、運行測試和任務發射等應用[4]。STK可以對航空航天和防御等任務進行支援,利用它可以快速分析復雜空間環境,并可獲得易于理解的圖表和文本形式的分析結果,從而方便確定最佳問題解決方案。STK不但具有強大的數據仿真功能,還具有功能性較強的三維可視化模塊,可對三維模型進行編輯[5],從而可以為STK和其它附加模塊提供逼真的三維視景顯示。在STK中通過設定預設場景,并對衛星等模型進行添加,并設定對應參數,就能夠對衛星運行的二維和三維視景進行仿真實現。目前,STK最高版本為11.0,并由之前的Satellite Tool Kit更名為Systems Tool Kit,體現了其功能由衛星等對象拓展到了整個系統。由于美國自7.0版本開始就對中國實行禁運,目前STK國內可購買到的最高商業版本是 6.0版本。
雖然STK有效解決了三維視景顯示問題,但在衛星的運行過程中,如果需要對衛星的相應參數進行改變,就需要停止仿真,重新按照相應流程一步步設定相關參數,從而不能實現對整個視景系統進行自動且連續地運行仿真。本文結合MATLAB和STK兩個軟件各自的優點,利用STK提供MATLAB接口模塊[6],通過使用MATLAB進行相關數據處理,并給STK發送相關的控制指令控制STK的運行,使仿真系統按照MATLAB預先設定的程序運行,從而大大增強了衛星視景仿真的靈活性和可操作性[7]。本文以實際應用為背景,結合某Walker星座的設計與優化問題,對其分析過程以及相應的編程和GUI界面設計給出了詳細的闡述與說明。
在STK與MATLAB進行聯合仿真分析之前,需要對相關的環境進行配置。具體的配置過程會因為STK與MATLAB不同的安裝順序而有所不同[8]。下面進行具體介紹:
如果用戶的計算機中先安裝了MATLAB,然后才安裝STK軟件,則STK會自動地配置好相關的初始化文件。用戶只需要對MATLAB進行一定的設置就可以了。具體步驟如下:
1)分別啟動STK和MATLAB;
2)在MATLAB中運行M文件stkinit,由于是首次運行,MATLAB會要求用戶設置STK的運行環境;
3)在彈出的“STK/MATLAB接口配置”對話框中,選擇“繼續”按鈕;
4)在彈出的“瀏覽文件夾”對話框中,選擇STK安裝目錄下的“MATLAB”文件夾,從而確定所需M文件的位置;
5)之后,MATLAB將會打開另一個“瀏覽文件夾”對話框,要求選擇Mex文件位置,和步驟4)一樣,在STK安裝目錄下選擇“bin”文件夾,并單擊確定;
6)在之后MATLAB詢問是否更改默認MexConnect連接配置、STK/Connect模塊的初始化文件、STK的默認主目錄時,全部選擇“否”便可;
到這里,先進行MATLAB安裝后進行STK安裝的STK/MATLAB聯合仿真環境就配置成功了。
如果計算機中先安裝了STK,而后才安裝MATLAB,則除了要在MATLAB中進行STK的運行設置外,還要再對一些初始化文件進行相關設置。對該情況下MATLAB/STK聯合仿真環境進行配置的主要步驟是:將STK安裝目錄里的“MATLAB;ToolboxLocal”文件夾中的“agiCleanPath.m”、“agiInit.m”和“stkInit.m”文件復制到MATLAB安裝目錄下的“Toolbox;Local”文件夾中,其余步驟按照1.1節中的內容進行相應設置便可。
在STK/MATLAB聯合仿真環境配置成功后,有MATLAB主動和被動兩種運行方式。
1)MATLAB主動方式:分別啟動STK和MATLAB,在MATLAB中運行M文件stkinit,然后開始STK和MATLAB的協同工作。在該模式下能夠充分利用MATLAB的各種輔助工具,便于進行相應的設計工作;
2)MATLAB被動方式:先啟動STK,然后選擇“工具”,打開STK的“選項”對話框后,選中里面的“MATLAB選項卡”,單擊“連接”按鈕,STK就會立即啟動MATLAB引擎。在該模式下,這兩個程序的運行效率可以顯著提高。
在配置MATLAB/STK的連接環境完成后,便可進行下一步的MATLAB/STK聯合仿真應用。下面以某一簡單案例,詳細介紹使用MATLAB/STK聯合仿真方式對星座軌道參數進行優化設計的完整分析過程。
1)問題陳述:在星座設計與優化中,設計18顆衛星的Walker星座,確定對北緯45°,經度為33°的地面站進行訪問的最大、最小時間以及對應的具體軌道設計參數。
2)限定條件:衛星高度1 000 km;傳感器視場角110°,固定指向天底;星座的RAAN spread為360°,相位因子為2;軌道面數在3~9之間,軌道傾角在35~55之間。
1)MATLAB與STK接口互聯并調試;
2)用MATLAB進行具體星座及載荷的設定與編程。包括場景設置與命名、衛星運行時間設定、星上相關載荷的設定、軌道坐標系及軌道根數的確定等[9];
3)聯合仿真程序對應的GUI界面設計。通過MATLAB提供的可視化面向對象的用戶界面開發環境進行GUI應用程序的創建。在GUI界面中通過輸入相關仿真參數,便可對比不同軌道傾角、不同軌道面數時衛星訪問地面站的時間,從而確定出最優設計參數,并通過GUI界面進行顯示。總體的流程如圖1所示。

圖1 MATLAB/STK聯合仿真流程圖
程序主要由兩大部分組成:一個是主程序zhu.m(同時伴隨一個GUI界面文件zhun.fig);另一個是運算程序hanshu.m。
主程序的主要功能是從GUI界面獲取輸入的參數,并將其傳遞給運算程序,經運算程序運算后,主程序將得到的返回參數用2D和3D圖像顯示,同時顯示最終運算結果界面。最終結果包括在給定具體地面站的經緯度后,給出不同類型的Walker星座對該地面站最大訪問時間、最小訪問時間和平均訪問時間,并同時給出訪問時間最大時對應的Walker星座的軌道面數和軌道傾角。
由上述分析可知,運算程序是一個具有多輸入多輸出的功能函數。
主程序需要實現的功能是讀取輸入參數并傳給運算程序,同時讀取運算程序的返回參數并用界面顯示。衛星的設計約束具體已知,由于衛星星座總星數為18顆,從而可以確定出設計變量中的軌道面數為3個具體值3、6、9。以上這些數據可以在程序中具體確定,但唯一不確定的是軌道傾角,因為軌道傾角只給出了范圍,可能的數值有無窮多個,故這里還需要另外確定一個變量,這個變量就是步長,所以在GUI界面中,必須具有步長輸入框。
為了及時方便得知計算的總次數以及程序在整個運算中具體到哪一步,可通過編程將該信息顯示在MATLAB命令執行框中;同時為了實現將該程序生成計算機的可執行文件等后續工作,必須將STK初始化命令stkinit封裝在主程序中[10];為了使MATLAB執行框中只顯示關鍵信息,故需要用clc語句將在顯示結果之前出現的內容進行清除,從而使界面顯得更加干凈整潔,使軟件系統更加人性化。
運算程序最先的工作就是從主程序中獲取相應參數,然后進行場景創建、地面站創建、衛星創建、傳感器創建、視場角參數設置、walker星座的創建以及鏈路和集群的創建等,之后進行仿真分析、存儲相應數據并作圖。將每次運算的訪問時間結果存儲在一個變量中構成結果矩陣,之后進行相應的結果處理。求取的最大訪問時間、最小訪問時間、平均訪問時間,即為求取結果矩陣中的最大值、最小值和所有數據的平均值。根據最大值所對應結果矩陣中的行和列,即可判斷出其所對應的軌道面數和軌道傾角的具體值,從而將這些參數返回給主程序進行顯示。
根據問題描述,具體程序設計如下:
將程序的輸入設為a(所需計算軌道傾角范圍最小值)、b(所需計算軌道傾角范圍最大值)、c(計算軌道傾角的步長)、d(地面站經度)、f(地面站緯度)5個變量。根據軌道平面的不同和軌道傾角的不同進行兩層嵌套循環。在每次循環中,需要進行相應內容的創建:首先,創建一個場景,并設置場景時間(起始時間和結束時間,這里設為1天);而后創建一個地面站和一顆種子衛星,并在衛星上裝載一個傳感器,并設置傳感器參數,定義傳感器為簡單錐角,錐角為55°,指向天底;然后設置衛星軌道參數,設置半長軸為7 278 km,偏心率為0,近地點幅角為0,平近點角為0。由于設置的時間為24 h,即86 400 s,故訪問時間最大不超過86 400 s。在每次循環中,分別對種子衛星,星座類型,軌道平面數,每個平面衛星數,相位因子進行設置,并建立walker星座。而后建立一個星座集合并命名,建立一個傳感器集合并命名為family2,建立一個連接于傳感器集合和地面站之間的鏈路并進行命名。通過函數stkReport返回訪問時間并形成矩陣,將矩陣命名為Total。計算并輸出最大訪問時間h,最小訪問時間l,平均訪問時間e。最后建立軌道平面,并將最終得到的軌道傾角和訪問時間用2D和3D的圖形展現出來。
在完成MATLAB與STK的連接后,便可在MATLAB中通過編程自行完成對STK中相應場景、地面站等對象內容的創建以及各個對象相應參數的設置和計算等。根據實際問題的需要,相應的MATLAB對STK的控制語句可以使用STK軟件中的Help進行查詢。依照本問題所需內容,在STK中查詢相應語句如下:
1) 在stk中創建一個場景,命名為home,程序語句為stkNewObj('/','Scenario','home')。
2) 設置場景時間,起始時間為19 June 2016,結束時間為20 June 2016,程序語句為stkSetTimePeriod('19 June 2016 00:00:00.0','20June 2016 00:00:00.0','GREGUTC')。
3) 在stk中建立一個地面站,命名為target,程序語句為stkNewObj('*/','Facility','target')。
4) 根據輸入的經緯度設置地面站位置,程序語句為stkSetFacPosLLA('Scenario/Lch/Facility/target', [latitude*pi/180; longitude*pi/180; 0])。
5) 在stk中建立一個衛星,命名為body,程序語句為stkNewObj('*/','Satellite','body')。
6) 在衛星body上裝載一個傳感器,命名為eye,程序語句為stkConnect(conid,'New','/ */Satellite/body/Sensor','eye')。
7) 定義傳感器:簡單錐角,錐角55度,程序語句為stkConnect(conid,'Define','*/Satellite/body/Sensor/eye','SimpleCone 55')。
8) 定義傳感器的位置,程序語句為stkExec(conid,'Location */Satellite/body/Sensor/eye Center')。
9) 創建walker星座,并創建集群命名為family,程序語句為cs=['Walker ' ' */Satellite/body ' ' Delta ' aa ' ' bb ' ' cc ' ' dd ' Yes ConstellationName family']
10) 建立傳感器集群,命名為family2,程序語句為stkConnect(conid,'New','/ */Constellation',' family2')
11) 建立傳感器集群和地面站之間的鏈路,程序語句為stkConnect(conid,'New','/ */Chain',' relation'),stkConnect(conid,'Chains','*/Chain/relation','Add */Facility/target'),stkConnect(conid,'Chains','*/Chain/relation','Add */Constellation/family2')
12) 讀取stk中報告時間,程序語句為[secdata,secNames]=stkReport('*/Chain/relation','Complete Chain Access')
確定地面站的經度為33°,緯度為45°,GUI界面輸入及仿真結果如圖2~圖7所示。

圖2 GUI輸入參數圖

圖3 18顆衛星的Walker星座二維圖

圖4 18顆衛星的Walker星座三維圖

圖5 軌道面、軌道傾角與訪問時間關系圖

圖6 總訪問時間隨軌道條件變化的3D圖

圖7 最終結果GUI顯示圖
在圖2的GUI界面中,依照1.1節中的相應問題和限定條件,輸入軌道傾角的范圍在35~55°之間,由于在這個范圍之間,軌道傾角會有無數種選擇,為了節省運算時間,同時又不失規律性,故綜合考慮選擇了軌道傾角的計算步長為5,即選擇5組軌道傾角進行計算分析。輸入地面站的經緯度,同時勾選2D和3D顯示效果圖,點擊“開始計算按鈕”,便會得到相應的仿真結果,如圖2~圖7所示。
由圖5分析可得:在軌道傾角為35°,40°,45°時,軌道傾角不變,3軌道面、6軌道面和9軌道面時,由該18顆衛星組成的walker星座對經緯度為33°,45°的地面站在2016年6月19日~2016年6月20日這一天中的訪問總時間相差不大;當軌道傾角為50°時,當walker星座為3軌道面時總訪問時間最小,6軌道面比9軌道面時對應的總訪問時間多,但相差不大;當軌道傾角為55°時,3種軌道面對應的總訪問時間相差較大,且總訪問時間由小到大依次為3軌道面、9軌道面和6軌道面。
此外,觀察圖5可進一步發現,在軌道傾角為35~55°時,隨著軌道傾角的增加,walker星座的總訪問時間整體上呈現增加的趨勢。具體觀察還可發現,除了6軌道面外,3軌道面和9軌道面在軌道傾角為55°時所對應的總訪問時間達到最大,之后呈現隨著軌道傾角的增加總訪問時間下降的趨勢。
由圖5、圖6的含義相同,只是將圖5的內容以三維坐標的形式進行展現,更加直觀。
圖7給出了最終的計算結果。在5種軌道傾角以及3種軌道面的共15種組合情況下,給出了最大訪問時間、最小訪問時間以及15種情況的平均訪問時間。同時也給出了總訪問時間最大時對應的軌道傾角和軌道面數。
如果需要變換地面站的位置以及增加或減少計算時的軌道傾角個數,可以再開始的GUI界面中進行相關參數的調整即可。
通過實際的應用案例,表明了MATLAB與STK聯合仿真的優越性,在對多顆衛星組成的星座或單顆衛星進行仿真分析中,單純借助MATLAB或STK某一種工具進行連續仿真分析時,會出現許多困難,具有諸多不便之處:若僅使用MATLAB進行仿真時,會出現編程工作量巨大的缺點;而只通過STK進行仿真時,會造成操作步驟繁瑣等現實問題的出現。如果通過MATLAB和STK進行聯合仿真,便可以極大地提高仿真效率。最后通過GUI界面的設計,使得MATLAB/STK仿真更加具有適用性。上述介紹的具體設計方法可以根據實際情況拓展至其他相應的仿真領域,具有較強的適用性。
[1] 劉 浩.MATLAB R2016a完全自學一本通[M].北京:電子工業出版社,2016.
[2] 張志涌,楊祖櫻.MATLAB教程[M].北京:北京航空航天大學出版社,2015.
[3] 王 欣,金 虎. 基于STK/MATLAB的通信衛星場景建模[J]. 電子測試,2009(04):1-5.
[4] 劉夫成,劉朝暉,劉 文,等. 基于STK/matlab的空間目標序列星圖仿真[J]. 紅外與激光工程,2014(9):3157-3161.
[5] 杜玉萍. 基于STK/Matlab的航天器可見性仿真分析[J]. 光電技術應用,2014(6):80-83.
[6] 王 倩,王祖林,何善寶,等. 動態星間鏈路分析及其STK/Matlab實現[J]. 電訊技術,2010(9):19-23.
[7] 李 博,葉 暉,張宏偉,等. 基于STK/Matlab接口的衛星通信鏈路研究[J]. 無線電通信技術,2016(6):37-40.
[8] 陳宏宇,吳會英,周美江,等. 微小衛星軌道工程應用與STK仿真[M].北京:科學出版社,2016.
[9] 許丞梁,郭福成,劉 洋. 基于Matlab/STK的航天電子偵察效能仿真技術研究[J]. 航天電子對抗,2015(3):17-20.
[10] 李雅瓊,李 楊,關貴注,等. MATLAB與STK組合仿真在星載天線伺服系統設計中的應用[J]. 遙測遙控,2016(5):1-5.
MATLAB/STK Joint Simulation Method and GUI Design
Miao Jisong,Shao Qiongling, Ren Yuan, Lü Yongshen, Wang Chen
(Academy of Equipment, Beijing 101416, China )
This paper introduces the method of MATLAB (Matrix Laboratory) and STK (Satellite Tool Kit) software interconnection. STK provides MATLAB the corresponding interface for further development. Using MATLAB and STK software to build simulation environment, the algorithm design and optimization of a constellation of Walker as an example, introduces the steps of the joint simulation process and the design method of GUI interface, and considering the influence of the satellite orbit, sensor, satellite formation and other related parameters on the optimal design of constellation. The results show that the combination of MATLAB and STK can be used to obtain the optimal results in the form of image and data list. The workload of MATLAB programming were greatly reduced by joint simulation. The corresponding track simulation and the data output can be completed when it comes to input parameters. It avoids the need to repeatedly adjust the STK parameters in the design of satellite constellation. In the analysis of the design of the satellite constellation, the MATLAB/STK joint simulation is more convenient and intuitive than a single software.
MATLAB; STK; adaptive; joint simulation; GUI design; constellation optimization
2017-02-21;
2017-03-11。
國家863項目(2015AA7026083)。
苗繼松(1993-),男,河南焦作人,碩士研究生,主要從事航天器軌道設計與應用方向的研究。邵瓊玲(1964-),男,北京市人,副教授,碩士研究生導師,主要從事航天器應用技術方向的研究
1671-4598(2017)08-0199-04
10.16526/j.cnki.11-4762/tp.2017.08.051
TP273
A