STK MATLAB联合仿真(一)STK与MATLAB的连接(COM与Connector)

一、前言

最近在项目研究过程中,使用了MATLAB与STK进行航空的联合仿真,其中遇到了不少问题,查阅CSDN时发现现有的STK相关资料普遍针对较老的STK和MATLAB版本,稍显落后。因此,我将自己在项目过程中遇到的一些问题和解决方案分享出来,供大家学习参考使用。受限于本人水平,难免存在纰漏之处,鼓励大家共同讨论修改,在此感谢各位支持。

二、通过STK MATLAB Connector进行连接

2.1 STK MATLAB Connector的安装

STK与MATLAB的连接存在版本对应问题,具体版本可以参照下表,本人使用STK 12.2和MATLAB R2020b。
图1 AGI官网提供的MATLAB与STK对应版本需要的STK MATLAB Connector
在STK安装完成后,如果在安装选项界面选择了STK MATLAB Connector,那么就会自动安装上表中STK版本对应的STK MATLAB Connector。否则需要手动进行安装,步骤如下:

  • 下载对应版本的STK MATLAB Connector安装包,解压后找到文件夹中的setup.exe。
    Matlab_Connector安装包
  • 运行setup.exe,出现如下界面,一路确定即可。
    STK MATLAB Connector安装界面

2.2 验证连接是否正常

  • connector安装完成后,打开STK,找到Edit->Preferences。
    安装检查1
  • 找到MATLAB一栏,正常安装成功后,在Connectable Version和Versions with installed Connectors中应当会出现本地可连接的MATLAB版本,此方法在过去配置MATLAB R2018b和STK11.6的过程中很成功。
    在这里插入图片描述

但不幸的是,在更换了更高版本的STK和MATLAB后,由于STK MATLAB Connector安装包的潜在问题,无法实现STK12.2与MATLAB R2020b的连接,感兴趣的同学可以尝试更换低版本的MATLAB进行配置。

三、通过COM进行连接

3.1 COM简介

COM(Component Object Model)是微软公司提出的一种组件技术,它定义了对象在单个应用程序内部或多个应用程序之间的行为方式。
COM客户端是任何代码或对象获取指向COM 服务器的指针,并通过调用其接口的方法来使用其服务。COM服务器是向客户端提供服务的任何对象;这些服务采用COM接口实现的形式,可由任何能够获取指向服务器对象上某个接口的指针的客户端调用。
有两种主要类型的服务器, 即进程内服务器和进程外服务器。 进程内服务器在动态链接库(DLL)中实现,进程外服务器在可执行文件(EXE)中实现。进程外服务器可以驻留在本地计算机或远程计算机上。此外,COM还提供一种机制,允许进程内服务器(DLL)在代理项 EXE 进程中运行,从而获得能够在远程计算机上运行进程的优势。

3.2 MATLAB中COM的介绍

MATLAB中的COM文档非常详细,主要包括函数的使用和对象的属性、成员函数两大部分。STK与MATLAB的连接主要使用两个函数,分别是actxserver和actxGetRunningServer。

函数

函数名功能
actxserver创建 COM 服务器
actxGetRunningServer自动化服务器的运行实例的句柄
methodsview查看类方法
eventlisteners列出与 COM 对象事件关联的事件处理程序函数
registerevent在运行时关联 COM 对象事件的事件处理程序
unregisterallevents注销与 COM 对象事件关联的所有事件处理程序
unregisterevent在运行时注销与 COM 对象事件关联的事件处理程序
iscom确定输入是否为 COM 对象
isevent确定输入是否为 COM 对象事件
isinterface确定输入是否为 COM 接口

对象

名称功能
COM从 MATLAB 访问 COM 组件

3.3 建立STK和MATLAB的连接

  • 启动MATLAB
  • 如果STK正在运行,在MATLAB中使用如下命令连接STK:
uiApplication = actxGetRunningServer('STK.Application');
  • 运行后工作区会增加名为uiApplication的变量。
    在这里插入图片描述

  • 如果STK尚未运行,在MATLAB中使用如下命令启动并连接STK,运行后除增加上述变量以外,还会打开一个STK窗口。

uiApplication = actxserver("STK.Application");
uiApplication.Visible = true;
  • 获取对象
root = uiApplication.personality2;
  • 如果不需要STK界面或者为了节约计算资源,可以使用如下命令创建STK/Engine。
engine = actxserver('STKX12.application');
engine.NoGraphics = 1;
root = actxserver('AgStkObjects12.AgStkObjectRoot');
clear engine root
  • 关闭STK
uiApplication.Quit;
clear uiApplication root

3.4 使用STK和MATLAB的连接

下列示例使用MATLAB调用STK命令来创建名为“MATLABTest”的场景,并添加名为“AGI_HQ”的设施,设置其位置为(40.0386, -75.5966, 0.0)。

root.ExecuteCommand('New / Scenario MATLABTest');
root.ExecuteCommand('New / */Facility AGI_HQ');
root.ExecuteCommand('SetPosition */Facility/AGI_HQ Geodetic 40.0386 -75.5966 0.0');

3.5 使用STK对象模型

下列示例使用MATLAB调用STK对象的方法来实现与3.5中相同的功能。

root.NewScenario('MATLABTest');
agi_HQ = root.CurrentScenario.Children.New('eFacility','AGI_HQ');
agi_HQ.Position.AssignGeodetic(40.0386, -75.5966, 0.0);

示例程序效果展示
AGI_HQ位置展示

四、总结

在与同学交流的过程中,发现AGI官方提供的STK MATLAB Connector常常出现玄学bug,而且由于该软件的禁售,导致更高版本的Connector难以获得,因此无论是AGI官方还是我本人,都比较推荐使用COM的方法来进行STK与MATLAB的连接。
AGI官方推荐使用COM而非Connector

五、参考资料

  1. AGI官方的COM连接方法:https://help.agi.com/stk/index.htm#MATLAB_COM.htm?TocPath=Integrating%2520with%2520STK%257CMATLAB%2520Interface%257C_____2
  2. AGI官方的Connector连接方法:https://help.agi.com/stk/index.htm#install/MATLABsetup.htm
  3. 微软官方的COM介绍:https://learn.microsoft.com/zh-cn/windows/win32/com/the-component-object-model
  4. MathWorks官方COM文档:https://ww2.mathworks.cn/help/matlab/ref/com.html?searchHighlight=COM&s_tid=srchtitle_COM_2
  • 36
    点赞
  • 138
    收藏
    觉得还不错? 一键收藏
  • 18
    评论
STK(Systems Tool Kit)是一款用于建模、仿真和分析航天器和卫星运行的软件工具,而Matlab是一种数学计算和数据可视化工具。STK 11.6 Matlab 2018联合仿真配置是指在STK 11.6和Matlab 2018之间进行联合仿真的设置和操作。 通过STK 11.6和Matlab 2018的联合仿真配置,用户可以利用STK的建模和分析能力以及Matlab的计算和数据处理能力来进行更加全面和精确的仿真。在配置过程中,用户可以将STK中建立的场景和航天器模型与Matlab中的数学模型相连接,实现数据的交互和共享。 STK 11.6 Matlab 2018联合仿真配置的步骤如下: 1.首先,用户需要在STK中创建所需的场景、航天器和传感器等模型,并设置相应的运行参数。 2.然后,用户需将所需的数据导入到Matlab中,包括地球的大气、地磁和重力模型等。 3.接下来,在Matlab中,用户可以编写相应的数学模型和算法,用于处理STK中生成的数据以及进行进一步的运算和分析。 4.然后,用户可以利用Matlab中的计算结果将数据传回到STK中,以便在STK的场景中显示和分析。 5.最后,通过不断调整和优化Matlab的数学模型和算法,并与STK中的场景和模型进行联合仿真,用户可以得到更精确和全面的仿真结果。 总的来说,STK 11.6 Matlab 2018联合仿真配置提供了一个强大的工具和平台,使用户可以结合STK的建模和分析能力以及Matlab的计算和数据处理能力,进行更加全面和精确的仿真分析。
评论 18
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值