李遂賢 張曉


【關鍵詞】STK(Satellite Tool Kit) 軟件二次開發 衛星可見分析 姿態仿真
1 引言
在開發衛星在軌仿真的軟件項目時,開發團隊不僅要對衛星本身作詳盡仿真,而且需要完整地掌握航天領域的其它高級專業知識和天體運動的理論知識,同時在軟件可視化仿真方面也面臨著巨大的挑戰。STK的全稱是Satellite Tool Kit(衛星仿真工具包),是由美國AGI公司開發,是航空航天領域一個功能強大的大型仿真平臺,并且隨著其版本變化其功能得到不斷地增強和擴展。目前為止,STK航天工業領域中仍然是處于領先地位衛星系統分析軟件,利用它可以快速方便地分析航天任務中各種錯綜復雜的情況,并能以形象直觀的三維場景真實地再現空間目標整個壽命周期的運行情況。但STK軟件自成體系,和其它軟件交互數據、軟件界面的靈活性往往不能適合項目需求。
從國內近年發表的航空航天領域關于STK二次開發仿真軟件設計的文獻看,多注重于STK功能實現本身,關于二次開發軟件設計實現的內容較少,并且局限于VC6.0和Matlab開發環境,雖然可以查閱STK的英文幫助文檔,但難以在短時間對STK的二次開發有較為全面的理解和快速高效開發。
在自主開發的軟件中嵌入STK,把STK作為衛星在軌仿真的計算引擎和三維可視化引擎,是一個可行的技術途徑。本文以介紹VS2008為開發平臺,介紹利用STK二次開發實現衛星在軌可視化仿真軟件的實現方法,在此基礎上,給出了在軌衛星的可見性分析和姿態仿真的軟件設計方法和仿真軟件的運行結果。
2 STK二次開發仿真技術基礎
2.1 通過STK二次開發實現仿真任務的技術選用
通過STK可以實現的任務可以分為五類,分別為自動化重復性任務、和其它程序集成、擴展AGI插件和用戶接口定制、開發定制應用程序、實時數據處理。
2.1.1 實現自動化重復性任務
可以利用HTML、Connect和STK Object建立鏈接STK功能組件的工具,或者用遠程工具驅動STK,如按鈕工具、COM接口、命令行或批處理文件向STK發送Connect命令也可實現自動化重復性任務。
2.1.2 和其它應用程序集成
STK和其它程序的接口有多種形式可供選擇,具體接口形式的選擇取決于任務的類型。任務涉及僅僅是分析,還是既涉及分析又涉及可視化,抑或是可視化回放,可選用的客戶端程序不同。客戶端應用程序幾種具體形式為:MATLAB, 自定義程序, MS Office,瀏覽器等,STK系統內部預置有用戶采用的開發環境所必備的程序接口,如STK MATLAB接口、COM接口、視景控件(the Viewer Control)和視景應用對象模型(Viewer Application object models),以及數量眾多的不同的Connect庫等。
2.1.3 擴展AGI插件擴展和用戶接口定制
AGI在產品擴展上為用戶提供了多種途徑。可擴展機制可以分劃分為兩個方面:用戶接口可擴展和計算引擎可擴展。用戶接口可擴展指的是允許用戶為STK定制圖形用戶界面(GUI)和控件,提供用戶自定義的工作流程,從而使程序綁定STK程序的功能;計算引擎可擴展性選項是指STK引擎插件允許用戶僅定制模型中非通用部分,而對通用部分則借力于現成商務軟件(COTS software),即STK本身。
插件的優點至少包含兩方面內容。首先,寫一個高可信度的軟件組件對大多數用戶有難度。當然,最佳的情形是軟件具備高可信度模型可以使用。AGI不斷提高產品的可信度和可靠性持續改進產品,但其產品的開發基礎往往在于聚焦通用功能,從而覆蓋大多數用戶需求。就問題產生的性質來說,更高可信度模型的非通用應用功能需求,僅可能在少數高級用戶中存在。其次,總體說來,一個模型的非通用部分的范圍很窄,因而大部分可以利用現有的通用模型。當然,如果定制軟件部分的價格同時也包含了所有通用部分的費用,用戶可以自己開發整個軟件,但必須經過不斷地測試、維護、改進和升級才能滿足變化的需求。
2.1.4 開發定制程序
STK引擎可以為用戶開發定制程序使用,STK用戶界面不需要出現,允許用戶使用自己的接口將STK功能嵌入到程序中。
2.1.5 RT3數據實時處理
STK桌面應用和STK引擎定制程序的一個共性任務是對實時處理輸入的數據。AGI公司的RT3擴展軟件為向STK輸入實時數據的輸入提供了框架。為簡化實時輸入數據的處理,可用直接使用STK對象模型(STK Object Model)。
RT3開發SDK包括應用編程接口API、文檔,以及一套例子代碼文件。RT3 SDK可通過自定義數據輸入接口增強RT3拓展軟件的功能,使數據處理專業化,并可預先設置顯示參數。RT3 SDK還能用來分析和處理STK引擎程序以及來自AGI公司的軟件部件產品線的類庫的輸入數據。在用戶開發的程序中使用RT3需要購買用戶許可證書。如果已經安裝了RT3,RT3 SDK可從這里看到:Start > Programs > AGI > RT3。
2.2 利用STK引擎開發應用軟件
STK為開發各種應用軟件提供了兩類核心庫,分別是STK Object Model和Connect。通過這兩個核心庫,可以在用戶自己開發的軟件中改變STK場景和參數配置。由于兩者在基于STK二次開發軟件中涉及的最多,下面分別對兩者作簡要介紹。
2.2.1 使用STK Object Model核心庫
STK對象模型(STK Object Model)是一個COM庫集,包括STK Objects、STK X、STK Util,、STK ESRI Display、STK Vector Geometry Tool、和STK Astrogator等COM庫,涵蓋數據類型、接口、事件和表示各種STK應用程序結構的類。通過這些類庫,使得開發基于STK和STK引擎定制程序變得簡而易行。各種組件提供的開發工具對STK對象實現自動化控制,并在整個生命周期內實現對STK對象的管理,通過數據提供工具(data provider),執行可見性和覆蓋計算,并對STK發出的事件做出響應。由于STK Object Model是建立在微軟組建對象(COM)技術之上的,因此STK Object Model可用于支持COM標準的任何自動化程序開發環境。常見的開發環境包括inc .Net (Visual Basic, Visual C#, etc.), Java, Visual C++, PowerPoint, Excel, Access,以及支持COM后綁定的腳本語言。在STK桌面應用程序和對STK X作為引擎的兩種情況下,均可使用STK對象模型。
2.2.2 使用Connect核心庫
Connect 模塊為CS模式連接STK提供一個簡單的途徑。用第三方程序調用Connect核心庫的函數、常量和各種消息,可建立和STK的通信連接。Connect允許重寫標準消息和通知,用自己的消息格式實現和第三方軟件的兼容,所以利用Connect對STK實現二次開發的程序有很好的消息環境。
在實時性上,通過Connect實現STK和3D圖形通信,可實現事件的可視化實時仿真實現。舉例來說,用Connect在發射和早期軌道階段可注入實時的遙測數據,在2D和3D場景中可以對該任務實現可視化實時化仿真,協助任務執行人員理解和解決在發射階段可能發生的問題。
2.3 STK Connect模塊的使用
由于Connect提供了外部控件和STK交互的機制,在航天仿真應用程序的開發中應用很廣。在外部調用STK的應用程序中,其工作機制的要點在于:在外部程序中向STK發送Connect命令實現和STK的交互。通過外部程序或者HTML網頁發送Connect命令和STK交互,可采用兩種方式:其一,通過TP/ICP鏈接經指定端口發送Connect命令,STK默認的端口為5001,當然通過Edit->Preferences菜單可修改Connect的默認參數;其二,通過COM接口向STK發送命令,這種情況下不必通過通信網絡端口實現。需要注意的是,COM無法支持異步Connect命令。
在STK9.X中,在相應的安裝目錄下,有支持多種語言開發環境的例程可供參考,這些例程已經完成了外部程序對STK二次開發的軟件環境的搭建。開發者在基本例程框架的基礎上,可實現基于STK二次開發的對仿真軟件實現。支持STK9.X二次開發的環境有C++/C++CLI/CSharp/HTML/Java/Matlab/ PowerPoint/Vb.net,在STK系統安裝文件夾下,分別由這幾種語言下的二次開發例程。其中,CSharp/java/Matlab的例程較多,對CSharp而言,VS2008下有24個例程,涉及到航空航天仿真的許多方面,從簡單易行角度這幾種語言不失為首選。但C++語言的實時性最好,結合文件夾下部署的例程和豐富的Connect Api,可以開發出功能強大的航空航天仿真應用軟件。
3 基于VS2008/MFC平臺的STK二次開發
3.1 仿真軟件實現
在VS2008/MFC平臺下進行STK二次開發的開發步驟為:開發環境搭建、用戶界面設計、通過MFC用戶界面發送Connect接口指令驅動STK引擎、將STK計算結果和仿真可視化結果在用戶界面展示和結果文件存盤等,本文結合STK的給定的例程說明。
3.1.1 開發環境搭建
STK9.X的C++例程是基于MFC的對話框程序,在該MFC例程框架下,已經完成了STK系統的2D和VO控件的添加以及和STK引擎交互的支撐文件的配置。在例程的工程文件中,包含了通過MFC和STK交互的基本文件和函數。具體可仔細研究閱讀程序代碼。
3.1.2 用戶界面設計
在例程的MFC對話框界面中,已經具備了少量功能簡單的控件和STK的二維地圖和三維地球控件,利用MFC完備的功能通過各種控件的綜合設計,可達到符合設計要求的結果。圖1為本文在軌衛星可見分析和姿態仿真的界面設計,圖2為衛星和仿真場景參數輸入界面,圖3為地面觀測目標參數的錄入界面。
3.1.3 Connect接口指令發送驅動軟件運行
在MFC平臺下向STK發送命令的函數為:m_VOControl.GetApplication().ExecuteCommand("Connect_Command"),其中m_VOControl為三維地球可視控件變量,所有Connect命令均通過該方法發送至STK引擎,“Connect_Command”指Connect命令,可通過SDK獲得,并以符合系統要求的格式作為發送的命令字符串。STK在接到Connect命令后,執行相應的計算并將計算結果返回或者生成結果報告存盤;同時在2D和VO空間中進行二維和三維可視化仿真顯示。
3.2 軟件運行結果
圖4給出了在VS2008下利用MFC開發的在軌衛星的可見性分析和姿態仿真仿真軟件的運行結果;圖5為條帶目標下,在軌衛星的可見弧段的可視化顯示結果;圖6為在軌衛星仿真的姿態計算結果。同時,該軟件還可仿真結果輸出為文本文件存入磁盤,以備后續的仿真讀取。
4 結論和展望
通過對在軌衛星的可見性和姿態仿真軟件的開發可以看出,在熟悉MFC程序框架、STK Connect接口指令系統和STK的專業仿真功能的基礎上,在微軟
公司的VS2008平臺下對STK進行二次開發可完成較為復雜的航空航天仿真任務。后續的衛星在軌軟件研制中,將對RT3實時數據仿真方法進行研究,以適應遙測數據作為衛星在軌仿真輸入下的實時數據處理情形。
參考文獻
[1]丁王達,邱曉剛,黃柯棣.基于STK-RTI中間件的天地一體作戰建模仿真研究[J].系統仿真學報,2005,17(02).
[2] 郭偉民,趙新國,曹延華.基于STK的微小衛星姿態控制可視化演示與驗證[J].系統仿真學報,2008,20(z1).
[3]屈亭,皮亦鳴,曹宗杰.基于STK/Matlab的GPS衛星可見性仿真分析[J].科學技術與工程,2009,9(13).
[4]杜耀珂.基于STK的衛星實時視景仿真系統設計[J].空間控制技術與應用,2009,35(02).
[5]胡偉.基于STK二次開發的全球導航星座部署研究[J].系統仿真學報,2008,20(23).
[6]李峰,彭會湘,王京京.基于STK的衛星入軌主動段仿真顯示設計[J].計算機與網絡,2013,39(02).
[7]李峰,齊志國,王永安.設計模式在STK二次開發接口封裝中的應用[J].計算機與網絡,2013,39(03).
[8]張智海,廖學軍,高永明.基于HLA與STK的空間軌道快速攔截模型設計與仿真[J].系統仿真學報,2013,25(10).
[9]杜寧,周連文,季誠勝等.熒火一號火星探測器姿控平臺驗證演示技術[J].上海航天,2013,30(4).
[10]STK Software Development Kit,AGI,www.agi.co.