STK 轨道机动模块(Astrogator)介绍
李云飞(blitheli@gmail.com)
南京大学天文系/上海航天技术研究院
STK 模块中,轨道机动模块 Astrogator 最为常用了,尤其对于轨道设计任务,本模块是必不可
少的。本文依据 STK 帮助文档中的说明,简要的阐述 Astrogator 模块的使用,以便给读者一个大概
的印象和简单的引导;详细,具体以及更深入的使用还是请读者参阅英文的帮助文档。笔者使用的
是 STK 8.1 版本。
1 前言
当往场景中添加卫星对象后,在卫星的属性页(Properties Browser)中,Basic/Orbit 中的 Propagator
下拉菜单中选择 Astrogator 即可出现如下界面。
图表 1 Astrogator 属性页面
见图表 1,此界面用来定义卫星进行一系列轨道机动,称为任务控制序列MCS(Mission Control
Sequence)。通常我们设计一颗卫星进行一系列的轨道机动都是一段一段动作连接而成的。例如,首
先给定卫星的初始状态(轨道根数,卫星的结构和推进剂质量等),然后在地球J2,J4 项引力模型下
无动力的运动一段时间(也可设定一定的结束条件,如运行到远地点时),接着发动机进行一定时间
的点火(可定义发动机的推力,比冲以及推力的矢量方向等),最后再在地球J2 项引力模型下无动力
运行一定的时间。
诸如上述的问题,在 STK/Astrogator MCS 中可以分成四段,分别为初始状态段(Initial State),轨
道外推段(Propagate),发动机工作段(Maveuver)以及再次的轨道外推段。上述段数按照顺序排列,STK
每计算完一段后,保存各种状态量,并作为下一段的初始值,接着计算下一段,直至结束。
目前STK 8.1 有 13 种段数可供选择, 都在MCS中定义,其各工具按钮的定义见图表 2。在进
行某颗卫星的轨道机动任务设计时,点击“插入新的段(Insert Segment)”按钮插入新的段,并按照
自己设定的任务顺序不断的插入新段,点击相应的段,则会在右侧出现该段的具体属性设置选项。
假设所有段的属性设置选项都已经设置好,则点击“运行整个任务段”按钮,STK就会按照顺序计
算所有的段。至此,此卫星的轨道计算完成。
在 MCS 界面的下方的按钮“Results…”,是用来设定某一具体段的“计算目标(calculation objects)”
的。比如,选中某一轨道外推段,然后点击“Results”,在出现页面中选中某一计算目标(假如为轨
道偏心率),则意味着在此段结束时,会计算轨道偏心率。此选项的主要作用后面会提及到。
下面介绍各段的功能及其属性设置选项的定义。
图表 2 MCS 各工具按钮的说明
2 段(Segment)的说明
点击“插入新的段(Insert Segment)”按钮这会出现“Segment Selection”页面,此页面有 12 种段,
还有一种段,称为“自动序列(Automatic Sequence )”,是在 MCS 界面中的“自动序列浏览器”中设
置的。
2.1 初始状态段(Initial State)
此段用来设置卫星的初始状态量,通常在整个任务序列中首位。在其右侧的属性页面中,选择
不同的坐标系(Coord.System )以及轨道参数类型(Coordinate type)可设定某一历元时刻的初始状态。
也可用下方的“Initial State Tool…”选项按钮来设定初始状态,它可以从文件中读取某一初始状态(当
然也可把当前的初始轨道参数存储起来)。点击“Satellite Properties…”按钮可设定卫星初始的质量
状况,如推进剂质量,结构质量等。
2.2 轨道外推段(Propagate)
此段用来将卫星的轨道按照选定的力模型进行轨道外推计算(与 HPOP 类似)。在其右侧的属性
页面中,“Propagator”按钮用来选择卫星进行轨道外推计算的力模型,在力模型的选择页面中,也
可选择自己定义的力模型,见“轨道机动组件浏览器(Astrogator Component Browser)”部分的说明。
另外一个比较重要的选项就是卫星轨道外推的停止条件“Stopping Conditions”。点击“Insert…”
按钮可添加多个停止条件。实际运行计算时,当其中任一停止条件满足时就执行相应的停止条件对
应的序列(Sequence),见图表 3。
STK 提供的默认停止条件通常为:轨道外推计算一定时间,轨道到达远地点,某一历元时刻停
止等等,也可由“轨道机动组件浏览器”来设定自己的停止条件。选中特定的停止条件文件,则在
下方的菜单里出现对应的选项。需要值得注意的是,对应不同的停止条件文件,有的按钮为灰色的,
即对当前的停止条件文件不可用。下面简要解释一部分按钮的作用。
1)“Sequence”:点击此按钮选择相应的自动序列(见“自动序列”说明),当停止条件满足时,
会执行此自动序列,系统默认为“STOP”,即此轨道外推段停止,进行下一段的计算。若想某一停
止条件满足时执行另一系列的机动任务,则可点击此按钮选择自己设定的某一“自动序列(见其说
明)”。但执行完自己设定的“自动序列”后,STK 并不退出此轨道外推段,会继续进行轨道外推计
算,直到某一停止条件满足,然后再执行那个停止条件对应的“自动序列”。因此要此轨道外推段停
止并转入下一段的计算,则必须保证某一停止条件文件对应的“Sequence”中的自动序列为“STOP”
或者其自动序列内部含有“STOP”。
图表 3 轨道外推段的停止条件
2)“User Calc Object”:用户自定义计算目标;此按钮通常用于用户自定义停止条件。例如,设
定某一停止条件为卫星的地心纬度为 60 度:首先点击“Insert”按钮选择“UserSelect”,然后点击此
“User Calc Object”按钮,在打开的“User Calculated Object selection”中选择“Geodetic”下的
“Latitude”,然后在“Trip”栏目中设定为 60 度,见图表 3。
3)“Constraints”:约束条件。对应停止条件的约束条件,也即当某一停止条件满足时,必须先
满足其对应的约束条件。约束条件的用户自定义可通过“轨道机动组件浏览器”来设定。
4)“Condition Inherited by Automatic Sequences”:但此选项被选中时,这意味着此停止条件在此
轨道外推段中的所有停止条件对应的“自动序列”中都有效。比如,当另一停止条件满足时,并且
进入其对应的自动序列,在自动序列的计算过程中,如果本停止条件满足,则会立刻跳转到此停止
条件对应的“自动序列”。
2.3 发动机工作段“Maneuver”
此段用来设定发动机点火进行轨道机动的。通过下拉菜单有两种模型可选,一种为“瞬时冲量
模型(Impulsive )”,另一种为“有限推力模型(Finite)”。选择不同的发动机模型,则其对应的菜单栏
设定不同。
1)“瞬时冲量模型(Impulsive )”:此模型根据设定速度增加的方向(“Attitude”选项中设定),
给卫星某一速度增加矢量,此过程为瞬时的,即认为发动机点火时间为 0;同时在发动机(“Engine”)
选项中设定相应的发动机模型(可通过“轨道机动组件浏览器”自定义发动机,如推力,比冲等),
若选中“Update Mass Based on Fuel Usage”,则会根据发动机模型,由设定的速度增加大小计算燃料
的消耗量。
2)“有限推力模型(Finite)”:此模型会多了个“Propagator”选项,具体设置同“轨道外推段”
设置。意味着在选定的轨道外推计算的力模型下,同时加上发动机的推力进行轨道外推计算。此段
的停止条件同“轨道外推段”的停止条件。通常为轨道外推一定的时间,即发动机工作一定的时间
就停止,随即转入下段的计算。
3)“Seed Finite from Impulsive”:通常我们在进行轨道机动时,首先由理论得知某一发动机的瞬
时速度增加量,则我们可先通过瞬时冲量模型设定速度增加量,并设置好对应的发动机模型,然后
点击此“Seed Finite from Impulsive”按钮,则发动机模型会自动变成为有限推力模型,同时在停止
条件的发动机点火时间处会自动出现理论上对应速度增量的发动机点火时间。这样我们就不用手动
计算发动机点火的时间了。此功能会在后面的“目标序列”序列中非常有用,因为应用“微分改正
法”进行的非线性方程的求解对自变量初值选取的要求比较高,而给定理论上的最优值作为初值无
疑是一个好的选择。
2.4 发射段“Launch”
此段为模拟火箭发射段。给定地面上某一发射点,以及入轨点的参数,假设从地面垂直起飞,
经过光滑的弹道飞行直到入轨点满足。由于发射点和入轨点参数都是在地固坐标系中给出的,因此
此段通常用来模拟不同发射时刻和入轨参数对实际轨道任务的影响。
2.5 跟随段“Follow”
此段设定卫星跟随另一个目标物体的。通过“Leader”按钮可选择场景中的另一个目标物体,
通过选择跟随开始的时间和跟随结束的时间,在跟随过程中,卫星相对其“Leader”目标物体的体
轴坐标系中保持相对的位置不变,在分离时刻,此卫星继承其跟随目标物体的轨道根数。
此段经常用来设置从某一飞行器分离出去的子飞行器。在未分离前,子飞行器就可用“Follow”
段,这样,在分离的时刻,我们就不用手动设置子飞行器的初始轨道根数了,而是直接继承分离时
刻母飞行器的轨道根数。
2.6 保持段“Hold”
此段设定卫星从某一时刻起相对选定的坐标系保持静止不动。与跟随段不同的是,此段是指卫
星相对某一选定的坐标保持相对静止。也就是说,从保持段开始,首先计算此时卫星相对选定坐标
系的位置(姿态也可保持不变),其后,此卫星就保持此相对位置不变。
在跟随段中,无论之前段的轨道根数如何,一旦进入跟随段,则卫星的轨道根数立刻变得和被
跟随目标物体的轨道根数一致,分离的瞬间卫星的轨道根数和被跟随目标物体的轨道根数一致;而
在保持段中,一旦进入保持段,则卫星保持在初始时刻相对选定坐标系的位置不变,直至分离,分
离时刻卫星的轨道根数通过选定的坐标系下的相对位置在分离时刻计算得到。
2.7 更新段“Update”
此段用来更新卫星的燃料质量,结构质量等等。通常用于某一飞行器释放子飞行器,或者和另
一飞行器对接后质量的变化情况。由于质量变化会引起发动机有限推力点火的时间,因此,此段通
常是必不可少的。
2.8 序列段“Sequence”
此段用来组织包含一系列的段,其包含的段可为任一段类型。在实际运行中,STK 会按照序列
段里的顺序计算里面的各段。我们可以设置整个序列段计算的次数,当次数设置大于 1,实际上就
形成了一个循环。循环结束后,可以选择将序列段的初始状态或者末状态传递到下一段。
2.9 反序列段“Backward Sequence”
与序列段类似,此段用来包含一系列的段,实际运行时,按照其内部段的顺序挨个执行。唯一
不同的是,在运行每一段的过程中,都是按照时间相反的方向进行。例如,对于发动机工作段,若
设定的速度增加量,则实际运行为速度减少量;对于轨道外推段,会反向积分卫星的轨道。“发射段”
不可用,“初始状态段”和“更新状态段”保持原来的含义。
此段通常用来设计当已知某一状态,来反推之前的状态或者一系列的轨道机动。
2.10 目标序列段
此段有些类似“序列段”,其包含一系列的段。不同的是它可以根据设定的目标和自变量,利用
微分改正法(Differential Correction),自动调整设定的自变量的值,直至设定的约束量满足。对于轨
道机动任务来说,目标序列段是最重要的了。
简要来说完成某一目标序列段遵循的顺序:
首先,在目标序列段中按照卫星机动顺序添加各段,然后设定每段的属性参数;
其次,选中目标序列段,在其右方会出现目标序列段的参数设置选项,点击“Profiles”中的“New”
按钮添加目标文件(两种类型),见图表 4右侧,可添加多个目标文件。
当运行目标序列时,STK 会按照目标文件的顺序一个一个的执行目标文件。当执行“搜索文件”
时,会根据搜索文件中的设置,调整控制变量(自变量),直至约束量满足。当执行“段配置文件”
时,会根据段配置文件中的设置改变相应段的设置。
运行完所有的目标文件后,也就计算完成了目标序列中所有的段。
图表 4 目标序列段
2.10.1 目标文件(Profiles)
由上面简介可以得知,目标文件是目标序列段的核心内容,它控制着目标序列段的运行方式。
目标文件有两种类型,一种为搜索文件(Search Profiles),另一种为段配置文件(Segment Configuration
profiles),见图表 4右侧,其中“Differential Corrector”为搜索文件,其余六种皆为段配置文件。
a) 搜索文件(Search Profiles)
此文件分为两种,一种为微分改正法(Differential Corrector),另一种为用户自定义插件(Plugin)。
此处仅介绍微分改正法,用户自定义插件需要自己编程提供插件,比较复杂,这里暂不介绍。
当点击“New…”按钮添加搜索文件后,选中搜索文件,点击“Properties…”可打开此搜索文
件的属性设置页,见图表 5。
在“Variables”页面中设置自变量(Control Parameters)和等式约束量(Equality Constraints)。
其中自变量的设置是在各段中设置的。例如在目标序列段中的发动机工作段中,若选定瞬时冲量模
型(Impulsive),则在速度增量(Delta V Magnitude)旁出现“ ”标志,鼠标左键点击,则在上面
会出现 标志,表示着此变量将被作为搜索文件中的自变量,并且会出现在搜索文件属性页面中的
“Variables”中,作为自变量“Control Parameters”,见图表 5。也就是说目标序列段中所有的段,
只要有参数旁出现 标志,就意味着那个参数可以设定为微分改正的自变量。
至于等式约束量,其设定是由段的“Results…”选项设定的。例如,目标序列段中的轨道外推
段Propagate1,见图表 4左侧。如果我们想让轨道外推段Propagate1 结束时满足轨道高度为 300km和
平均轨道偏心率为 0.01,那么,首先选中Propagate1,然后点击下方的“Results…”来设置轨道外推
段Propagate1 结束时需要计算的“计算目标”,在弹出的页面中选择轨道高度和平均轨道偏心率,这
两项就会在等式约束量中出现,在“Desired Value”中分别设定 300km和 0.01,见图表 5。用此方法
可以设定目标序列段中的任意段对应的“计算目标”,并可作为等式约束量。
需要注意的是,无论是自变量还是等式约束量,只有当“Use”选项对应的方框选中后,对应的
量才真正有效,见图表 5。
图表 5 微分改正属性页
由上可知,当添加一个目标序列段的搜索文件时,首先需要设定自变量,然后根据任务需要,
设定对应段的“计算目标”,并作为等式约束量,那么在实际运行中,在执行搜索文件时,利用微分
改正法,不断的搜索新的自变量,以满足等式约束量,显然这是一个循环计算的过程,最后,如果
算法收敛,则对应的目标序列段的计算完成,自变量为收敛后的值,但从表面上看,各自变量的值
仍为原来的初值,只有当点击“Apply Changes”(见图表 4左图右上侧),收敛后的值才会替代自变
量初始设置的值。
由于微分改正法利用约束量对自变量的偏导数信息,因此偏导数的计算正确与否影响着算法的
收敛性,而计算偏导数所需要的自变量步长由“Perturbation”所决定,见图表 5。因此在实际应用
中,对应不同的自变量,读者需要自己设定合适的自变量步长以用于偏导数的计算,至于什么样的
步长为合适的全靠读者自己对轨道力学掌握的深浅了,如果算法不收敛,可以尝试设置不同的步长
重新计算。
b) 段配置文件(Segment Configuration profiles)
此种文件有六种,见图表 4右图。常用的有“Change Maneuver type”,当运行此配置文件时,
则将其设定的发动机工作段变为有限推力段。
2.11 返回段“Return”
此段用来返回到其父段
2.12 停止段“Stop”
此段用来终止其父段的运行,从而转入其父段的下一段。若此段没有父段,则整个 MCS 运行结
束。
2.13 自动序列段“Automatic Sequence”
此段类似序列段,包含一系列的段(可为任何段类型)。需要注意的是,此段并不是通过点击
“Insert”按钮添加的,而是通过点击“自动序列浏览器(Automatic Sequence Browser)”来建立一
系列的段的。
在轨道外推段中已经介绍到,“自动序列段”仅仅在轨道外推段中的停止条件中才能添加。因此,
从这个方面,我们可以看到,自动序列段实际上类似于一个子程序,但某一停止条件满足时,其对
应的自动序列段(若不为 STOP 的话)就会执行,自动序列段执行完毕后返回到轨道外推中继续计
算,直到另一停止条件满足,从而又触发其对应的自动序列段的执行。
3 关于段的一些说明
STK/Astrogator 中的 MCS 界面让我们可以轻松的以界面编程形式实现对飞行器进行轨道机动
任务的设置,复杂的飞行任务规划并不是按照时间顺序执行的,有可能设计到满足约束的最优化计
算,也有可能满足一定的条件从而进行一系列相同的轨道机动。所有的这些都可以通过 MCS 中各
段的相互组合而实现。
从程序语言上来理解各段,自动序列段就相当于一个子程序,当满足一定的停止条件时,某一
自动序列段被执行,就相当于不断的调用某子程序;而目标段用搜索文件来不断寻找自变量以求满
足一定的约束,就相当于“DO While”语句,只有当约束条件满足了,此目标段才能结束。
4 轨道机动组件浏览器(Astrogator Component Browser)
在前面的叙述中提到,我们可以自定义轨道外推的力模型,也可以自定义发动机的类型,或者
自定义“计算目标”,所有的这一切都在轨道机动组件里(Astrogator Component)定义,其打开方
式为:选中菜单栏“View”,在下拉菜单中选中“Astrogator Brower”,即可打开轨道机动组件浏览器。
见图表 6。
图表 6 轨道机动组件浏览器(Astrogator Component Browser)
在轨道机动组件浏览器里的组件,凡是可以复制的,都可以复制,然后修改相应的参数,重新
命名,从而成为自定义的组件。
5 参考文献
1) STK 8.1 英文说明文档
2) STK官方网站WWW.agi.com Home / Products / STK Product Suite / STK/Astrogator
3) UTH.ManeuverPlanningWithAstrogator.Berry.UC05.v4.ppt