欢迎光临散文网 会员登陆 & 注册

迭代制导真空单级定点着陆原理【1】

2023-08-07 21:22 作者:咆哮鼠啊啊啊  | 我要投稿

前言

上篇文章简单介绍了迭代制导真空单级定点着陆的计算流程,从这篇开始我要做原理讲解,从头开始推导,无论是否看过上篇文章都不会影响你无法理解这篇文章

求求各位观众给上篇和这篇点个赞投个币吧,b站专栏不是Markdown,手打公式遇到一堆bug真的很累人,也求求b站好好优化一下公式输入,点击确定不仅公式没出现,文字被删掉一大堆实在是太折磨人了

上篇链接:

这篇文章主要介绍最优化控制方法求解一个简化的定点着陆问题

我不是自动化或者航天相关专业的,全靠听过几节现代控制论的网课读懂论文加以复现,不保证正确,如有错误还请指正


物理量

%5Cvec%7Br%7D%2Cx%2Cy%2Cz:初始位置

%5Cvec%7Br%7D_f%2Cx_f%2Cy_f%2Cz_f:设定的终端位置

%5Cvec%7Bv%7D%2Cv_x%2Cv_y%2Cv_z:初始速度

%5Cvec%7Bv%7D_f%2Cv_%7Bfx%7D%2Cv_%7Bfy%7D%2Cv_%7Bfz%7D:设定的终端速度

%5Cvec%7Ba%7D%2Ca_x%2Ca_y%2Ca_z:加速度

%5Cvec%7Bu%7D%2Cu_x%2Cu_y%2Cu_z:推力方向单位矢量(和上篇不同,不是推力矢量)

u:由u_x%2Cu_y%2Cu_z六元矢量

X:运动状态矢量

X_0%2CX_f:初始、终端运动状态矢量

t:已飞行时间

t_f:终端时间

m:质量

T:引擎推力

%5Cvarphi%2C%5Cpsi:姿态角

姿态角说明

推力的方向矢量%5Cvec%7Bu%7D向xy平面做投影%5Cvec%7Bu%7D_%7Bxy%7D

%5Cpsi是从%5Cvec%7Bu%7D_%7Bxy%7D%5Cvec%7Bu%7D的夹角,以向z轴正方向为

%5Cvarphi是从x轴到%5Cvec%7Bu%7D_%7Bxy%7D到夹角,以向y轴正方向为正

与习惯意义上的俯仰和偏航有区别,注意区分

老图,下篇文章也会见面,phi和psi与常见俯仰角偏航角定义不同,注意区分

问题描述

在自由空间(无重力)中,已知火箭的初始位置%5Cvec%7Br%7D和速度%5Cvec%7Bv%7D,火箭推力固定为T,通过调整推力的方向,使火箭最终满足终端速度%5Cvec%7Bv%7D_f以及终端位置中的两个分量y_f%2Cz_f,并尽可能减少燃料的消耗

补充说明:

为了方便计算,这里我们把火箭当作一个质点,推力可以瞬间从一个方向换到另一个方向

对于推力固定的问题,完全约束火箭的终端位置和速度,是难以求解的,需要放松一个方向的位置约束

通过调整坐标系,让坐标系的一个轴与放松约束的方向相同,更加便于计算


状态方程

我更喜欢叫它演化方程,状态方程的具体形式比较难懂,先把它的原型也就是物理原理写上来

%5Cvec%7Bu%7DT%20%3D%20m%5Cvec%7Ba%7D

没错,是牛顿第二定律,后面状态方程的具体形式虽然和这个极其简洁的牛顿第二定律之间有不小的区别,但一定不要忘了他们其实是一回事

牛顿第二定律是关于%5Cvec%7Br%7D%3D%5Br_x%2Cr_y%2Cr_z%5D%5ET的二阶微分方程,数学上不太好算,我们换一个思路

这里先抛出来一个问题:假如已知火箭全程受到的推力信息%5Cvec%7Bu%7D(t)T,现在选择火箭飞行中某一时刻t_k,请你选择一组这一时刻的物理量X(t_k),能够根据这组物理量X(t_k)和推力信息%5Cvec%7Bu%7D(t)T,推算出这些物理量所有时刻的取值X(t)

我们首先考虑只要位置信息%5Cvec%7Br%7D%3D%5Br_x%2Cr_y%2Cr_z%5D%5ET是否足够。做个简单的思想实验,比如给一个飞行的网球拍一张照片,虽然你知道网球持续受到竖直向下的重力,但你无法判断球从哪里飞来,向哪飞去;我们再把速度%5Cvec%7Bv%7D%3D%5Bv_x%2Cv_y%2Cv_z%5D%5ET也加进来,这样从力到加速度、从加速度到速度、从速度到位置之间的关系就全都能描述清楚。所以知道位置%5Cvec%7Br%7D%3D%5Bx%2Cy%2Cz%5D%5ET和速度%5Cvec%7Bv%7D%3D%5Bv_x%2Cv_y%2Cv_z%5D%5ET一共6个分量是确定火箭在三维空间里运动状态的必要条件

如果不知道球的速度矢量,你无法分辨这个网球到底是飞向球拍还是远离球拍

这样我们把位置和速度合并成一个含有6个元素的状态矢量X%3D%5Bv_x%2Cx%2Cv_y%2Cy%2Cv_z%2Cz%5D%5ET,让它在t%3D0t%3Dt_f分别为X_0%2CX_f,让它对时间求导%5Cdot%7BX%7D%3D%5Ba_x%2Cv_x%2Ca_y%2Cv_y%2Ca_z%2Cv_z%5D%5ET我们不急着把%5Cvec%7Ba%7D带进去,再拆解一下

%5Cdot%7BX%7D%3D%0A%5Cbegin%7Bbmatrix%7D%0Aa_x%5C%5Cv_x%5C%5Ca_y%5C%5Cv_y%5C%5Ca_z%5C%5Cv_z%0A%5Cend%7Bbmatrix%7D%0A%3D%0A%5Cbegin%7Bbmatrix%7D%0A0%5C%5Cv_x%5C%5C0%5C%5Cv_y%5C%5C0%5C%5Cv_z%0A%5Cend%7Bbmatrix%7D%0A%2B%0A%5Cbegin%7Bbmatrix%7D%0Aa_x%5C%5C0%5C%5Ca_y%5C%5C0%5C%5Ca_z%5C%5C0%0A%5Cend%7Bbmatrix%7D

这里拆解出来的两项中,第一项可以写成一个矩阵A和状态矢量X相乘的形式

%5Cbegin%7Bbmatrix%7D%0A0%5C%5Cv_x%5C%5C0%5C%5Cv_y%5C%5C0%5C%5Cv_z%0A%5Cend%7Bbmatrix%7D%0A%3D%0A%5Cbegin%7Bbmatrix%7D%0A0%260%260%260%260%260%5C%5C%0A1%260%260%260%260%260%5C%5C%0A0%260%260%260%260%260%5C%5C%0A0%260%261%260%260%260%5C%5C%0A0%260%260%260%260%260%5C%5C%0A0%260%260%260%261%260%5C%5C%0A%5Cend%7Bbmatrix%7D%0A%5Cbegin%7Bbmatrix%7D%0Av_x%5C%5Cx%5C%5Cv_y%5C%5Cy%5C%5Cv_z%5C%5Cz%0A%5Cend%7Bbmatrix%7D

第二项直接带入牛顿第二定律

%5Cbegin%7Bbmatrix%7D%0Aa_x%5C%5C0%5C%5Ca_y%5C%5C0%5C%5Ca_z%5C%5C0%0A%5Cend%7Bbmatrix%7D%0A%3D%20%5Cfrac%7BT%7D%7Bm%7D%0A%5Cbegin%7Bbmatrix%7D%0Au_x%5C%5C0%5C%5Cu_y%5C%5C0%5C%5Cu_z%5C%5C0%0A%5Cend%7Bbmatrix%7D%0A%3D%5Cfrac%7BT%7D%7Bm%7D%0A%5Cbegin%7Bbmatrix%7D%0A%5Ccos%5Cvarphi%5Ccos%5Cpsi%5C%5C0%5C%5C%5Csin%5Cvarphi%5Csin%5Cpsi%5C%5C0%5C%5C-%5Csin%5Cpsi%5C%5C0%0A%5Cend%7Bbmatrix%7D

好的我们把上面的内容整理一下

%5Cbegin%7Balign%7D%0A%5Cdot%7BX%7D%3Df(X%2Cu%2Ct)%3DAX%2BBu%20%5C%5C%0A%5Cend%7Balign%7D

%0AA%20%3D%20%0A%5Cbegin%7Bbmatrix%7D%0A0%260%260%260%260%260%5C%5C%0A1%260%260%260%260%260%5C%5C%0A0%260%260%260%260%260%5C%5C%0A0%260%261%260%260%260%5C%5C%0A0%260%260%260%260%260%5C%5C%0A0%260%260%260%261%260%5C%5C%0A%5Cend%7Bbmatrix%7D%2C%0AX%3D%0A%5Cbegin%7Bbmatrix%7D%0Av_x%5C%5Cx%5C%5Cv_y%5C%5Cy%5C%5Cv_z%5C%5Cz%0A%5Cend%7Bbmatrix%7D%2C%0AB%3D%5Cfrac%7BT%7D%7Bm%7D%2C%0Au%3D%0A%5Cbegin%7Bbmatrix%7D%0A%5Ccos%5Cvarphi%5Ccos%5Cpsi%5C%5C0%5C%5C%5Csin%5Cvarphi%5Csin%5Cpsi%5C%5C0%5C%5C-%5Csin%5Cpsi%5C%5C0%0A%5Cend%7Bbmatrix%7D

这就是状态方程

文字太多了,插张图休息一下眼睛


最优控制

接下来的部分涉及现代控制论,深入的讲会有泛函变分的东西,这里直接给出结论

在这个问题里,最优控制的数学描述是

%5Cbegin%7Balign%7D%0A%5Cmin_%7B%7Bu%7D(t)%7DJ%26%3D%5Cint_0%5E%7Bt_f%7Ddt%20%5C%5C%0As.t.%20%5C%20%5Cdot%7BX%7D(t)%26%3Df(X%2Cu%2Ct)%2C%20%5C%20X(t%3D0)%3DX_0%2CX(t%3Dt_f)%3DX_f%0A%5Cend%7Balign%7D

第一行的含义是,通过调整u(t)的形式,让燃烧时间尽可能减少(由于我们设定火箭是固定推力,所以燃烧时间越短越省燃料),注意积分号里面被积分的L(X%2Cu%2Ct)%3D1

第二行是需要满足的约束,包括状态演化(第一个等式)和初始、终端条件(第二、三个等式)

这里我们设一个待定的变量%5Clambda%3D%5B%5Clambda_%7Bvx%7D%2C%5Clambda_%7Bx%7D%2C%5Clambda_%7Bvy%7D%2C%5Clambda_y%2C%5Clambda_%7Bvz%7D%2C%5Clambda_z%5D%5ET,不需要知道%5Clambda的取值,它只是用于计算的工具。构建H函数

%5Cbegin%7Balign%7D%0AH%26%3DL(X%2Cu%2Ct)%2B%5Clambda%5ETf(X%2Cu%2Ct)%20%5C%5C%0A%26%3D1%2B%5Cfrac%7BF%7D%7Bm%7D(%5Clambda_%7Bvx%7D%5Ccos%5Cvarphi%5Ccos%5Cpsi%2B%5Clambda_%7Bvy%7D%5Csin%5Cvarphi%5Ccos%5Cpsi%2B%5Clambda_%7Bvz%7D%5Csin%5Cpsi)%2B%5Clambda_xv_x%2B%5Clambda_yv_y%2B%5Clambda_zv_z%0A%5Cend%7Balign%7D

H函数也只是计算用的工具,并不需要特别关注。满足最优控制时,H满足

%5Cfrac%7B%5Cpartial%20H%7D%7B%5Cpartial%5Cvarphi%7D%3D%5Cfrac%7B%5Cpartial%20H%7D%7B%5Cpartial%5Cpsi%7D%3D0

展开得到

%5Cbegin%7Balign%7D%0A%5Clambda_%7Bvx%7D%5Csin%5Cvarphi%5Ccos%5Cpsi-%5Clambda_%7Bvy%7D%5Ccos%5Cvarphi%5Ccos%5Cpsi%26%3D0%20%5C%5C%0A%5Clambda_%7Bvx%7D%5Ccos%5Cvarphi%5Csin%5Cpsi%2B%5Clambda_%7Bvy%7D%5Csin%5Cvarphi%5Csin%5Cpsi%2B%5Clambda_%7Bvz%7D%5Ccos%5Cpsi%26%3D0%0A%5Cend%7Balign%7D(1)


这个方程(1)先放在这里,后面会用

回到H函数,无论是否达到最优控制,H函数本身还有一个特殊的性质

%5Cdot%7B%5Clambda%7D%3D-%5Cfrac%7B%5Cpartial%20H%7D%7B%5Cpartial%20X%7D

这样能解得

%5Cleft%5C%7B%0A%5Cbegin%7Balign%7D%0A%5Cdot%7B%5Clambda_x%7D%26%3D%5Cdot%7B%5Clambda_y%7D%3D%5Cdot%7B%5Clambda_z%7D%3D0%5C%5C%0A%5Cdot%7B%5Clambda%7D_%7Bvx%7D%26%3D-%5Clambda_x%5C%5C%0A%5Cdot%7B%5Clambda%7D_%7Bvy%7D%26%3D-%5Clambda_y%5C%5C%0A%5Cdot%7B%5Clambda%7D_%7Bvz%7D%26%3D-%5Clambda_z%0A%5Cend%7Balign%7D%0A%5Cright.

做个积分

%5Cleft%5C%7B%0A%5Cbegin%7Balign%7D%0A%5Clambda_%7Bvx%7D%26%3D%5Clambda_%7Bvx0%7D-%5Clambda_%7Bx0%7Dt%5C%5C%0A%5Clambda_%7Bvy%7D%26%3D%5Clambda_%7Bvy0%7D-%5Clambda_%7By0%7Dt%5C%5C%0A%5Clambda_%7Bvz%7D%26%3D%5Clambda_%7Bvz0%7D-%5Clambda_%7Bz0%7Dt%5C%5C%0A%5Clambda_%7Bx%7D%26%3D%5Clambda_%7Bx0%7D%5C%5C%0A%5Clambda_%7By%7D%26%3D%5Clambda_%7By0%7D%5C%5C%0A%5Clambda_%7Bz%7D%26%3D%5Clambda_%7Bz0%7D%0A%5Cend%7Balign%7D%0A%5Cright.

这里下标带0的都是与时间无关的积分常量

前面提到了在x方向不做约束,所以上面的方程里让%5Clambda_%7Bx0%7D%3D0,那么%5Clambda_%7Bvx%7D%3D%5Clambda_%7Bvx0%7D,得到

%5Cleft%5C%7B%0A%5Cbegin%7Balign%7D%0A%5Clambda_%7Bvx%7D%26%3D%5Clambda_%7Bvx0%7D%5C%5C%0A%5Clambda_%7Bvy%7D%26%3D%5Clambda_%7Bvy0%7D-%5Clambda_%7By0%7Dt%5C%5C%0A%5Clambda_%7Bvz%7D%26%3D%5Clambda_%7Bvz0%7D-%5Clambda_%7Bz0%7Dt%5C%5C%0A%5Clambda_%7By%7D%26%3D%5Clambda_%7By0%7D%5C%5C%0A%5Clambda_%7Bz%7D%26%3D%5Clambda_%7Bz0%7D%0A%5Cend%7Balign%7D%0A%5Cright.(2)

现在联立(1)(2),能得到

%5Cbegin%7Balign%7D%0A%5Ctan%5Cvarphi%26%3D%5Cfrac%7B%5Clambda_%7Bvy0%7D-%5Clambda_%7By0%7Dt%7D%7B%5Clambda_%7Bvx0%7D%7D%20%5C%5C%0A%5Ctan%5Cpsi%26%3D%5Cfrac%7B%5Clambda_%7Bvz%7D-%5Clambda_%7Bz0%7Dt%7D%7B%5Clambda_%7Bvx0%7D%5Ccos%5Cvarphi%2B(%5Clambda_%7Bvy0%7D-%5Clambda_%7By0%7Dt)%5Csin%5Cvarphi%7D%0A%5Cend%7Balign%7D


这就是满足初末约束时,最省燃料的姿态变化公式的具体形式

这些公式中的参数需要根据初末状态约束求解,不过在这之前,不要忘了我们求解的是一个经过大量简化的问题,其中和现实情况最大的区别就是没有引力,至于这些问题怎么解决,我们放到下篇文章说

我的一点困惑

写到状态方程时我就遇到了这个问题,火箭不是网球,在飞行的过程中是有持续的质量减少的。如果一定要求,能根据某一时刻的状态矢量,计算出任意时刻的状态矢量,那么质量m和质量消耗率%5Cdot%7Bm%7D出现在状态方程的XA里是不可避免的。我查了不少资料,但其中用到变化质量的部分,都是后面计算姿态变化公式中的常量时,用到的齐奥尔科夫斯基公式里才出现的,而在前面使用最优控制求解姿态变化公式部分,都没有明确说用的到底是变质量还是恒定质量。这里还需请各位路过的大佬解答一下,感激不尽

参考资料

[1] 丁文浩. 月球探测器动力下降段制导控制方法研究[D].哈尔滨工业大学,2022.

[2] 李伟. 基于精确控制解的运载火箭迭代制导自适应性分析研究[D]. 哈尔滨工业大学, 2012.

[3] oPengLuo. 迭代制导总结. https://blog.csdn.net/qq_25777815/article/details/91858142

迭代制导真空单级定点着陆原理【1】的评论 (共 条)

分享到微博请遵守国家法律