STK 航空仿真(二)STK MATLAB自动化(1)自动化目的和方法简介
1.STK自動(dòng)化的目的
STK自動(dòng)化是指使用其他軟件或者程序語(yǔ)言,直接操作STK對(duì)象和UI界面。之所以需要STK自動(dòng)化,是因?yàn)橹苯邮褂?strong>STK UI界面進(jìn)行仿真存在以下困境:
(1)通常情況下,STK航空仿真需要大量的數(shù)據(jù),例如一系列的飛機(jī)軌跡點(diǎn)等等,手動(dòng)在STK界面中輸入這些軌跡點(diǎn)比較耗時(shí)耗力。
(2)STK航空仿真大多是實(shí)時(shí)仿真,數(shù)據(jù)不是預(yù)先給定的,是由一定的算法或者其他軟件(如MATLAB)在仿真時(shí)生成的。
(3)項(xiàng)目交付時(shí),需要接收方熟練使用STK,然而對(duì)甲方爸爸提這種要求百分之百會(huì)被噴。
(4)對(duì)于大型項(xiàng)目,使用UI界面設(shè)置仿真參數(shù)很容易出錯(cuò),也難以保證操作的規(guī)范性,如果使用自動(dòng)化腳本完成仿真配置,可以保證每次配置都是一致的,減少出錯(cuò)的概率。
鑒于這些情況,通常需要定制一些接口,讓其他軟件或者程序語(yǔ)言能直接與STK進(jìn)行交互,這樣可以專心于仿真的算法設(shè)計(jì)而無(wú)需事先掌握STK的使用。
2.STK自動(dòng)方法
2.1 查閱自動(dòng)化幫助文檔
打開(kāi)STK幫助文檔可以查閱STK自動(dòng)化的幫助文檔:
?
?其中Automate Tasks一節(jié)就是STK自動(dòng)化的幫助文檔。
2.2 自動(dòng)化的方法
在幫助文檔中可以看到,STK自動(dòng)化有以下幾種方法:
(1)OLE 自動(dòng)化
OLE(Object Linking and Embedding,對(duì)象連接與嵌入),是一種面向?qū)ο蟮募夹g(shù),利用這種技術(shù)可開(kāi)發(fā)可重復(fù)使用的軟件組件(COM)。OLE從多媒體借鑒而來(lái),是Windows的一組服務(wù)功能,提供了一種以源于不同應(yīng)用軟件的信息建立復(fù)合文檔的強(qiáng)有力方法。在對(duì)象連接和嵌入系統(tǒng)中,對(duì)象可以是幾乎所有的數(shù)據(jù)類型,例如文字、點(diǎn)陣圖像和矢量圖形,甚至于聲音、注解和錄像剪輯等均可。對(duì)象被賦予了智能屬性,即參與連接和嵌人的對(duì)象本身帶有計(jì)算機(jī)指令。最典型的OLE應(yīng)用就是PowerPoint,PPT就是一種廣泛使用OLE技術(shù)的多媒體文檔,所以我們可以在PPT中直接播放音視頻。
STK的OLE自動(dòng)化支持Java,C++,Python,Matlab和Javascript等,其他軟件也可以使用OLE調(diào)用STK。
通過(guò)OLE自動(dòng)化,可以使用STK Model Object(AgSTKObjects, AgSTKGraphics, AgVGT and AgSTKUtil 和AGI.STKObjects, AGI.STKGraphics,AGI.STKVgt and AGI.STKUtil等)操作STK中的模型和工具組件,也可以使用AgUiCore庫(kù)操作STK的窗口,工具欄等。
優(yōu)點(diǎn):不依賴于特定的STK版本和編程語(yǔ)言,可以使用多種語(yǔ)言編程實(shí)現(xiàn)。
缺點(diǎn):需要配置相應(yīng)的OLE支持庫(kù),每種語(yǔ)言的OLE支持庫(kù)有差異,需要分別配置。
(2)TCP/IP socket通信
STK在運(yùn)行時(shí)會(huì)啟動(dòng)一個(gè)TCP服務(wù)器,默認(rèn)監(jiān)聽(tīng)5001端口,啟動(dòng)多個(gè)STK窗口,監(jiān)聽(tīng)的端口以5001,5002的形式遞增。想這個(gè)端口以文本的形式發(fā)送STK命令,STK會(huì)解釋這些命令并反饋結(jié)果。
優(yōu)點(diǎn):可以在本地或者通過(guò)網(wǎng)絡(luò)與STK交互,不依賴于特定的STK版本,任何可以發(fā)起TCP請(qǐng)求的編程語(yǔ)言或者軟件都可以與STK交互,依賴的庫(kù)很少,通用性強(qiáng)。
缺點(diǎn):命令和數(shù)據(jù)以文本的形式傳遞,延遲大,數(shù)據(jù)也要進(jìn)行轉(zhuǎn)義和編碼處理。
(3)自定義STK UI
STK支持使用HTML 網(wǎng)頁(yè)來(lái)自定義和拓展UI界面,同時(shí)也支持使用UI插件來(lái)自定義工具欄和窗口。優(yōu)點(diǎn):定制好的自動(dòng)化界面是圖形界面,使用簡(jiǎn)單,操作方便。
缺點(diǎn):由于圖形界面表示的狀態(tài)有限,只能實(shí)現(xiàn)有限的自動(dòng)化功能,并且需要手動(dòng)觸發(fā),對(duì)于不能用圖形界面表示的或者觸發(fā)時(shí)機(jī)不確定的自動(dòng)化操作無(wú)能為力,編制圖形化界面所需的代碼量比較大。
(4)使用官方提供的MATLAB 連接組件
AGI公司提供了一個(gè)插件MATLAB Connector來(lái)支持MATLAB和STK的交互,但是這個(gè)插件只支持特定MATLAB和STK版本之間的連接。
優(yōu)點(diǎn):可以直接在MATLAB中操作STK,方便連接仿真算法進(jìn)行實(shí)時(shí)仿真。
缺點(diǎn):MATLAB Connector只適合特定版本的MATLAB和STK,適配性差。
2.3 怎樣選擇自動(dòng)化方法
就我個(gè)人理解,自動(dòng)化應(yīng)該遵循以下的原則:
(1)版本獨(dú)立原則:自動(dòng)化程序應(yīng)該不依賴于目標(biāo)軟件版本,否則換個(gè)版本就需要更新自動(dòng)化程序,成本很高,特別是對(duì)于大型仿真任務(wù)。
(2)簡(jiǎn)潔配置原則:自動(dòng)化程序的配置應(yīng)當(dāng)十分簡(jiǎn)單,確保用戶只需少量操作就可以執(zhí)行使用自動(dòng)化程序執(zhí)行任務(wù),如果配置太繁瑣,就背離了自動(dòng)化的目的,自動(dòng)化效果也不明顯。
(3)少量開(kāi)發(fā)原則:自動(dòng)化程序承擔(dān)的是功能調(diào)度和數(shù)據(jù)輸入的責(zé)任,要盡可能利用目標(biāo)軟件的接口完成任務(wù),自身的邏輯不能太復(fù)雜,否則會(huì)增加自動(dòng)化時(shí)出錯(cuò)的概率。
結(jié)合上述原則,考慮到航空仿真時(shí)數(shù)據(jù)輸入量比較大的特點(diǎn),這里采用OLE技術(shù)開(kāi)發(fā)自動(dòng)化程序。
3.STK自動(dòng)化實(shí)現(xiàn)
3.1 自動(dòng)化目標(biāo)
使用STK的OLE接口,開(kāi)發(fā)一個(gè)STK自動(dòng)化simulink模塊,適配大多數(shù)的MATLAB版本,實(shí)現(xiàn)用Simulink操控STK,輸入仿真數(shù)據(jù),設(shè)置和獲取STK模型數(shù)據(jù)等。
3.2 開(kāi)發(fā)環(huán)境配置
MATLAB2021a,STK10
3.3 在MATLAB中啟動(dòng)一個(gè)STK窗口
open_STK.m
uiapp = actxserver('STK10.application'); root = uiapp.Personality2; uiapp.visible = 1;運(yùn)行會(huì)啟動(dòng)一個(gè)空白的STK窗口,注意第一行中的uiapp = actxserver('STK10.application')要隨STK版本而更改,我用的是STK10,如果是STK12,改為?uiapp = actxserver('STK12.application');其他版本類似。
?可以看到窗口中什么也沒(méi)有。
3.4 新建一個(gè)場(chǎng)景并設(shè)定時(shí)區(qū)
%打開(kāi)一個(gè)STK窗口 uiapp = actxserver('STK10.application'); root = uiapp.Personality2; uiapp.visible = 1; % 創(chuàng)建一個(gè)新場(chǎng)景并設(shè)定時(shí)區(qū) root.NewScenario('open_STK'); root.UnitPreferences.Item('DateFormat').SetCurrentUnit('UTCG'); root.CurrentScenario.SetTimePeriod('1 Jul 2013 12:00:00.000', '2 Jul 2013 12:00:00.000'); root.CurrentScenario.AnalysisEpoch.SetExplicitTime('1 Jul 2013 12:00:00.000');現(xiàn)在就打開(kāi)了一個(gè)帶有2D和3D視圖的默認(rèn)STK窗口:
?限于篇幅,這里先介紹如何使用MATLAB啟動(dòng)STK窗口,下一節(jié)將詳細(xì)講述使用MATLAB自動(dòng)化配置STK仿真場(chǎng)景以及將自動(dòng)化腳本使用MATLAB S 函數(shù)封裝成simulink模塊。
3.5 STK MATLAB OLE自動(dòng)化示例文檔
隨軟件安裝的STK幫助文檔中關(guān)于STK MATLAB?OLE自動(dòng)化的代碼示例在:
?
3.6 自動(dòng)化的理念
就我的理解,自動(dòng)化不是說(shuō)完全解放雙手,實(shí)現(xiàn)不用點(diǎn)一次鼠標(biāo)就操控軟件,而是應(yīng)該針對(duì)以下幾種情形進(jìn)行自動(dòng)化:
(1)重復(fù)性操作:比如STK進(jìn)行航空仿真時(shí)飛機(jī)軌跡點(diǎn)的輸入就是重復(fù)操作。
(2)觸發(fā)時(shí)機(jī)不確定的操作:有些操作的觸發(fā)時(shí)機(jī)是不確定,比如當(dāng)雷達(dá)掃描到目標(biāo)后報(bào)告目標(biāo)方位,但是人不可能一直盯著仿真界面;有些操作需要滿足一定條件才能觸發(fā),比如飛機(jī)發(fā)射導(dǎo)彈,這時(shí)候不可能通過(guò)圖形界面來(lái)觸發(fā)導(dǎo)彈發(fā)射。
(3)實(shí)時(shí)性操作:很多時(shí)候仿真是實(shí)時(shí)進(jìn)行的,仿真數(shù)據(jù)不是預(yù)先給定的,這時(shí)候不可能通過(guò)圖形化界面設(shè)置達(dá)到目的。
(4)操作由外部信號(hào)觸發(fā):仿真時(shí)操作的觸發(fā)由外部給定信號(hào),這時(shí)候就必須使用自動(dòng)化程序才能達(dá)到目的。
簡(jiǎn)而言之,自動(dòng)化的目的應(yīng)該是:使用程序操作軟件完成使用圖形界面不能完成或者完成起來(lái)很繁瑣的工作。對(duì)于一些一次性的,或者變化很頻繁的操作,使用自動(dòng)化反而會(huì)弄巧成拙,增加工作量。
總結(jié)
以上是生活随笔為你收集整理的STK 航空仿真(二)STK MATLAB自动化(1)自动化目的和方法简介的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: SAP、Oracle和微软:ERP该选哪
- 下一篇: UG塑胶模具设计之夹具底板的6点使用要素