【STK初探】创建一条奔月轨道

一、基础知识

1.1 新建或复制一个3D或2D视图

修改轨道线条的粗细

2d Graphics --> Attributes --> more

1.2 新建一个卫星

1. 新建一个场景,命名为earth2moon

2. 创建一个卫星,方法:Insert -- New -- Satellite(orbit wizard)

二、任务要求

从文昌发射场发射卫星,经停泊轨道点火后,经过5天时间到达近月点高度200km的极轨环月轨道。

三、创建流程

【注】在Satellite1的Properties中通过配置Astrogator进行轨道设计(右键--Properties)

3.1  到达月球附近

Target Sequence配置情况如下

(1) 发射--Launch

修改Epoch等。

(2) 停泊段--Propagate,命名为Coast

设置停泊时间:3000秒。

(3) 奔月机动--Maneuver

这里推力使用脉冲。设置\Delta v,一般沿着速度方向。或者VCN坐标系,沿x轴进行设置。具体的数值可以查阅文献,看一下一般的奔月轨道需要多少,一般大于3000 m/sec。

 (4) Propogate

停止的标志1:撞到月球停止。设置与月球的距离是0km。

如果撞不到月球,停止的标志2:到达近月点停止。

 此时,运行整个序列,可能会发现卫星奔月没多远,然后就到近月点,停下来了。但是,此时实际上距离月球比较远,仍在地球附近。这种情况下不可能得到可行解。所以,增加一个条件(设置卫星与地球的距离30000km),保证外推的足够远,才有可能到月球。

 运行整个序列发现没有奔月。此时,需要改变奔月轨道空间的取向和位置。因为控制发射时间,奔月轨道会沿着地球自转轴旋转。修改停泊时间,奔月轨道会沿着停泊轨道的法向轴旋转。所以,需要由发射时间修改升交点赤经\Omega+由停泊时间修改近地点幅角\omega。勾选这两个设计变量。 

 约束怎么描述?采用卫星的赤经和赤纬与月球重合。具体来讲,目标变量采用Delta Declination  (Declination between s/c and central body wrt parent body)和Delta Right Asc (Right Ascension between s/c and central body wrt parent body,这两个量分别是卫星相对地球的赤纬和赤经与月球相对地球赤纬和的赤经差值。

根据上面的分析,下面开始配置微分求解器。(Target Sequence--Differential Corrector)

(1)设计变量(控制变量)

 (2)设计目标

Scaling是进行归一化,数值积分和微分修正都需要归一化,会更容易求解(收敛)。

 注意:Target Sequence里面Action选择Run active profiles。点击运行。

结果如下

 到这里,已经完成了到达月球附近的目标。

3.2 月面附近参数粗设计

下面针对近月点高度,倾角,飞行时间进行设计。

首先,调整倾角。

B平面在深空设计特别是引力辅助变轨的过程中非常重要。在小天体附近,相对小天体是双曲线轨道。过自转轴和过赤道的轴构成B平面。双曲线的渐近线穿过B平面的点在两个轴的分量构成BDotT和BDotR。倾角的控制目标由(Propagate --> Results --> MultiBody)中BDotT和BDotR定义,这样更容易收敛。因为用渐近线描述非线性和敏度会低很多。

 此时,增加一个设计变量(控制变量)\Delta v。注意勾选。

假设设计的是一个月球的极轨,BDotR=8000,BDotT=0。

 具体的微分修正器设计见上图,结果如下,实现了收敛。

然后,在上述收敛的基础上调整飞行时间。飞行时间是在Propagate --> Results --> Segments --> Difference Across Segments。字面意思是跨越段之间的偏差。这里CalcObject选择是Epoch,OtherSegment选择Target Sequence.Maneuver。

添加完成后,可以发现目前的飞行时间是176727s。

如果现在需要将时间修改成5天,也就是432000秒。复制上述的微分修正器,如果直接修改的话,见下图。

 会发现不收敛:

 这时采用同伦法,逐步变到所需的432000秒的飞行时间。

目前飞行时间已经满足要求了,倾角基本上与要求非常接近了。

3.3 月面附近参数精设计

下面对倾角和高度进行详细修正设置。

倾角是在Propagate --> Results --> Keplerian Elems --> Inclination。坐标系选择月球本体系。

 高度是在Geodetic --> Altitude,中心天体选择月球。

 约束的是近月点的高度。为什么呢?因为卫星是在近月点停下来(外推的停止条件),所以约束高度就意味着是近月点的高度。我们可以看到经过B平面对渐近线的约束后,此时的轨道真实倾角83°左右,已经很接近90°了的要求啦。这种情况下,会很容易收敛。

 运行结果如下

至此,本次设计任务完成!

### 使用 MATLAB 和 STK 创建卫星并模拟其沿轨道运行 为了在MATLAB中与STK交互创建卫星并使其沿着预定轨道运行,可以采用`actxserver`函数启动STK应用程序,并利用特定命令完成卫星的创建及其轨道参数设定。下面展示的是基于执行`executecommand`加上`setstate`命令的方式来进行这一过程的具体实例。 #### 启动STK应用并与之建立连接 首先,在MATLAB环境中初始化STK的应用程序接口,这一步骤是后续所有操作的基础[^1]: ```matlab uiap = actxserver('STK11.Application'); % 初始化STK Application对象 root = uiap.Personality2; % 获取Personality2属性用于进一步的操作 ``` #### 新建场景 接着定义一个新的仿真环境即新建一个Scenario作为工作区的一部分: ```matlab root.NewScenario('exampleSatelliteOrbit'); scenario = root.CurrentScenario; scenario.SetTimePeriod('01 Jan 2024 00:00:00.000', '07 Jan 2024 00:00:00.000'); ``` #### 添加卫星到当前场景 在此之后向已构建好的Scene里加入一颗新的卫星实体: ```matlab satellite = scenario.Children.New(8, 'MySatellite'); % 类型8代表卫星 ``` #### 设置卫星初始状态(TLE) 对于想要指定卫星遵循某条具体轨道的情况来说,可以通过设置两行元素(Two-Line Element Set, TLE)数据达到目的。这里展示了怎样运用`ExecuteCommand`方法配合`SetState`指令输入TLE字符串从而配置卫星的状态: ```matlab tleString = sprintf('1 25544U 98067A 23361.53141452 .00001909 00000-0 36491-4 0 9994\r\n2 25544 51.6442 247.4412 0001258 325.5522 139.8967 15.49404455363299'); commandResult = satellite.ExecuteCommand(['SetState ''TLE'' ''' tleString '''']); ``` 上述代码片段中的`tleString`变量包含了国际空间站(ISS)的一组示例TLE数值;实际应用时应替换为所需目标的真实TLE信息。 #### 运行仿真 最后为了让所添加的卫星按照既定轨迹移动起来,则需调用相应的方法触发整个仿真的开始: ```matlab root.Rewind(); root.Run(); ``` 以上就是使用MATLAB结合STK软件包创建卫星以及让其依照给定轨道运动的主要流程概述和对应的关键编程语句。
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值