朱利偉,李宇波,李輝芬,黃 瓊,孫 楠
(中國衛(wèi)星海上測控部,江蘇江陰 214431)
在進行航天測量船海上測控工況設計時,傳統(tǒng)的工況設計軟件計算結果不夠形象直觀,且程序版本和計算精度也不完全統(tǒng)一,不便于互相驗證。為滿足后續(xù)試驗任務需求,有必要研制一套試驗任務模擬演示驗證系統(tǒng),使用戶能夠對航天器的飛行狀態(tài)和測量船執(zhí)行任務的場景有直觀全面的了解,為決策指揮提供一定程度的可視化支持,為型號總體人員提供驗證海上測控方案正確與否的平臺,尤其可以對應急工況的設計提供及時準確的仿真驗證手段。
試驗任務模擬演示驗證系統(tǒng)包括試驗任務工況設計軟件和模擬演示驗證系統(tǒng)2個部分。其中試驗任務工況設計軟件用于進行海上測控任務的工況設計,并以數(shù)據(jù)文件的形式輸出設計結果。模擬演示驗證系統(tǒng)采用基于衛(wèi)生工具包軟件(Satellite Tool Kit,STK)的可視化平臺實現(xiàn)進行設計開發(fā),用于仿真驗證工況設計結果并向用戶提供試驗任務過程的可視化支持。
模擬演示驗證系統(tǒng)利用STK軟件的STK/X嵌入式軟件開發(fā)技術實現(xiàn)。STK是美國分析圖形有限公司(Analytical Graphics Inc.,AGI)開發(fā)的航天領域中的商品化的衛(wèi)星系統(tǒng)仿真分析軟件[1,2]。STK/X是AGI公司使用4DX嵌入技術生成的STK整合模塊?;贠penGL技術的三維可視化技術,可以逼真地再現(xiàn)空間視景環(huán)境、飛行器飛行姿態(tài)和關鍵動作等。
使用STK/X技術嵌入到程序中進行開發(fā)設計,需要掌握大量的STK Command操作命令接口,這為基于STX/X的程序開發(fā)帶來很大的困難。鑒于此,提出了開發(fā)STK/X操作驅動引擎的設計思路。STK/X操作驅動引擎的好處,就是它隱藏了幾乎所有復雜的STK Command操作命令,使程序開發(fā)者能夠更加專注于仿真演示驗證系統(tǒng)軟件本身的設計開發(fā)。利用STK/X操作驅動引擎方法,把模擬演示驗證軟件分為4層,如圖1所示。
圖1 程序設計分層結構
各層的主要功能及數(shù)據(jù)傳遞關系如下:
① 最底層是 STK/X嵌入控件,通過 STK Command命令接受上層輸入的指令和參數(shù),調(diào)用數(shù)據(jù)文件進行仿真演示,并可以輸出STK計算的跟蹤性能,其二維和三維窗口可以實現(xiàn)圖形的顯示與實時刷新。
②第2層是驅動引擎層,是任務開發(fā)中應用STK/X技術的核心部分。驅動引擎層向下使用STK Command命令,直接對STK控件和計算模塊進行操作控制并傳遞數(shù)據(jù);向上提供標準的程序函數(shù)接口,使得上層的其他軟件開發(fā)人員可以不去關心STK Command操作的實現(xiàn)過程,只要調(diào)用普通函數(shù)接口就可以傳遞用戶操作和數(shù)據(jù);
③第3層是數(shù)據(jù)處理層,該層的作用是銜接用戶輸入和STK驅動引擎。數(shù)據(jù)處理層接收用戶操作層獲取的操作和輸入的數(shù)據(jù),并對操作和數(shù)據(jù)進行處理和轉換,生成STK適用的指令和數(shù)據(jù)參數(shù),提供給驅動引擎層使用;
④最上層是用戶操作層,提供程序和工況設計人員的接口。該層主要通過程序界面實現(xiàn)數(shù)據(jù)輸入檢查,對輸入操作響應,并向下一層傳遞操作和參數(shù)。
模擬演示驗證系統(tǒng)軟件的分層設計把不同的功能分在不同的層次進行設計開發(fā),每一層所涉及的開發(fā)技術都不相同。
嵌入控件層的技術特點是對象嵌入式程序開發(fā),需解決STK/X控件技術。
編寫驅動引擎層需要掌握大量的STK Command操作命令,還需要建立必須的STK三維模型供STK三維窗口控件使用。操作命令可以通過STK軟件的Help文件查詢和學習掌握,該層需要解決的問題包括STK三維建模方法和STK三維模型的動作控制方法。
數(shù)據(jù)處理層實現(xiàn)工況設計用戶數(shù)據(jù)和STK數(shù)據(jù)之間的轉換。海上航天測控涉及的數(shù)據(jù)主要包括:任務總體參數(shù)、航天測量船工位參數(shù)、發(fā)射場工位參數(shù)、火箭彈道數(shù)據(jù)和衛(wèi)星軌道姿態(tài)數(shù)據(jù)等。其中火箭和衛(wèi)星的數(shù)據(jù)量大且較復雜,因此需要解決的問題包括火箭位置速度姿態(tài)的轉換和衛(wèi)星軌道姿態(tài)的轉換。
用戶操作層的主要功能是向用戶提供程序操作界面以獲取用戶輸入的數(shù)據(jù)。根據(jù)STK所提供的對外接口的特點,選擇Microsoft Visual C#進行程序界面的設計開發(fā)。該層沒有需要解決的問題。
STK/X主要使用AGI Map Control和AGI Globe Control 2個控件實現(xiàn)二維和三維界面的顯示和刷新,使用AgSTKXApplication完成在整個應用程序生命周期對STK對象的管理和調(diào)度[3]。應用STK/X控件技術,用戶可以根據(jù)需要開發(fā)獨立的視景系統(tǒng),實現(xiàn)在不打開STK主程序的情況下使用STK的演示界面和計算函數(shù)庫,這使得開發(fā)模擬演示驗證部分的軟件成為可能。
STK演示界面最基本的對象是STK三維模型。要實現(xiàn)對STK對象的操作,首先就要建立STK模型。由于STK所使用的模型無法通過三維建模軟件直接建模,需要采用不同的方法間接獲得STK模型。
STK模型文件采用.mdl格式,是一種利用文本描述語言定義的模型格式,易于學習和應用。但由于文本編寫模型工作量大、效果不直觀等原因,很難使用文本工具直接編寫出復雜的STK三維模型。因此,需要采用其他三維模型軟件建立三維模型,再通過工具軟件轉換成為STK支持的.mdl模型格式。AGI公司官方發(fā)布的LwCoventer軟件可以把使用LightWave 軟件[4,5]建立的三維模型(.lwo 格式)直接轉換成.mdl模型使用。如果用其他三維軟件建立三維模型,可以考慮先用Deep Exploration軟件把三維模型轉換為.lwo格式,再用LwCoventer轉換為STK的.mdl格式。
對于三維建模軟件不方便建立的模型信息,可以考慮先把模型轉換成.mdl格式后再用文本工具單獨編輯該部分。
在STK控件提供的場景中使用三維模型可以實現(xiàn)三維對象飛行動作的仿真演示,這就是STK的三維模型控制技術。
由于STK三維模型使用的是文本描述語言,可以在語言中直接描述三維模型各部分之間的相對動作以及模型本身相對三維空間的平移、縮放和旋轉等動作。實現(xiàn)該功能需要編寫.**ma格式的動作操作文件(火箭動作文件格式.lvma,衛(wèi)星動作文件格式.sama)。該功能的實現(xiàn)過程為:用戶輸入三維對象的動作及時間節(jié)點(如輸入在120 s衛(wèi)星太陽帆板開始展開);數(shù)據(jù)處理層把該輸入轉換為驅動引擎層需要的輸入數(shù)據(jù)并通過函數(shù)接口傳遞給驅動引擎層;驅動引擎層編寫.**ma動作文件,并通過STK Command命令使STK加載該文件,實現(xiàn)三維模型的動作過程。
在試驗任務中彈道文件提供了火箭在發(fā)射坐標系中的位置(x、y、z)和速度 (Vx、Vy、Vz),需要把它轉換到STK所需的地心固連系的位置速度,并編寫STK彈道(STK數(shù)據(jù)文件,.e格式)?;鸺诎l(fā)射坐標系的位置轉換為地心固連系的位置可采用先旋轉、再平移的方法。根據(jù)發(fā)射方位角把火箭在發(fā)射坐標系的坐標轉換到測量坐標系,再根據(jù)發(fā)射點的經(jīng)緯度從測量坐標系轉換到地心固連系;將坐標系原點從發(fā)射點平移至地心。發(fā)射點的經(jīng)度、緯度、高程(L、B、H)[6,7]轉換為地心固連系公式如下:
彈道文件還提供了發(fā)射坐標系的火箭姿態(tài)數(shù)據(jù),可以采用以下3種方法轉換成STK姿態(tài)文件:
①可以把火箭軌道參數(shù)中給出的火箭相對發(fā)射坐標系俯仰、偏航和滾轉角轉換到地固系。轉換后的表示形式可以用四元素或者歐拉角表示;
②可以把火箭軌道參數(shù)中給出的火箭的攻角和側滑角轉換為地固系中的火箭姿態(tài),這種方法計算簡便,但由于文件中沒有給出火箭滾動的數(shù)據(jù)信息,此方法計算的火箭姿態(tài)不能顯示滾動情況;
③在發(fā)射工位建立發(fā)射坐標系,可以利用直接編寫.a格式的發(fā)射系火箭姿態(tài)文件。
利用STKCommand命令載入彈道和姿態(tài)文件,可實現(xiàn)火箭在STK場景里的飛行仿真。
目前任務中衛(wèi)星的軌道一般以軌道六要素的形式給出。STK可以直接接受軌道六要素的輸入,仿真生成衛(wèi)星軌道。因此,可以直接在驅動引擎層編寫輸入衛(wèi)星軌道的STK Command命令實現(xiàn)衛(wèi)星軌道的仿真。
對于衛(wèi)星姿態(tài),目前的總體文件中沒有給出詳細的數(shù)據(jù)供使用。因此,需要通過仿真獲取衛(wèi)星的姿態(tài)數(shù)據(jù),生成衛(wèi)星姿態(tài)數(shù)據(jù)文件,再通過驅動引擎層加載姿態(tài)文件實現(xiàn)衛(wèi)星姿態(tài)仿真演示。
衛(wèi)星姿態(tài)文件的數(shù)據(jù)以姿態(tài)角的格式給出,當取313轉序[8]時的計算方法如下:
式中,θx為313 轉序下的 3 個歐拉角;ωx、ωy、ωz為衛(wèi)星繞3軸轉動的角速度。
衛(wèi)星建立對日定向姿態(tài)的判斷可以通過衛(wèi)星太陽帆板的法向和衛(wèi)星對太陽矢量的夾角來實現(xiàn),當2個矢量夾角為0°(方向重合)時即實現(xiàn)對日定向。設太陽在慣性系中的矢量為,衛(wèi)星太陽帆板法向在體坐標系的向量為[ ]= 0 0 1T,如采用式(3)中的313轉序歐拉角,則轉化為地心慣性系公式為:
計算二者夾角余弦值Cz,sun為:
當Cz,sun=-1時,表示衛(wèi)星-Z軸對準太陽。
用以上方法仿真計算某衛(wèi)星入軌后建立對日定向姿態(tài)的過程,衛(wèi)星體坐標系z軸與太陽的方向夾角余弦隨時間的變化關系如圖2所示。
圖2 衛(wèi)星入軌后z軸與太陽方向關系
試驗任務模擬演示驗證系統(tǒng)的實現(xiàn),使工況設計擁有了形象化手段和演示驗證工具,能夠為決策指揮提供一定程度的可視化支持,在海上航天測控任務中具有重要的應用價值。同時,基于驅動引擎的分層設計思想為其他項目的開發(fā)也具有很好的借鑒意義?!?/p>
[1]黃 潔.VC和STK集成的途徑及其在仿真中的應用[J].計算機仿真,2007(24):291 -294.
[2]STK User's Manual Version 4.2.1.Analytical Graphics INC(AGI)[S],2000.
[3]Analytical Graphics Inc.STK/X Help.U.S.A.,Analytical Graphics Inc.[S],2004.
[4]黃 劍.Light Wave7.5高級實例教程[M].北京:中國電力出版社,2003.
[5]劉光明.基于多種軟件平臺的衛(wèi)星動力學仿真研究[J].系統(tǒng)仿真學報,2007(19):308 -311.
[6]孔祥元.大地測量學基礎[M].武漢:武漢大學出版社,2006.
[7]邊少鋒.大地坐標系與大地基準[M].北京:國防工業(yè)出版社,2005.
[8]章仁為.衛(wèi)星軌道姿態(tài)動力學與控制[M].北京:北京航空航天大學出版社,1998.