嫦娥三号软着陆轨道设计与控制策略
摘 要:
嫦娥三号卫星采用的是软着陆方式登陆月球,在卫星高速飞行的情况下,我们要精确地在月球预定区域内实现软着陆,需要对其运行轨道进行设计并制定相应控制策略。由于天体的运动均满足开普勒三大定律以及总能量守恒定律,我们据此建立一系列的方程,最终求得卫星在近月点处的速度大小Vab/(ac)*GM/a1.6922km/s 求得卫星在远月点处的速度大小Vbb/(ac)*GM/a1.6139km/s。其速度方向均为当前运动轨道的切方向。
嫦娥三号的软着陆过程又分为6个阶段,对每个阶段都要进行一定的控制。通过对数值的分析,我们制定如下策略:在主减速阶段,首先卫星的发动机应全部用于水平方向的减速,竖直方向以自由落体状态加速下降,直至竖直方向速度达到56.8505m/s,水平方向速度为4.9522m/s,耗费燃料90kg,卫星下落高度约为14695m。之后发动机推力仍以最大输出工作,其推力在竖直方向上瞬间产生约3752N的向上阻力,在水平方向上产生6494N的阻力,使得卫星在主减速的后半阶段在竖直方向开始匀速运动,水平方向继续做减速运动水平速度最终降为0,直至卫星降落到距月3000m高度处;在快速调整阶段,姿态发动机调整卫星的运动方向为竖直向下,主发动机继续工作,发动机在水平方向上产生1097N推力,竖直方向上产生3752N推力,使得卫星水平方向的速度降为0m/s,竖直方向继续以57m/s的速度做匀速运动;在粗避障阶段,卫星对其正下方月面进行拍照获得数字高程图,利用matlab软件对图像进行灰度色差分析,进而初略确定了一个着陆点的像素点坐标(193,1169),过程中,姿态发动机根据图像进行卫星的位置调整,主发动机用于竖直方向上的减速工作,使得卫星在距月100m处达到悬停状态;精避障阶段,进行更精细的月面拍摄,采用同粗避障段类似方法得到更精确的像素点坐标为(318,651),同时利用姿态发动机调整运动方向的同时主发动机工作对水平方向进行速度控制,使其在距月30m处水平速度为0m/s;缓慢下降阶段,发动对卫星竖直方向进行减速控制,使其在距月4m处合速度变为0m/s;在最后阶段,关闭发动机,使其做自由落体运动,最终成功着陆。
关键词:
软着陆 开普勒定理 优化控制 基于C语言编程
一、问题重述
嫦娥三号于2013年12月2日1时30分成功发射,12月6日抵达月球轨道。此次嫦娥三号采用的是软着陆方法。
但嫦娥三号在高速飞行的情况下,要保证准确地在月球预定区域内实现软着陆,关键问题是对着陆轨道与控制策略的设计。其着陆轨道设计的基本要求:着陆准备轨道为近月点15km,远月点100km的椭圆形轨道;着陆轨道为从近月点至着陆点,其软着陆过程共分为6个阶段,并要求满足每个阶段在关键点所处的状态,尽量减少软着陆过程的燃料消耗。
根据题目给出的已知量建立合适的模型求解分析下列几个问题:
(1)确定着陆准备轨道近月点和远月点的位置,以及嫦娥三号相应速度的大小与方向。
(2)确定嫦娥三号的着陆轨道和在6个阶段的最优控制策略。
(3)对设计的着陆轨道和控制策略做相应的误差分析和敏感性分析。
二、问题分析
本问题的一个关键点在于求解出嫦娥三号卫星的绕月运行轨道。由于已知卫星的运行轨迹为近月点15km,远月点100km的椭圆形轨道。
对于第一问的关键就是求解出该椭圆轨道与月球赤平面的夹角。由于已知落点的经纬度坐标和软着陆过程中6个状态的数值,我们就可以使用逆推法求解出着陆准备轨道近月点和远月点的经纬度坐标位置。由于卫星的运动满足开普勒三大定律以及能量守恒定律,我们可以根据这几大定律确定几个等式联立方程组从而求得嫦娥三号在近月点和远月点的相应速度大小与方向。
对于第二问,要设计一种方案使得在软着陆的过程中耗能最少,并达到预设的各项指标。我们需要不断的去设计、计算、调整,在不断的尝试摸索中寻找出一个比较不错的软着陆方案。
三、模型假设及符号约定
3.1 模型假设
2 (1) 假设卫星在主减速阶段的运动轨迹为抛物线
(2) 假设卫星在3000m处基本就处于目标地点的竖直上方 (3) 假设月球为球体
(4) 假设在近月点即将开始软着陆状态的前后速度基本不变
3.2 符号约定 符号
含义 G
引力常量
M
月球的质量
m(t)
t时刻卫星的质量 月球的半径
月球表面的重力加速度 r
g\'
Vi
ai
Si
Ei
Ti
Ft Ve i位置处卫星的速度大小 i方向的加速度
i位置处相对应的面积大小 i位置处卫星的能量 到i位置所用时间 t时刻发动机的推力 以m/s为单位的比冲 单位时间燃料消耗的质量 椭圆的半长轴 椭圆的半短轴 椭圆的焦点 m a
b
c
四、模型建立与求解
4.1 模型建立
4.1.1 问题1卫星轨道模型的建立
我们将嫦娥三号卫星绕月运行的椭圆轨道抽象出如下图所示的一个简单的几何图形,月球的月心位于椭圆的一个焦点F上,椭圆的半长轴为a,半短轴为b,半焦距为c。A点为近月点,速度为Va,B点为远月点,速度为Vb。易知A、B两点距月心的距离Laac,Lbac。在一个极小的时间段t内,卫星与月心连线扫过的面积分别为SaVa/2*t*La,SbVb/2*t*Lb。由开普勒第二定律可知,卫星与中心天体连线在单位时间内扫过的面积相等,所以SaSb,代入化简后可得公式(1)Vb(ac)/(ac)*Va;由于卫星运动的总机械能等于其动能和引力势能之和,所以在A点,卫星的总机械
3 能Ea1/2*mVa2(GMm/La) (公式2),同理B点的总机械能。卫星在运行过程中只有动能和引力势能Eb1/2*mVb2(GMm/Lb) (公式3)之间的转化,机械能守恒,所以EaEb (公式4)。[1] 由上面(1)(2)(3)(4)四个公式我们可以解得Vab/(ac)*GM/a,Vbb/(ac)*GM/a。
4.1.2 问题2卫星软着陆各阶段控制策略模型的建立
主减速段控制策略:
第一阶段,主减速发动机全力用于水平方向减速,竖直方向呈自由落体加速下落,至下落速度达到V1y (m/s)为止,用时记为T1,质量减少到M1;
V1yg\'*T1 (1) 当0tT1时,由Fm*Ve可得出下式,
tm(t)2400mdt024002.5510t (2) 三号卫星运行速度V水平方向分量为:
(3) 在0tT1内,卫星下落的高度ht0.5*g\'*t^2, 水平方向位移
t s(t)(170002940ln(2400)2940ln(24002.2210t))dt
(4) 第二阶段,竖直方向以V1y匀速下降,主减速发动机仍以最大推力工作,F(t)的竖直方向分力为m(t)*g\',水平方向分力为Fx(t)75002(m(t)*g\')2。
记第二阶段结束时刻,即距月面3000m时为T2,当T1tT2时,
m(t)24007500*t/294024002.5510t (5) 下落高度
4 h(t)0.5*g\'*T12V1y*(tT1) (6) 水平方向加速度
2ax(t)fx(t)/m(t)(75002(24002.5510*t)2*g\')/(24002.5510t) (7) 水平方向速度
ttVx(t)Vx(T1)T1222ax(s)dsVx(T1)(7500(24002.5510s)g\')/(24002.5510s)dsT1 1=Vx(T1)2.5510gg\'(24002.5510t)\'(24002.5510T1)(75002u2/u)du
17500=Vx(T1)(75002u27500ln2.5510t75002u2u
(9)
\'(24002.5510T1))gg\'(24002.5510t)(8) 水平方向位移 s(t)s(T1)快速调整段控制策略:
Vx(t)dt T1
在快速调整阶段,卫星仍然以Vyg\'*T157m/s的速度下落,水平方向推力逐渐减小到0,这样卫星的方向就正对目标下方了。
在tT2时,发动机给与卫星水平方向一个力Fx,使得其水平方向的速度最终降为0m/s;同时主发动机在竖直方向上也对卫星施加一个力,使其在竖直方向上做匀速运动。水平方向位移Sx(T3)V0T30.5*a*T3^2。
水平方向推力为Fx(t)m(t)*ax(t),合力为
gm1ve2tT2m(r)dr
两边对t求导得:
m\'(t)gm1ve2m(t)
再由tT2时,m(t)m(T2)得,当T2tT24.96时:
5
m(t)m(T2)exp(gm1ve2(tT2)
水平方向速度
vx(t)vx(T2)ax(r)drvx(T2)tT2T2t
水平方向位移
s(t)s(T2)vx(r)drs(T2)(vx(T2)T2)(tT2)0.5(t2T2)T2t2
(s(T24.96),15000)就是近月点坐标。
粗避障段控制策略:
以下步骤的实施均在matlab上实践,源代码见附录2 将抓拍到的图片利用matlab读入,求出图像平均灰度,以此来表示理想降落地点的高度。但通过比较发现平均灰度并不能代表理想地点高度,于是求出灰度众数average,作为理想降落高度。
然后新建图像,使新图像上的每点的灰度等于原图像对应点的灰度与灰度众数average的差的绝对值。于是新图像上灰度越高的点表示越不理想的点。(matlab运行效果图见附录3)
选取10 作为分界线,灰度值大于10的改为150,表示不理想的降落地点,灰度值小于10的改为0,表示理想的降落地点。将图片边界四周都像素点全部改为灰度150,表示不理想降落地点,因为越靠近图片边缘则越缺少信息。(matlab运行效果图见附录4) 接下去通过将不理想的点向四周扩散来逐渐覆盖全图,留下0.001的空隙时停止扩散,则此时剩余的空隙则为相对理想的降落地点,求出这些降落地点中离中心飞船最近的地点,作为最终降落地点。
最后我们分别绘制了覆盖率为0.7时的图像、覆盖率为0.99的图像、覆盖率为0.999的图像(分别件附录
5、
6、7)。
精避障段控制策略:
此阶段只是在粗壁障阶段的基础上对着落点做了一个更精确的定位,所以选点的原理同上。
4.2 模型求解 4.2.1 问题1
由题目已知,卫星近月点为15km,远月点为100km,据此我们可以得出下面一个等式c15(cr)100,求解得c9r/2 km。据此又可以导出椭圆的半长轴的大小acr15243/2*r,半短轴ba2c2。然后将a、b、c等数值代入模型中,便可以直接求出卫星在近月点的速度大小Va1.6922km/s,卫星在远月点的速度大小Vb1.6139km/s。
6
4.2.2 问题2 主减速阶段:
由天体运动黄金代换式GMR2g\',得出g\'GM/R21.6243m/s2 利用C语言编程使用迭代法搜索T1的值: 具体编程算法见附录1 Step 1 令t=T1, 下落高度 h(t)0.5*g\'*t^2, deltt=1 竖直方向速度Vy(t)g\'*t, 水平方向速度 (初始速度有第一问可知为1692m/s)
Vx(t)16922940ln(2400)2940ln(24002.2210t) 水平方向位移
S(t)(16922940ln(2400))tStep 2 令t=t+ deltt
29402.2210t(ulunuu)2400 24002.2210下落高度 h(t)0.5*g\'*T1^2Vy*(tT1) 竖直方向速度Vy(t)g\'*T1 水平方向速度由(8)式计算可得 水平方向位移
Step 3 如果h(t)120002641 and Vx(t)2 如果h(t)120002641 and Vx(t)step 1 如果h(t)120002641, then end
最后利用C语言编程解得
572Vy(t)2, then go to step
572Vy(t)2, then T1T11, goto T135s,h14695.85m,Vx4.9522m/s,Vy56.8505m/s。
从而我们可以得出,在主减速阶段,首先卫星的发动机的全部动力要用于卫星水平方向上的减速,竖直方向以自由落体状态加速下降,直至竖直方向速度达到56.8505m/s,水平方向速度为4.9522m/s,此时卫星的质量约为2310kg,耗费燃料90kg,卫星下落高度约为14695m。之后发动机推力仍以最大输出工作,其推力在竖直方向上瞬间产生约3752N的向上阻力,在水平方向上产生6494N的阻力,使得卫星在主减速的后半阶段在
7 竖直方向开始匀速运动,水平方向继续做减速运动水平速度最终降为0,直至卫星降落到距月3000m高度处。
快速调整阶段:
根据分运动的等时性,可以利用卫星竖直方向上的运动方程hV0t,求得卫星在快速调整阶段的最大用时th/V010.52s,从而根据水平方向的运动公式VVoa*t求得水平方向的最小加速度a0.475m/s。所以可以得出该过程中发动机在水平方向上的最小推动力Fxmin1097N,竖直方向上的推力Fxymg\'3752N,并求得水平位移S15234m。
五、模型评价与推广
5.1 模型评价
优点:本模型采用了化繁为简的方法,将复杂问题简单化,把卫星绕月运行抽象出一个椭圆的几何问题再结合物理模型利用数学方法求解相应的运动数值
缺点:本模型很多地方理想化,比如忽视了月球的扁率,卫星运行中姿态是变化的某些部分不应该用质点来处理
5.2 模型推广
利用本模型的算法可以求出任何天体在每个时刻的运行速度及其他物理量,方便研究天体运动,方便针对性的对需要探测的星球设计相应的卫星轨道。
六、参考文献
[1] 王健伟 李兴,近日点和远日点速度的两种典型求法,物理教师,第34卷第6期:58,2013
七、附录
附录1:
下面采用的是C语言程序来摸索求解T1的值(运行环境VC++ 6.0) 文件夹内find_t1.cpp文件
#include #include
8 #include #define g 1.6243
int main() {
int t,t1,deltt=1;
t=t1=4;
double h,vx,vy,compare,u1,u2;
h=0.5*g*t*t;
vx=1692-2940*log(2400)+2940*log(2400-2.2210*t);
vy=g*t;
while(1)
{
compare=sqrt(57*57-vy*vy);
if(hcompare)
{
t=t+deltt;
u1=g*(2400-2.5510*t1);
u2=g*(2400-2.5510*t);
vy=g*t1;
h=0.5*g*t1*t1+(t-t1)*vy;
vx=1692-2940*log(2400)+2940*log(2400-2.2210*t)-(1.0/2.5510)*(sqrt(7500*7500-u1*u1)+7500*log((7500-sqrt(7500*7500-u1*u1))/u1)-(sqrt(7500*7500-u2*u2)+7500*log((7500-sqrt(7500*7500-u2*u2))/u2)));
}
else if(h
{
t1++;
t=t1;
h=0.5*g*t*t;
vx=1692-2940*log(2400)+2940*log(2400-2.2210*t);
vy=g*t;
}
else if(h>12000+2641)
{
printf(\"t1=%d\\n\",t1);
printf(\"h=%lf\\n\",h);
printf(\"vx=%lf\\n\",vx);
9
printf(\"vy=%lf\\n\",vy);
break;
}
}
return 0; }
附录2:
big=imread(\'附件3 距2400m处的数字高程图\');
[m,n]=size(big);
notenum=[1:256];
for i=1:m; for j=1:n; notenum(big(i,j)+1)=notenum(big(i,j)+1)+1; end end
max=0; maxnum=0; for i=1:256; if max
big1=big; for i=1:m for j=1:n big1(i,j)=abs(int8(big1(i,j))-average); end end
big2=big1;
for i=1:m
10 for j=1:n if big2(i,j)>15 big2(i,j)=150; else big2(i,j)=0; end
end end
for i=1:m; big2(i,1)=150; end
for i=1:m; big2(i,m)=150; end
for j=2:n-1; big2(1,j)=150; big2(m,j)=150; end
for k=1:200 num=[m:n];
numsum=0; for i=1:m; for j=1:n; if big2(i,j)>20; num(i,j)=1; numsum=numsum+1; else num(i,j)=0; end
end end
if numsum/(m*n)>0.999 break end
for i=2:m-1; for j=2:n-1; sum=0; if num(i,j)==1; continue
11 else
for i1=-1:1; for i2=-1:1; if num(i+i1,j+i2)==1; sum=sum+1; end
end
end
if rand(1)*3
end
end end end
distance=[m,n]; for i=1:m; for j=1:n; if num(i,j)==0; distance(i,j)=(i-m/2)*(i-m/2)+(j-n/2)*(j-n/2); else distance(i,j)=m*m+n*n; end end end
min=m*m+n*n; mini=0; minj=0;
for i=1:m; for j=1:n; if num(i,j) == 0; if min > double(distance(i,j)); min=double(distance(i,j)) mini=i; minj=j; end end end end
附录3
12
附录4
13
附录5 覆盖率为0.7的图像
14
附录6 覆盖率为0.99的图像
15
附录7 覆盖率为0.999的图像
16
17