1.STK自动化的目的

STK自动化是指使用其他软件或者程序语言,直接操作STK对象和UI界面。之所以需要STK自动化,是因为直接使用STK UI界面进行仿真存在以下困境:

(1)通常情况下,STK航空仿真需要大量的数据,例如一系列的飞机轨迹点等等,手动在STK界面中输入这些轨迹点比较耗时耗力。

(2)STK航空仿真大多是实时仿真,数据不是预先给定的,是由一定的算法或者其他软件(如MATLAB)在仿真时生成的。

(3)项目交付时,需要接收方熟练使用STK,然而对甲方爸爸提这种要求百分之百会被喷。

(4)对于大型项目,使用UI界面设置仿真参数很容易出错,也难以保证操作的规范性,如果使用自动化脚本完成仿真配置,可以保证每次配置都是一致的,减少出错的概率。

鉴于这些情况,通常需要定制一些接口,让其他软件或者程序语言能直接与STK进行交互,这样可以专心于仿真的算法设计而无需事先掌握STK的使用。

2.STK自动方法

2.1 查阅自动化帮助文档

打开STK帮助文档可以查阅STK自动化的帮助文档:

其中Automate Tasks一节就是STK自动化的帮助文档。

2.2 自动化的方法

在帮助文档中可以看到,STK自动化有以下几种方法:

(1)OLE 自动化

OLEObject Linking and Embedding,对象连接与嵌入),是一种面向对象的技术,利用这种技术可开发可重复使用的软件组件(COM)。OLE从多媒体借鉴而来,是Windows的一组服务功能,提供了一种以源于不同应用软件的信息建立复合文档的强有力方法。在对象连接和嵌入系统中,对象可以是几乎所有的数据类型,例如文字、点阵图像和矢量图形,甚至于声音、注解和录像剪辑等均可。对象被赋予了智能属性,即参与连接和嵌人的对象本身带有计算机指令。最典型的OLE应用就是PowerPointPPT就是一种广泛使用OLE技术的多媒体文档,所以我们可以在PPT中直接播放音视频。

STKOLE自动化支持JavaC++PythonMatlabJavascript等,其他软件也可以使用OLE调用STK。

通过OLE自动化,可以使用STK Model Object(AgSTKObjects, AgSTKGraphics, AgVGT and AgSTKUtil 和AGI.STKObjects, AGI.STKGraphics,AGI.STKVgt and AGI.STKUtil)操作STK中的模型和工具组件,也可以使用AgUiCore库操作STK的窗口,工具栏等。

优点:不依赖于特定的STK版本和编程语言,可以使用多种语言编程实现。

缺点:需要配置相应的OLE支持库,每种语言的OLE支持库有差异,需要分别配置。

(2)TCP/IP socket通信

STK在运行时会启动一个TCP服务器,默认监听5001端口,启动多个STK窗口,监听的端口以5001,5002的形式递增。想这个端口以文本的形式发送STK命令,STK会解释这些命令并反馈结果。

优点:可以在本地或者通过网络与STK交互,不依赖于特定的STK版本,任何可以发起TCP请求的编程语言或者软件都可以与STK交互,依赖的库很少,通用性强。

缺点:命令和数据以文本的形式传递,延迟大,数据也要进行转义和编码处理。

(3)自定义STK UI

STK支持使用HTML 网页来自定义和拓展UI界面,同时也支持使用UI插件来自定义工具栏和窗口。优点:定制好的自动化界面是图形界面,使用简单,操作方便。

缺点:由于图形界面表示的状态有限,只能实现有限的自动化功能,并且需要手动触发,对于不能用图形界面表示的或者触发时机不确定的自动化操作无能为力,编制图形化界面所需的代码量比较大。

(4)使用官方提供的MATLAB 连接组件

AGI公司提供了一个插件MATLAB Connector来支持MATLABSTK的交互,但是这个插件只支持特定MATLABSTK版本之间的连接。

优点:可以直接在MATLAB中操作STK,方便连接仿真算法进行实时仿真。

缺点MATLAB Connector只适合特定版本的MATLABSTK,适配性差。

2.3 怎样选择自动化方法

就我个人理解,自动化应该遵循以下的原则:

(1)版本独立原则:自动化程序应该不依赖于目标软件版本,否则换个版本就需要更新自动化程序,成本很高,特别是对于大型仿真任务。

(2)简洁配置原则:自动化程序的配置应当十分简单,确保用户只需少量操作就可以执行使用自动化程序执行任务,如果配置太繁琐,就背离了自动化的目的,自动化效果也不明显。

(3)少量开发原则:自动化程序承担的是功能调度和数据输入的责任,要尽可能利用目标软件的接口完成任务,自身的逻辑不能太复杂,否则会增加自动化时出错的概率。

结合上述原则,考虑到航空仿真时数据输入量比较大的特点,这里采用OLE技术开发自动化程序。

3.STK自动化实现

3.1 自动化目标

使用STKOLE接口,开发一个STK自动化simulink模块,适配大多数的MATLAB版本,实现用Simulink操控STK,输入仿真数据,设置和获取STK模型数据等。

3.2 开发环境配置

MATLAB2021a,STK10

3.3 在MATLAB中启动一个STK窗口

open_STK.m

uiapp = actxserver('STK10.application');
root = uiapp.Personality2;
uiapp.visible = 1;  

运行会启动一个空白的STK窗口,注意第一行中的uiapp = actxserver('STK10.application')要随STK版本而更改,我用的是STK10,如果是STK12,改为 uiapp = actxserver('STK12.application');其他版本类似。

可以看到窗口中什么也没有。

3.4 新建一个场景并设定时区

%打开一个STK窗口
uiapp = actxserver('STK10.application');
root = uiapp.Personality2;
uiapp.visible = 1;
% 创建一个新场景并设定时区
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');

现在就打开了一个带有2D3D视图的默认STK窗口:

限于篇幅,这里先介绍如何使用MATLAB启动STK窗口,下一节将详细讲述使用MATLAB自动化配置STK仿真场景以及将自动化脚本使用MATLAB S 函数封装成simulink模块。

3.5 STK MATLAB OLE自动化示例文档

随软件安装的STK帮助文档中关于STK MATLAB OLE自动化的代码示例在:

3.6 自动化的理念

就我的理解,自动化不是说完全解放双手,实现不用点一次鼠标就操控软件,而是应该针对以下几种情形进行自动化:

(1)重复性操作:比如STK进行航空仿真时飞机轨迹点的输入就是重复操作。

(2)触发时机不确定的操作:有些操作的触发时机是不确定,比如当雷达扫描到目标后报告目标方位,但是人不可能一直盯着仿真界面;有些操作需要满足一定条件才能触发,比如飞机发射导弹,这时候不可能通过图形界面来触发导弹发射。

(3)实时性操作:很多时候仿真是实时进行的,仿真数据不是预先给定的,这时候不可能通过图形化界面设置达到目的。

(4)操作由外部信号触发:仿真时操作的触发由外部给定信号,这时候就必须使用自动化程序才能达到目的。

简而言之,自动化的目的应该是:使用程序操作软件完成使用图形界面不能完成或者完成起来很繁琐的工作。对于一些一次性的,或者变化很频繁的操作,使用自动化反而会弄巧成拙,增加工作量。

STK 航空仿真(二)STK MATLAB自动化(1)自动化目的和方法简介相关推荐

  1. STK 航空仿真(二)STK MATLAB自动化(2)场景和飞机模型基础设置

    1. 场景设置 1.1 显示STK窗口界面 %打开一个STK应用实例 uiapp = actxserver('STK10.application'); %获取STK用户界面 root = uiapp. ...

  2. STK 航空仿真(三)雷达

    1.添加雷达到飞机 首先打开MATLAB,运行下面的MATLAB脚本添加场景和飞机: %打开一个STK应用实例 uiapp = actxserver('STK10.application'); %获取 ...

  3. MATLAB与STK互联45:STK软件仿真视频录制

    应用STK进行任务仿真,除了计算数据之外,还有一个重要功能,就是场景展示,虽然STK效果比不专业的动画软件.这就涉及到,视频录制的问题了. STK软件自带了视频录制功能,2D.3D都可以录制.这里以3 ...

  4. osgearth 仿真平台之卫星仿真(实现STK卫星仿真基本功能)

    卫星工具软件 STK(Satellite Tool Kit,STK)是航天领域中先进的系统分析软件,由美国分析图形有限公司(Analytical Graphics Inc,AGI)研制,用于分析复杂的 ...

  5. matlab gui 二阶系统,实验二 二阶系统matlab仿真(dg).doc

    利用simulink进行仿真的步骤: 打开Matlab软件: 在Command Window命令行>>后输入simulink并回车或点击窗口上部图标直接进入simulink界面: 点击Fi ...

  6. matlab仿真电气连接,MATLAB仿真及在电子信息与电气工程中的应用简介,目录书摘...

    编辑推荐: 1. 采用matlab*新版本matlab 2015b. 2. 介绍Matlab在电路分析.信号与系统分析.数字信号处理.控制系统分析等课程当中的应用,针对性强. 内容简介: 本书以MAT ...

  7. 单位斜变函数matlab,实验二 用MATLAB实现线性系统的时域分析

    实验二基于MATLAB的线性系统时域分析 [实验目的] 1.研究线性系统在典型输入信号作用下的暂态响应: 2.熟悉线性系统的暂态性能指标: 3.研究二阶系统重要参数阻尼比ξ对系统动态性能的影响: 4. ...

  8. 【飞轮储能】基于matlab simulink飞轮储能(永磁同步电机)仿真【含Matlab源码 2421期】

    一.⛄获取代码方式 获取代码方式1: 完整代码已上传我的资源:[飞轮储能]基于matlab simulink飞轮储能(永磁同步电机)仿真[含Matlab源码 2421期] 点击上面蓝色字体,直接付费下 ...

  9. 【机械仿真】基于matlab打桩机运动学仿真【含Matlab源码 2101期】

    ⛄一.获取代码方式 获取代码方式1: 完整代码已上传我的资源:[机械仿真]基于matlab打桩机运动学仿真[含Matlab源码 2101期] 点击上面蓝色字体,直接付费下载,即可. 获取代码方式2: ...

最新文章

  1. git配置用户名和密码_IDEA配置码云教程
  2. 智能风控平台核心之风控决策引擎(二)
  3. 中国靶材行业需求前景分析及发展形势研究报告2021版
  4. Nginx部署及综合应用
  5. 大数据之-Hadoop源码编译_编译hadoop源码前_需要准备的软件_以及编译步骤---大数据之hadoop工作笔记0045
  6. python爬微博粉丝最多的明星_2020明星微博粉丝排行榜,谁的粉丝数量最多呢
  7. jquery学习之事件委派
  8. tomcat下部署activemq(转)
  9. [C++ primer]优化内存分配
  10. linux下启动管理,rEFInd启动管理器配置文件详解
  11. MySQL中全局变量、会话变量、用户变量和局部变量的区别
  12. RT-Thread 学习文档
  13. 标准解读系列之二:国家车联网产业标准体系完成各板块拼图(附标准下载)
  14. 陀螺仪的进动及其数学描述
  15. LightTools 坐标系定义及旋转方向定义
  16. webpack出现CssSyntaxError
  17. php读取excel并导入数据,PHPExcel读取excel并导入数据库
  18. linux su命令_Linux Su命令示例教程
  19. 基于形态学的图像后期抗锯齿算法--MLAA优化研究
  20. 中国HIS企业发展思考与展望

热门文章

  1. IPTG诱导蛋白表达的原理
  2. python实习内容过程_对Python实习的简单分析,也许可以帮到你
  3. 苏州企业如何确定科技成果的权利归属
  4. 手机遥控器代码,教你变成遥控大师
  5. 张小龙演讲4小时完整笔记(精华版)
  6. 管理经济学【十二】之 企业产品定价实践
  7. 在 VirtualBox 中构建 Debian11 虚拟电脑
  8. 向Android模拟器打电话发短信的简单方法
  9. 如何理解Spring?
  10. 如何修改被编译后DLL文件(入门)