STK与matlab交互 Astrogator模块 (11)

一、背景知识

前面由于定轨的大作业,关于Astrogator模块的学习有所滞后,在本节将重新聚焦Astrogator模块,在本节中,首先解决的问题是已知两个卫星的轨道六根数,求解其中某一颗卫星LVLH坐标下另一颗卫星的位置速度。这里首先需要自己定义一个报表的内容,例如A,B星的轨道六根数分别为

首先利用MATLAB与STK互联生成两颗卫星

clear;clc
uiApplication = actxGetRunningServer('STK11.application');
% Get our IAgStkObjectRoot interface
global root
root = uiApplication.Personality2;
checkempty = root.Children.Count;
if checkempty ~= 0
    root.CurrentScenario.Unload
    root.CloseScenario;
end
%% 根据你的需要设定场景的名称
root.NewScenario('chapter2');
StartTime = '29 Sep 2023 04:00:00.000';    % 场景开始时间
StopTime = '31 Oct 2023 04:00:00.000';     % 场景结束时间
root.ExecuteCommand(['SetAnalysisTimePeriod * "',StartTime,'" "',StopTime,'"']);
root.ExecuteCommand(' Animate * Reset');
%% ----------------------------------------------
%% A卫星
Sat_Name='A';
satellite=root.CurrentScenario.Children.New('eSatellite', Sat_Name);
satellite.Propagator;
sma=7071.393;
Ecc=0.001;
Inc=20;
w=0;
RAAN=0;
TA=359.999473339175;
satellite.SetPropagatorType('ePropagatorAstrogator'); 
satellite.Propagator;
root.ExecuteCommand(['Astrogator */Satellite/',Sat_Name,' SetValue MainSequence.SegmentList Initial_State Propagate']);
%% 初始化卫星参数
root.ExecuteCommand(['Astrogator */Satellite/',Sat_Name,' SetValue MainSequence.SegmentList.Initial_State.CoordinateType Modified Keplerian']);
root.ExecuteCommand(['Astrogator */Satellite/',Sat_Name,' SetValue MainSequence.SegmentList.Initial_State.InitialState.Epoch ',StartTime,' UTCG']);
root.ExecuteCommand(['Astrogator */Satellite/',Sat_Name,' SetValue MainSequence.SegmentList.Initial_State.InitialState.Keplerian.ElementType "Kozai-Izsak Mean"']);
root.ExecuteCommand(['Astrogator */Satellite/',Sat_Name,' SetValue MainSequence.SegmentList.Initial_State.InitialState.Keplerian.sma ',num2str(sma),' km']);
root.ExecuteCommand(['Astrogator */Satellite/',Sat_Name,' SetValue MainSequence.SegmentList.Initial_State.InitialState.Keplerian.ecc ',num2str(Ecc)]);
root.ExecuteCommand(['Astrogator */Satellite/',Sat_Name,' SetValue MainSequence.SegmentList.Initial_State.InitialState.Keplerian.inc ',num2str(Inc),' deg']);
root.ExecuteCommand(['Astrogator */Satellite/',Sat_Name,' SetValue MainSequence.SegmentList.Initial_State.InitialState.Keplerian.w ',num2str(w),' deg']);
root.ExecuteCommand(['Astrogator */Satellite/',Sat_Name,' SetValue MainSequence.SegmentList.Initial_State.InitialState.Keplerian.TA ',num2str(TA),' deg']);
root.ExecuteCommand(['Astrogator */Satellite/',Sat_Name,' SetValue MainSequence.SegmentList.Initial_State.InitialState.Keplerian.RAAN ',num2str(RAAN),' deg']);
root.ExecuteCommand(['Astrogator */Satellite/',Sat_Name,' RunMCS']);
%% B卫星
Sat_Name2='B';
satellite2=root.CurrentScenario.Children.New('eSatellite', Sat_Name2);
satellite2.Propagator;
sma=7071.393;
Ecc=0.001;
Inc=20;
w=0;
RAAN=0;
TA2=359.998946678351;
satellite.SetPropagatorType('ePropagatorAstrogator'); 
satellite.Propagator;
root.ExecuteCommand(['Astrogator */Satellite/',Sat_Name2,' SetValue MainSequence.SegmentList Initial_State Propagate Maneuver']);
%% 初始化卫星参数
root.ExecuteCommand(['Astrogator */Satellite/',Sat_Name2,' SetValue MainSequence.SegmentList.Initial_State.CoordinateType Modified Keplerian']);
root.ExecuteCommand(['Astrogator */Satellite/',Sat_Name2,' SetValue MainSequence.SegmentList.Initial_State.InitialState.Epoch ',StartTime,' UTCG']);
root.ExecuteCommand(['Astrogator */Satellite/',Sat_Name2,' SetValue MainSequence.SegmentList.Initial_State.InitialState.Keplerian.ElementType "Kozai-Izsak Mean"']);
root.ExecuteCommand(['Astrogator */Satellite/',Sat_Name2,' SetValue MainSequence.SegmentList.Initial_State.InitialState.Keplerian.sma ',num2str(sma),' km']);
root.ExecuteCommand(['Astrogator */Satellite/',Sat_Name2,' SetValue MainSequence.SegmentList.Initial_State.InitialState.Keplerian.ecc ',num2str(Ecc)]);
root.ExecuteCommand(['Astrogator */Satellite/',Sat_Name2,' SetValue MainSequence.SegmentList.Initial_State.InitialState.Keplerian.inc ',num2str(Inc),' deg']);
root.ExecuteCommand(['Astrogator */Satellite/',Sat_Name2,' SetValue MainSequence.SegmentList.Initial_State.InitialState.Keplerian.w ',num2str(w),' deg']);
root.ExecuteCommand(['Astrogator */Satellite/',Sat_Name2,' SetValue MainSequence.SegmentList.Initial_State.InitialState.Keplerian.TA ',num2str(TA2),' deg']);
root.ExecuteCommand(['Astrogator */Satellite/',Sat_Name2,' SetValue MainSequence.SegmentList.Initial_State.InitialState.Keplerian.RAAN ',num2str(RAAN),' deg']);
root.ExecuteCommand(['Astrogator */Satellite/',Sat_Name2,' RunMCS']);

第二步,在STK操作,生成一个B在A星的LVLH坐标系下的坐标,其内容如下

 

该报告生成的是卫星B在卫星A的LVLH坐标系下初始的位置和速度                                          

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/541613.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

C语言中的编译和链接

系列文章目录 文章目录 ​编辑 系列文章目录 文章目录 前言 一、 翻译环境和运行环境 二、 翻译环境 2.1 编译 2.1.1 预处理 2.1.2 编译 2.1.2.1 词法分析 : 2.1.2.2 语法分析 2.1.2.3 语义分析 2.1.3 汇编 2.2 链接 三、运行环境 前言 在我们平常的写代码时,我们很…

ARM内核的CPU架构模型

1.引言 程序员在编码的时候,如果想有进一步的提升,我认为还是要深入底层理解程序运行原理才好。最近看了一些ARM架构的讲解,总结了如下。虽然是以ARM为原型画的图形,但是对于C和C的编程,还是有一些参考价值的。 2. AR…

SAP HCM GET pernr无法获取到数据二

今天遇到一个比较奇怪的问题,PA30能查到员工主数据,任何信息类型也没有错误,但是核算工资的时候发现无法找到此人。 但是核算工资无法核算 断点到逻辑数据get pernr,也不会进入断点 查看0000数据有间隔 具体错误的代码位置如下&am…

rspack 使用构建vue3脚手架

基于 Rust 的高性能 Web 构建工具。rspack 主要适配 webpack 生态,对于绝大多数 webpack 工具库都是支持的。 启动速度快;增量热更新快。兼容 webpack 生态;内置了 ts、jsx、css、css modules 等开箱即用。生产优化,tree shaking…

【蓝桥杯】第十五届填空题a.握手问题

题解: 根据问题描述,总共有 50 人参加会议,每个人除了与自己以外的其他所有人握手一次。但有 7 个人彼此之间没有进行握手,而与其他所有人都进行了握手。 首先,计算所有人进行握手的总次数: 总人数为 50 …

计算机服务器中了360后缀勒索病毒怎么办?360后缀勒索病毒解密步骤

网络技术的不断应用与发展,为企业的生产运营提供了极大便利,利用网络可以开展各项工作业务,可以大大提高企业的生产效率,然而,网络是一把双刃剑,在为企业提供便利的同时,也为企业的数据安全带来…

Go——Channel通道

一.介绍 单纯的将函数并发执行是没有意义的。函数和函数之间需交换数据才能体现并发执行函数的意义。 虽然可以使用共享内存来进行数据交换,但是共享内存在不同的goroutine中容易发送竞态问题。为了保证数据交换的正确性,必须使用互斥量对内存进行加锁&a…

树莓派驱动开发--搭建环境篇(保姆级)

前言:树莓派的环境搭建关系到之后的驱动开发,故一个好的环境能让你顺手完成驱动开发!我使用的是64位树莓派4b!有显示屏的前提!!!(因为wifi连接太刁钻了) 一、ubantu相关 …

(一)基于IDEA的JAVA基础14

在看今天的重点二维数组前,先做俩个练习复习一下,热热脑子: 求数组内的最大值/最小值 这个就是挨个比较换一下位置 假设有这么一组数组{16,48,48,54,3} public class Test01 { public static void main(String[] args) { int [] num {16,48,54,3}; …

【力扣】148. 排序链表

148. 排序链表 题目描述 给你链表的头结点 head ,请将其按 升序 排列并返回 排序后的链表 。 示例 1: 输入:head [4,2,1,3] 输出:[1,2,3,4] 示例 2: 输入:head [-1,5,3,4,0] 输出:[-1,0,…

gma 2.0.8 (2024.04.12) 更新日志

安装 gma 2.0.8 pip install gma2.0.8网盘下载: 链接:https://pan.baidu.com/s/1P0nmZUPMJaPEmYgixoL2QQ?pwd1pc8 提取码:1pc8 注意:此版本没有Linux版! 编译gma的Linux虚拟机没有时间修复,本期Linux版继…

.NET i18n 多语言支持与国际化

环境 WIN10 VS2022 .NET8 1.👋创建项目 2.👀创建Resources Controllers HomeController.en.resx HomeController.fr.resx HomeController.zh.resx 3.🌱Program.cs添加国际化支持 // 添加国际化支持 builder.Services.AddLocalization(…

数据结构-链表刷题集(长期更新)

文章目录 1. leetcode 2 两数之和1.1 解法一 1. leetcode 2 两数之和 1.1 解法一 题目及其相关实例如下 要做这个题,首先我们要学会模拟竖式的加法,我们知道即使是java基本数据中最大的long类型范围也是有限的,那如果超出范围了我们该怎么办呢,我们就需要用字符串来模拟这个…

基于Java的XxlCrawler网络信息爬取实战-以中国地震台网为例

目录 前言 一、信息网站介绍 1、网站介绍 2、 地震历史信息 3、 历史信息接口分析 二、XxlCrawler组件 1、关于XxlCrawler 2、核心概念介绍 三、实际信息爬取 1、新建maven项目 2、新建model层对象 3、实际爬取 总结 前言 如今,只要谈起网络信息爬取也就…

配置交换机端口安全

1、实验目的 通过本实验可以掌握: 交换机管理地址配置及接口配置。查看交换机的MAC地址表。配置静态端口安全、动态端口安全和粘滞端口安全的方法。 2、实验拓扑 配置交换机端口安全的实验拓扑如图所示。 配置交换机端口安全的实验拓扑 3、实验步骤 &#xff…

set 类 和 map 类

1. 关联式容器 关联式容器也是用来存储数据的&#xff0c;与序列式容器不同的是&#xff0c;其里面存储的是<key, value>结构的 键值对&#xff0c;在数据检索时比序列式容器效率更高 2. 键值对 用来表示具有一一对应关系的一种结构&#xff0c;该结构中一般只包含…

JVM之JVM的基本介绍

基本介绍 JVM&#xff1a;全称 Java Virtual Machine&#xff0c;即 Java 虚拟机&#xff0c;一种规范&#xff0c;本身是一个虚拟计算机&#xff0c;直接和操作系统进行交互&#xff0c;与硬件不直接交互&#xff0c;而操作系统可以帮我们完成和硬件进行交互的工作 特点&…

Docker Image (镜像) 常见命令

Docker Image (镜像) 常用命令 docker images 功能&#xff1a;列出本地所有的镜像。如果镜像 ID 相同&#xff0c;但是 Tag 标签不同&#xff0c;也会被当作不同的条目被列出来。 语法&#xff1a; docker images [options] [REPOSITORY[:TAG]] 别名&#xff1a; docker ima…

【fastapi】搭建第一个fastapi后端项目

本篇文章介绍一下fastapi后端项目的搭建。其实没有什么好说的&#xff0c;按照官方教程来即可&#xff1a;https://fastapi.tiangolo.com/zh/ 安装依赖 这也是我觉得python项目的槽点之一。所有依赖都安装在本地&#xff0c;一旦在别人电脑上编写项目就又要安装一遍。很扯淡。…

mysql搭建主从

mysql搭建主从: 1:拉取mysql镜像 docker pull mysql2:创建主从对应目录 3:建立一个简易的mysql docker run -it --name mytest -e MYSQL_ROOT_PASSWORD123 -d mysql4:进入这个简易的mysql;从中获取my.cnf文件 docker exec -it mytest bash5:从容器中将my.cnf拷贝到 /3306/c…