苗繼松,邵瓊玲,任 元,呂永申,王 琛
(裝備學(xué)院 航天裝備系,北京 101416 )
MATLAB/STK聯(lián)合仿真方法研究及GUI設(shè)計
苗繼松,邵瓊玲,任 元,呂永申,王 琛
(裝備學(xué)院 航天裝備系,北京 101416 )
詳細介紹了MATAB(矩陣實驗室)與STK(衛(wèi)星工具箱)軟件互聯(lián)的方法;STK提供了相應(yīng)的二次開發(fā)接口,可供MATLAB等軟件進行二次開發(fā);利用MATLAB和STK軟件組合搭建仿真環(huán)境,以某Walker星座的設(shè)計與優(yōu)化算法為例,具體介紹了聯(lián)合仿真步驟流程及GUI界面的設(shè)計方法,并綜合考慮了衛(wèi)星軌道、傳感器以及衛(wèi)星編隊等相關(guān)參數(shù)對星座最優(yōu)設(shè)計的影響;結(jié)果表明,利用MATLAB和STK組合仿真能夠以圖像及數(shù)據(jù)列表的形式方便直觀的給出最優(yōu)結(jié)果,通過聯(lián)合仿真,較大程度上減小了MATLAB的編程工作量,同時通過GUI界面的設(shè)計,以可視化的形式對主體程序進行集成,只需輸入?yún)?shù),便可快速進行相應(yīng)的軌道仿真與數(shù)據(jù)輸出,避免了在進行衛(wèi)星星座設(shè)計時需反復(fù)對STK參數(shù)進行調(diào)整的工作;在對衛(wèi)星星座設(shè)計與運行軌道的問題分析中,MATLAB/STK聯(lián)合仿真相較于使用單一軟件進行問題分析而言,要更加便利、形象直觀。
矩陣實驗室;衛(wèi)星工具箱;聯(lián)合仿真;GUI界面設(shè)計;星座優(yōu)化
MATLAB是由“matrix”與“l(fā)aboratory”組合的簡寫,意為矩陣實驗室(矩陣工廠),其是由美國mathworks公司發(fā)布的主要面向科學(xué)計算與數(shù)值仿真、可視化以及交互式程序設(shè)計的高科技計算軟件[1]。MATLAB的基本單元是矩陣,基本功能是能夠進行矩陣計算、創(chuàng)建用戶界面、繪制函數(shù)和數(shù)據(jù)曲線以及對其他編程語言的程序進行連接等,可廣泛應(yīng)用于控制設(shè)計、工程計算、信號檢測、信號通訊、圖像處理及金融建模設(shè)計與分析等領(lǐng)域。它將數(shù)據(jù)可視化以及非線性動態(tài)系統(tǒng)的建模與仿真等諸多強大功能集成于一個易使用的視窗環(huán)境中,為很多科學(xué)領(lǐng)域提供了一種較為全面的解決方案,并在較大程度上摒棄了傳統(tǒng)的非交互式程序語言(如C、Fortran、C++、JAVA等)的編輯模式。MATLAB的指令寫法與實際數(shù)學(xué)和工程中常用的形式十分相近,故對同樣一件事情來說,相對于用C,F(xiàn)ORTRAN等語言完成,用MATLAB來解算問題要簡便許多。同時,MATLAB也對像Maple等軟件的優(yōu)點進行了吸收,使其成為一款功能強大的數(shù)學(xué)軟件[2]。
衛(wèi)星星座設(shè)計最常用的仿真軟件是STK(衛(wèi)星工具箱),其是一款由美國Analytical Graphics公司開發(fā)的在航天領(lǐng)域中一直處于領(lǐng)先地位的商品化分析軟件[3]。它能夠?qū)教烊蝿?wù)周期的全過程提供支持,主要包括概念設(shè)計、需求分析、運行測試和任務(wù)發(fā)射等應(yīng)用[4]。STK可以對航空航天和防御等任務(wù)進行支援,利用它可以快速分析復(fù)雜空間環(huán)境,并可獲得易于理解的圖表和文本形式的分析結(jié)果,從而方便確定最佳問題解決方案。STK不但具有強大的數(shù)據(jù)仿真功能,還具有功能性較強的三維可視化模塊,可對三維模型進行編輯[5],從而可以為STK和其它附加模塊提供逼真的三維視景顯示。在STK中通過設(shè)定預(yù)設(shè)場景,并對衛(wèi)星等模型進行添加,并設(shè)定對應(yīng)參數(shù),就能夠?qū)πl(wèi)星運行的二維和三維視景進行仿真實現(xiàn)。目前,STK最高版本為11.0,并由之前的Satellite Tool Kit更名為Systems Tool Kit,體現(xiàn)了其功能由衛(wèi)星等對象拓展到了整個系統(tǒng)。由于美國自7.0版本開始就對中國實行禁運,目前STK國內(nèi)可購買到的最高商業(yè)版本是 6.0版本。
雖然STK有效解決了三維視景顯示問題,但在衛(wèi)星的運行過程中,如果需要對衛(wèi)星的相應(yīng)參數(shù)進行改變,就需要停止仿真,重新按照相應(yīng)流程一步步設(shè)定相關(guān)參數(shù),從而不能實現(xiàn)對整個視景系統(tǒng)進行自動且連續(xù)地運行仿真。本文結(jié)合MATLAB和STK兩個軟件各自的優(yōu)點,利用STK提供MATLAB接口模塊[6],通過使用MATLAB進行相關(guān)數(shù)據(jù)處理,并給STK發(fā)送相關(guān)的控制指令控制STK的運行,使仿真系統(tǒng)按照MATLAB預(yù)先設(shè)定的程序運行,從而大大增強了衛(wèi)星視景仿真的靈活性和可操作性[7]。本文以實際應(yīng)用為背景,結(jié)合某Walker星座的設(shè)計與優(yōu)化問題,對其分析過程以及相應(yīng)的編程和GUI界面設(shè)計給出了詳細的闡述與說明。
在STK與MATLAB進行聯(lián)合仿真分析之前,需要對相關(guān)的環(huán)境進行配置。具體的配置過程會因為STK與MATLAB不同的安裝順序而有所不同[8]。下面進行具體介紹:
如果用戶的計算機中先安裝了MATLAB,然后才安裝STK軟件,則STK會自動地配置好相關(guān)的初始化文件。用戶只需要對MATLAB進行一定的設(shè)置就可以了。具體步驟如下:
1)分別啟動STK和MATLAB;
2)在MATLAB中運行M文件stkinit,由于是首次運行,MATLAB會要求用戶設(shè)置STK的運行環(huán)境;
3)在彈出的“STK/MATLAB接口配置”對話框中,選擇“繼續(xù)”按鈕;
4)在彈出的“瀏覽文件夾”對話框中,選擇STK安裝目錄下的“MATLAB”文件夾,從而確定所需M文件的位置;
5)之后,MATLAB將會打開另一個“瀏覽文件夾”對話框,要求選擇Mex文件位置,和步驟4)一樣,在STK安裝目錄下選擇“bin”文件夾,并單擊確定;
6)在之后MATLAB詢問是否更改默認(rèn)MexConnect連接配置、STK/Connect模塊的初始化文件、STK的默認(rèn)主目錄時,全部選擇“否”便可;
到這里,先進行MATLAB安裝后進行STK安裝的STK/MATLAB聯(lián)合仿真環(huán)境就配置成功了。
如果計算機中先安裝了STK,而后才安裝MATLAB,則除了要在MATLAB中進行STK的運行設(shè)置外,還要再對一些初始化文件進行相關(guān)設(shè)置。對該情況下MATLAB/STK聯(lián)合仿真環(huán)境進行配置的主要步驟是:將STK安裝目錄里的“MATLAB;ToolboxLocal”文件夾中的“agiCleanPath.m”、“agiInit.m”和“stkInit.m”文件復(fù)制到MATLAB安裝目錄下的“Toolbox;Local”文件夾中,其余步驟按照1.1節(jié)中的內(nèi)容進行相應(yīng)設(shè)置便可。
在STK/MATLAB聯(lián)合仿真環(huán)境配置成功后,有MATLAB主動和被動兩種運行方式。
1)MATLAB主動方式:分別啟動STK和MATLAB,在MATLAB中運行M文件stkinit,然后開始STK和MATLAB的協(xié)同工作。在該模式下能夠充分利用MATLAB的各種輔助工具,便于進行相應(yīng)的設(shè)計工作;
2)MATLAB被動方式:先啟動STK,然后選擇“工具”,打開STK的“選項”對話框后,選中里面的“MATLAB選項卡”,單擊“連接”按鈕,STK就會立即啟動MATLAB引擎。在該模式下,這兩個程序的運行效率可以顯著提高。
在配置MATLAB/STK的連接環(huán)境完成后,便可進行下一步的MATLAB/STK聯(lián)合仿真應(yīng)用。下面以某一簡單案例,詳細介紹使用MATLAB/STK聯(lián)合仿真方式對星座軌道參數(shù)進行優(yōu)化設(shè)計的完整分析過程。
1)問題陳述:在星座設(shè)計與優(yōu)化中,設(shè)計18顆衛(wèi)星的Walker星座,確定對北緯45°,經(jīng)度為33°的地面站進行訪問的最大、最小時間以及對應(yīng)的具體軌道設(shè)計參數(shù)。
2)限定條件:衛(wèi)星高度1 000 km;傳感器視場角110°,固定指向天底;星座的RAAN spread為360°,相位因子為2;軌道面數(shù)在3~9之間,軌道傾角在35~55之間。
1)MATLAB與STK接口互聯(lián)并調(diào)試;
2)用MATLAB進行具體星座及載荷的設(shè)定與編程。包括場景設(shè)置與命名、衛(wèi)星運行時間設(shè)定、星上相關(guān)載荷的設(shè)定、軌道坐標(biāo)系及軌道根數(shù)的確定等[9];
3)聯(lián)合仿真程序?qū)?yīng)的GUI界面設(shè)計。通過MATLAB提供的可視化面向?qū)ο蟮挠脩艚缑骈_發(fā)環(huán)境進行GUI應(yīng)用程序的創(chuàng)建。在GUI界面中通過輸入相關(guān)仿真參數(shù),便可對比不同軌道傾角、不同軌道面數(shù)時衛(wèi)星訪問地面站的時間,從而確定出最優(yōu)設(shè)計參數(shù),并通過GUI界面進行顯示??傮w的流程如圖1所示。
圖1 MATLAB/STK聯(lián)合仿真流程圖
程序主要由兩大部分組成:一個是主程序zhu.m(同時伴隨一個GUI界面文件zhun.fig);另一個是運算程序hanshu.m。
主程序的主要功能是從GUI界面獲取輸入的參數(shù),并將其傳遞給運算程序,經(jīng)運算程序運算后,主程序?qū)⒌玫降姆祷貐?shù)用2D和3D圖像顯示,同時顯示最終運算結(jié)果界面。最終結(jié)果包括在給定具體地面站的經(jīng)緯度后,給出不同類型的Walker星座對該地面站最大訪問時間、最小訪問時間和平均訪問時間,并同時給出訪問時間最大時對應(yīng)的Walker星座的軌道面數(shù)和軌道傾角。
由上述分析可知,運算程序是一個具有多輸入多輸出的功能函數(shù)。
主程序需要實現(xiàn)的功能是讀取輸入?yún)?shù)并傳給運算程序,同時讀取運算程序的返回參數(shù)并用界面顯示。衛(wèi)星的設(shè)計約束具體已知,由于衛(wèi)星星座總星數(shù)為18顆,從而可以確定出設(shè)計變量中的軌道面數(shù)為3個具體值3、6、9。以上這些數(shù)據(jù)可以在程序中具體確定,但唯一不確定的是軌道傾角,因為軌道傾角只給出了范圍,可能的數(shù)值有無窮多個,故這里還需要另外確定一個變量,這個變量就是步長,所以在GUI界面中,必須具有步長輸入框。
為了及時方便得知計算的總次數(shù)以及程序在整個運算中具體到哪一步,可通過編程將該信息顯示在MATLAB命令執(zhí)行框中;同時為了實現(xiàn)將該程序生成計算機的可執(zhí)行文件等后續(xù)工作,必須將STK初始化命令stkinit封裝在主程序中[10];為了使MATLAB執(zhí)行框中只顯示關(guān)鍵信息,故需要用clc語句將在顯示結(jié)果之前出現(xiàn)的內(nèi)容進行清除,從而使界面顯得更加干凈整潔,使軟件系統(tǒng)更加人性化。
運算程序最先的工作就是從主程序中獲取相應(yīng)參數(shù),然后進行場景創(chuàng)建、地面站創(chuàng)建、衛(wèi)星創(chuàng)建、傳感器創(chuàng)建、視場角參數(shù)設(shè)置、walker星座的創(chuàng)建以及鏈路和集群的創(chuàng)建等,之后進行仿真分析、存儲相應(yīng)數(shù)據(jù)并作圖。將每次運算的訪問時間結(jié)果存儲在一個變量中構(gòu)成結(jié)果矩陣,之后進行相應(yīng)的結(jié)果處理。求取的最大訪問時間、最小訪問時間、平均訪問時間,即為求取結(jié)果矩陣中的最大值、最小值和所有數(shù)據(jù)的平均值。根據(jù)最大值所對應(yīng)結(jié)果矩陣中的行和列,即可判斷出其所對應(yīng)的軌道面數(shù)和軌道傾角的具體值,從而將這些參數(shù)返回給主程序進行顯示。
根據(jù)問題描述,具體程序設(shè)計如下:
將程序的輸入設(shè)為a(所需計算軌道傾角范圍最小值)、b(所需計算軌道傾角范圍最大值)、c(計算軌道傾角的步長)、d(地面站經(jīng)度)、f(地面站緯度)5個變量。根據(jù)軌道平面的不同和軌道傾角的不同進行兩層嵌套循環(huán)。在每次循環(huán)中,需要進行相應(yīng)內(nèi)容的創(chuàng)建:首先,創(chuàng)建一個場景,并設(shè)置場景時間(起始時間和結(jié)束時間,這里設(shè)為1天);而后創(chuàng)建一個地面站和一顆種子衛(wèi)星,并在衛(wèi)星上裝載一個傳感器,并設(shè)置傳感器參數(shù),定義傳感器為簡單錐角,錐角為55°,指向天底;然后設(shè)置衛(wèi)星軌道參數(shù),設(shè)置半長軸為7 278 km,偏心率為0,近地點幅角為0,平近點角為0。由于設(shè)置的時間為24 h,即86 400 s,故訪問時間最大不超過86 400 s。在每次循環(huán)中,分別對種子衛(wèi)星,星座類型,軌道平面數(shù),每個平面衛(wèi)星數(shù),相位因子進行設(shè)置,并建立walker星座。而后建立一個星座集合并命名,建立一個傳感器集合并命名為family2,建立一個連接于傳感器集合和地面站之間的鏈路并進行命名。通過函數(shù)stkReport返回訪問時間并形成矩陣,將矩陣命名為Total。計算并輸出最大訪問時間h,最小訪問時間l,平均訪問時間e。最后建立軌道平面,并將最終得到的軌道傾角和訪問時間用2D和3D的圖形展現(xiàn)出來。
在完成MATLAB與STK的連接后,便可在MATLAB中通過編程自行完成對STK中相應(yīng)場景、地面站等對象內(nèi)容的創(chuàng)建以及各個對象相應(yīng)參數(shù)的設(shè)置和計算等。根據(jù)實際問題的需要,相應(yīng)的MATLAB對STK的控制語句可以使用STK軟件中的Help進行查詢。依照本問題所需內(nèi)容,在STK中查詢相應(yīng)語句如下:
1) 在stk中創(chuàng)建一個場景,命名為home,程序語句為stkNewObj('/','Scenario','home')。
2) 設(shè)置場景時間,起始時間為19 June 2016,結(jié)束時間為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) 根據(jù)輸入的經(jīng)緯度設(shè)置地面站位置,程序語句為stkSetFacPosLLA('Scenario/Lch/Facility/target', [latitude*pi/180; longitude*pi/180; 0])。
5) 在stk中建立一個衛(wèi)星,命名為body,程序語句為stkNewObj('*/','Satellite','body')。
6) 在衛(wèi)星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) 創(chuàng)建walker星座,并創(chuàng)建集群命名為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')
確定地面站的經(jīng)度為33°,緯度為45°,GUI界面輸入及仿真結(jié)果如圖2~圖7所示。
圖2 GUI輸入?yún)?shù)圖
圖3 18顆衛(wèi)星的Walker星座二維圖
圖4 18顆衛(wèi)星的Walker星座三維圖
圖5 軌道面、軌道傾角與訪問時間關(guān)系圖
圖6 總訪問時間隨軌道條件變化的3D圖
圖7 最終結(jié)果GUI顯示圖
在圖2的GUI界面中,依照1.1節(jié)中的相應(yīng)問題和限定條件,輸入軌道傾角的范圍在35~55°之間,由于在這個范圍之間,軌道傾角會有無數(shù)種選擇,為了節(jié)省運算時間,同時又不失規(guī)律性,故綜合考慮選擇了軌道傾角的計算步長為5,即選擇5組軌道傾角進行計算分析。輸入地面站的經(jīng)緯度,同時勾選2D和3D顯示效果圖,點擊“開始計算按鈕”,便會得到相應(yīng)的仿真結(jié)果,如圖2~圖7所示。
由圖5分析可得:在軌道傾角為35°,40°,45°時,軌道傾角不變,3軌道面、6軌道面和9軌道面時,由該18顆衛(wèi)星組成的walker星座對經(jīng)緯度為33°,45°的地面站在2016年6月19日~2016年6月20日這一天中的訪問總時間相差不大;當(dāng)軌道傾角為50°時,當(dāng)walker星座為3軌道面時總訪問時間最小,6軌道面比9軌道面時對應(yīng)的總訪問時間多,但相差不大;當(dāng)軌道傾角為55°時,3種軌道面對應(yīng)的總訪問時間相差較大,且總訪問時間由小到大依次為3軌道面、9軌道面和6軌道面。
此外,觀察圖5可進一步發(fā)現(xiàn),在軌道傾角為35~55°時,隨著軌道傾角的增加,walker星座的總訪問時間整體上呈現(xiàn)增加的趨勢。具體觀察還可發(fā)現(xiàn),除了6軌道面外,3軌道面和9軌道面在軌道傾角為55°時所對應(yīng)的總訪問時間達到最大,之后呈現(xiàn)隨著軌道傾角的增加總訪問時間下降的趨勢。
由圖5、圖6的含義相同,只是將圖5的內(nèi)容以三維坐標(biāo)的形式進行展現(xiàn),更加直觀。
圖7給出了最終的計算結(jié)果。在5種軌道傾角以及3種軌道面的共15種組合情況下,給出了最大訪問時間、最小訪問時間以及15種情況的平均訪問時間。同時也給出了總訪問時間最大時對應(yīng)的軌道傾角和軌道面數(shù)。
如果需要變換地面站的位置以及增加或減少計算時的軌道傾角個數(shù),可以再開始的GUI界面中進行相關(guān)參數(shù)的調(diào)整即可。
通過實際的應(yīng)用案例,表明了MATLAB與STK聯(lián)合仿真的優(yōu)越性,在對多顆衛(wèi)星組成的星座或單顆衛(wèi)星進行仿真分析中,單純借助MATLAB或STK某一種工具進行連續(xù)仿真分析時,會出現(xiàn)許多困難,具有諸多不便之處:若僅使用MATLAB進行仿真時,會出現(xiàn)編程工作量巨大的缺點;而只通過STK進行仿真時,會造成操作步驟繁瑣等現(xiàn)實問題的出現(xiàn)。如果通過MATLAB和STK進行聯(lián)合仿真,便可以極大地提高仿真效率。最后通過GUI界面的設(shè)計,使得MATLAB/STK仿真更加具有適用性。上述介紹的具體設(shè)計方法可以根據(jù)實際情況拓展至其他相應(yīng)的仿真領(lǐng)域,具有較強的適用性。
[1] 劉 浩.MATLAB R2016a完全自學(xué)一本通[M].北京:電子工業(yè)出版社,2016.
[2] 張志涌,楊祖櫻.MATLAB教程[M].北京:北京航空航天大學(xué)出版社,2015.
[3] 王 欣,金 虎. 基于STK/MATLAB的通信衛(wèi)星場景建模[J]. 電子測試,2009(04):1-5.
[4] 劉夫成,劉朝暉,劉 文,等. 基于STK/matlab的空間目標(biāo)序列星圖仿真[J]. 紅外與激光工程,2014(9):3157-3161.
[5] 杜玉萍. 基于STK/Matlab的航天器可見性仿真分析[J]. 光電技術(shù)應(yīng)用,2014(6):80-83.
[6] 王 倩,王祖林,何善寶,等. 動態(tài)星間鏈路分析及其STK/Matlab實現(xiàn)[J]. 電訊技術(shù),2010(9):19-23.
[7] 李 博,葉 暉,張宏偉,等. 基于STK/Matlab接口的衛(wèi)星通信鏈路研究[J]. 無線電通信技術(shù),2016(6):37-40.
[8] 陳宏宇,吳會英,周美江,等. 微小衛(wèi)星軌道工程應(yīng)用與STK仿真[M].北京:科學(xué)出版社,2016.
[9] 許丞梁,郭福成,劉 洋. 基于Matlab/STK的航天電子偵察效能仿真技術(shù)研究[J]. 航天電子對抗,2015(3):17-20.
[10] 李雅瓊,李 楊,關(guān)貴注,等. MATLAB與STK組合仿真在星載天線伺服系統(tǒng)設(shè)計中的應(yīng)用[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-),男,河南焦作人,碩士研究生,主要從事航天器軌道設(shè)計與應(yīng)用方向的研究。邵瓊玲(1964-),男,北京市人,副教授,碩士研究生導(dǎo)師,主要從事航天器應(yīng)用技術(shù)方向的研究
1671-4598(2017)08-0199-04
10.16526/j.cnki.11-4762/tp.2017.08.051
TP273
A