STK与matlab交互 Astrogator模块(1)

一、背景介绍

        STK作为一款强大的航天工业软件,具有非常强大的航天仿真功能,其中自带的Astrogator模块是航天任务仿真的重要一环,在使用该软件时,通常使用者会遇到很多重复的操作,以及数据的二次开发,因此,本文主要使用matlab软件与STK软件进行交互,从而使其具备更广泛的应用与开发。

二、基本操作介绍

       在本文中,将详细介绍matlab2022b与STK11.6版本的交互,本文中尝试着将STK对指定卫星的轨道数据导入matlab中,以数组的形式进行保存,以便于在下一步利用matlab的轨道数据进行处理。

(1)打开STK

(2)启动matlab,新建脚本,输入命令,这样

uiApplication = actxGetRunningServer('STK11.application');
% Get our IAgStkObjectRoot interface
root = uiApplication.Personality2;
checkempty = root.Children.Count;
if checkempty ~= 0
    root.CurrentScenario.Unload
    root.CloseScenario;
end
%% 根据你的需要设定场景的名称
root.NewScenario('optimal_control');

(3)接下来在matlab脚本中写入下列命令,设置场景的分析时间

StartTime = '26 Jan 2024 04:00:00.000';    % 场景开始时间
StopTime = '10 Feb 2024 04:00:00.000';     % 场景结束时间
root.ExecuteCommand(['SetAnalysisTimePeriod * "',StartTime,'" "',StopTime,'"']);
root.ExecuteCommand(' Animate * Reset')

(4)建立完场景,现在开始建立卫星模块,因为本文主要讨论Astrogator模块,所以设置卫星的轨道预报类型均为Astrogator。

Sat_name1='blue';
satellite1= root.CurrentScenario.Children.New('eSatellite', Sat_name1);
satellite1.SetPropagatorType('ePropagatorAstrogator'); 
satellite1.Propagator

(5)现在设计卫星的初始状态为 J2000坐标系下,Kozai-Izsak Mean的轨道六根数,周期为86169.6s,偏心率为0.1,轨道倾角为10deg,近地点辐角为120deg,真近地点角为0deg,降交点赤经为165deg的卫星,历元时刻默认为任务分析开始时刻

root.ExecuteCommand(['Astrogator */Satellite/blue SetValue MainSequence.SegmentList.Initial_State.CoordinateSystem "CentralBody/Earth J2000"']);
root.ExecuteCommand(['Astrogator */Satellite/blue SetValue MainSequence.SegmentList.Initial_State.InitialState.Keplerian.ElementType "Kozai-Izsak Mean"']);
root.ExecuteCommand(['Astrogator */Satellite/blue SetValue MainSequence.SegmentList.Initial_State.InitialState.Keplerian.Period 86169.6 sec']);
root.ExecuteCommand(['Astrogator */Satellite/blue SetValue MainSequence.SegmentList.Initial_State.InitialState.Keplerian.ecc 0.1']);
root.ExecuteCommand(['Astrogator */Satellite/blue SetValue MainSequence.SegmentList.Initial_State.InitialState.Keplerian.inc 10 deg']);
root.ExecuteCommand(['Astrogator */Satellite/blue SetValue MainSequence.SegmentList.Initial_State.InitialState.Keplerian.TA 0 deg']);
root.ExecuteCommand(['Astrogator */Satellite/blue SetValue MainSequence.SegmentList.Initial_State.InitialState.Keplerian.w 120 deg']);
root.ExecuteCommand(['Astrogator */Satellite/blue SetValue MainSequence.SegmentList.Initial_State.InitialState.Keplerian.LAN 165 deg']);

(6) 预报器设置,一般预报器为默认的停止条件为Duration,在本文中采取历元的形式,即该卫星运行到结束时间10 Feb 2024 04:00:00.000,预报器设置为J2摄动预报,在matlab中的代码形式如下

root.ExecuteCommand(['Astrogator */Satellite/blue SetValue MainSequence.SegmentList.Propagate.StoppingConditions Epoch']);
root.ExecuteCommand(['Astrogator */Satellite/blue SetValue MainSequence.SegmentList.Propagate.StoppingConditions.Epoch.TripValue ',StopTime,' UTCG']);
root.ExecuteCommand(['Astrogator */Satellite/blue SetValue MainSequence.SegmentList.Propagate.Propagator Earth_J2']);

(7)对MCS运行显示轨迹,卫星的轨迹便呈现出来了

root.ExecuteCommand(['Astrogator */Satellite/blue RunMCS']);

(8)通常需要生成轨道的报告,使用report将卫星的数据导入matlab中,本文中将从任务开始时间到任务结束时间的卫星J2000坐标系,以1个小时为步长的数据计入matlab的数组中

root.ExecuteCommand(['ReportCreate */Satellite/blue Type Display Style "J2000 Position Velocity" TimePeriod "26 Jan 2024 04:00:00.00" "10 Feb 2024 04:00:00.00" TimeStep 3600.0'])

(9)在这种情况下通常需要将其导出为txt文件,然后利用matlab的读取文本文件的功能写入数据

  • 15
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值