飞行器相对运动的主要动作包括:抵近、绕飞、伴飞、悬停等 ,其中绕飞还可以进一步分为自然绕飞、强迫绕飞。上一篇博文讲了抵近,这篇就讲一下绕飞。还是没有应用到STK与MATLAB互联,后续争取做个联合仿真的例子。
在讲仿真之前,先讲一下相对运动的坐标系定义。建立在目标星Target质心上的参考系,三个坐标轴分别是Intrack、Crosstrack、Radial,各自定义如下:
Radial轴(X):地心指向目标航天器质心的矢量,沿径向
Crosstrack轴(Z):目标航天器轨道面法向平行,沿法向
Intrack轴(Y):三个轴满足右手定则。与目标航天器运行速度方向平行,沿迹象。
首先,还是建立两个500km的太阳同步轨道,两者相位相差30°。chaser对target进行抵近,经过12小时,运动到Intrack 5km处。这部分的设置,请参照上篇博文,这里不再赘述。下面直接说绕飞设置:
(1)自然绕飞
按照C-W方程的解,如果选择合适的初始条件,相对运动轨迹是空间中的椭圆,长轴:短轴比为2:1。有想了解的同学可以自己学习一下,然后理解一下原理,这里我就不展开说了。
自然绕飞状态下,闭合的椭圆是在轨道面内的。这个效果其实是可以通过一次脉冲就可以达到,但是我还没有掌握初始条件设置,所以这次利用强迫绕飞呈现出自然绕飞的效果。
前面说到,绕飞轨迹在空间中可以是闭合的曲线—椭圆,坐标系已经给了。现在我们的位置是(0,0,5km),那么经过半个轨道周期,让chaser的位置到达(0,0,-5km),然后再经过半个轨道周期,回到(0,0,5km)。则实现完整的绕飞。
这里用一个比较笨的办法,先查看target的运行周期。利用一下互联代码吧:
uiap = actxGetRunningServer(‘STK11.application’);
root = uiap.Personality2;
sc = root.CurrentScenario;
sat = root.GetObjectFromPath(’*/Satellite/target’);
%然后利用DataProviders来计算
root.UnitPreferences.Item(‘DateFormat’).SetCurrentUnit(‘EpSec’);
satDat = sat.DataProviders.Item(‘Classical Elements’).Group().Item(‘ICRF’).ExecSingleElementsArray({0},{‘Period’});
T = cell2mat(satDP.GetArray(int32(0)));
经过计算为5677s,半个周期为:2385.5s
自然绕飞的设置如下:
raofei1_-5km优化设置参数如下,raofei1halfT = 2385.5s。自己设置raofei1_5km,这里就不给出了。注意:设置时要注意速度得最大步长,以及tolerance。如果选择的误差过大,则不会形成恰好闭合的曲线。
(2)强迫绕飞
自然绕飞,是通过调整轨道偏心率,自然的对Target形成绕飞。简单理解,就是两个卫星同周期,target是圆轨道,chaser是椭圆(则有远地点高度大于target轨道高度,近地点高度小于比target轨道高度),则运行一个轨道周期,chaser相对target的轨迹正好绕一个椭圆。
自然绕飞只能实现轨道面内绕飞,要想实现轨道面外绕飞得使用强迫绕飞。这里设置如下参数:
按CrossTrack,radial,Intrack顺序确定坐标
(-5km,0,0),(0,0,-5km),(5km,0,0),(0,0,5km)
通过设置4个Target Sequence段,就可以实现强迫绕飞。
各Target Sequence段,这里就不给出设置了。对了,qiangpot1=10min,这个时间可以自己设置,大家可以多尝试。最终的仿真效果如下图,其中浅蓝的椭圆为自然绕飞轨迹,红色为强迫绕飞轨迹。
当然强迫绕飞还可以设置其他点的坐标,比如
(-5km,0,0),(0,0,-5km),(-5km,0,0),(0,0,5km),就能生成如下的相对轨迹图。