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. Python程序设计题解【蓝桥杯官网题库】 DAY9-基础练习
  2. android 两种实现计时器时分秒的实现,把时间放在你的手中~
  3. Spring Boot与Docker||Docker基本使用、Docker环境||安装Docker
  4. mysql表名查询sql
  5. 记一次院赛CTF的Crypto和Re题(入门)
  6. jqgrid本地数据例子_微型数据转换器如何通过更小尺寸为您带来更多价值
  7. Silverlight 4.0添加鼠标右键菜单和Silverlight全屏模式的进入退出
  8. SAP新一代全栈开发工具:SAP Business Application Studio
  9. 晶振,数字电路的心脏~
  10. 前端学习(3012):vue+element今日头条管理--axios的create字段
  11. 打开多网页用服务器系统好吗,如何在打开多个网页后,只需在一个网页上操作,其他网页都会同步操作?...
  12. C#图解教程 第七章 类和继承
  13. woff字体找不到导致的404错误
  14. 网页iframe访问
  15. Java中迭代Map的方法
  16. BXP千兆无盘网吧解决方案(转)
  17. VS编程之查看数组信息
  18. maxscript rollout
  19. 【基于Java+MySQL等技术的企业员工信息管理系统设计与实现】(源代码+数据库+论文+PPT+视频讲解部署 获取)
  20. 深入浅入 ~ ConCurrentHashMap底层原理透析

热门文章

  1. 发现一款java鉴权认证框架sa-token(目前好像坑还很多)
  2. Django 中celery的使用
  3. 智能机器人制作全攻略
  4. Python3 文件基本修改替换
  5. 如何从零开始创建一个游戏团队?
  6. iTop4412开发板Android4.0.3镜像OTG方式烧写
  7. Hadoop生态圈 大数据文档
  8. 一文详解中文实体识别模型 Lattice LSTM
  9. VScode 删除所有注释+空行(软著格式)
  10. 基于GMT的GPS速度场绘制