跳转至

六自由度火星省燃料动力下降

背景

在末段下降过程中,着陆器必须消除水平位置和速度误差,使推力方向与 机体姿态保持在安全包络内,并在不过度消耗推进剂的前提下直立着陆。 平移、姿态、质量消耗和推力矢量产生的力矩相互耦合,因此这是一个典型 的非线性制导问题。

本例规划从 100 m 高度开始、持续 16 秒的火星下降。姿态采用三维修正 罗德里格斯参数(MRP),而不是冗余四元数;较大的平移和推进量在配点 离散前还会进行尺度化。

刚体与推进模型

坐标按上、东、北排列。令 \(\boldsymbol r\)\(\boldsymbol v\) 为惯性系 位置和速度,\(m\) 为剩余质量,\(\boldsymbol p\) 为 MRP 向量, \(\boldsymbol\omega\) 为机体系角速度,\(\boldsymbol T_b\) 为机体系推力 指令。机体 \(x\) 轴沿发动机方向。

设机体系到惯性系旋转矩阵为 \(R(\boldsymbol p)\),有效排气速度为 \(v_e\), 机体惯量为 \(I_b\),发动机相对质心偏置为 \(\boldsymbol\rho_e\),则物理 动力学为

\[ \begin{aligned} \dot m&=-\frac{\lVert\boldsymbol T_b\rVert_2}{v_e},\\ \dot{\boldsymbol r}&=\boldsymbol v,\\ \dot{\boldsymbol v} &=\frac{R(\boldsymbol p)\boldsymbol T_b}{m} -g_M\boldsymbol e_u,\\ \dot{\boldsymbol p} &=\frac14\left[ (1-\boldsymbol p^{\mathsf T}\boldsymbol p)I +2[\boldsymbol p]_\times +2\boldsymbol p\boldsymbol p^{\mathsf T} \right]\boldsymbol\omega,\\ \dot{\boldsymbol\omega} &=I_b^{-1}\left[ \boldsymbol\rho_e\times\boldsymbol T_b -\boldsymbol\omega\times(I_b\boldsymbol\omega) \right]. \end{aligned} \]

MRP 先通过

\[ q_0=\frac{1-\lVert\boldsymbol p\rVert_2^2} {1+\lVert\boldsymbol p\rVert_2^2}, \qquad \boldsymbol q=\frac{2\boldsymbol p} {1+\lVert\boldsymbol p\rVert_2^2} \]

转换为旋转矩阵。这里的四元数分量只用于代数计算,并不是优化状态。

目标函数与端点条件

固定时域为 \(T=16\ \mathrm s\)。由于质量流率与推力幅值成正比,最小化 尺度化推力冲量等价于最小化推进剂消耗:

\[ \min J=\int_0^T \frac{\lVert\boldsymbol T_b(t)\rVert_2}{F_s}\,\mathrm dt, \qquad m(0)-m(T)=\frac{F_sJ}{v_e}, \qquad F_s=2000\ \mathrm N. \]

初始条件为

\[ \begin{aligned} m(0)&=2000\ \mathrm{kg},\\ \boldsymbol r(0)&=(100,30,-15)^{\mathsf T}\ \mathrm m,\\ \boldsymbol v(0)&=(-12,-4,2)^{\mathsf T}\ \mathrm{m/s},\\ \boldsymbol p(0)&=(0,0.04,-0.03)^{\mathsf T},\\ \boldsymbol\omega(0)&=\boldsymbol 0. \end{aligned} \]

着陆时质量自由,而位置、速度、姿态和角速度固定:

\[ \boldsymbol r(T)=\boldsymbol 0,\qquad \boldsymbol v(T)=(-0.5,0,0)^{\mathsf T}\ \mathrm{m/s},\qquad \boldsymbol p(T)=\boldsymbol 0,\qquad \boldsymbol\omega(T)=\boldsymbol 0. \]

因此端点是规定了较小垂直下降速度的接地状态,并不是零速悬停。

路径约束

物理限制为

\[ \begin{aligned} 1400&\le m(t)\le2000\ \mathrm{kg},\\ 4000&\le\lVert\boldsymbol T_b(t)\rVert_2\le30000\ \mathrm N,\\ T_{b,x}&\ge \cos(15^\circ)\lVert\boldsymbol T_b\rVert_2,\\ \sqrt{r_e^2+r_n^2}&\le\tan(30^\circ)r_u,\qquad r_u\ge0,\\ R_{ux}(\boldsymbol p)&\ge\cos(25^\circ),\\ \lVert\boldsymbol\omega\rVert_2&\le0.70\ \mathrm{rad/s},\\ \lVert\boldsymbol p\rVert_2&\le\tan(120^\circ/4). \end{aligned} \]

第三个不等式定义 \(15^\circ\) 发动机摆角锥,第四个定义着陆点上方的 \(30^\circ\) 下滑锥,\(R_{ux}\) 表示惯性系向上方向与机体 \(x\) 轴的对齐 程度。离散模型在节点处给最小推力增加 10 N 数值保护量,以抵消节点间 插值的轻微下探;密集验证仍使用 4000 N 物理下限。

变量、参数与单位

符号 含义 数值或单位
\(m\) 着陆器质量 kg
\(\boldsymbol r,\boldsymbol v\) 上-东-北位置和速度 m、m/s
\(\boldsymbol p\) 修正罗德里格斯姿态向量 无量纲
\(\boldsymbol\omega\) 机体系角速度 rad/s
\(\boldsymbol T_b\) 机体系推力矢量 N
\(g_M\) 火星重力加速度 \(3.711\ \mathrm{m/s^2}\)
\(v_e\) 有效排气速度 \(2250\ \mathrm{m/s}\)
\(I_b\) 机体惯量对角线 \((4000,2500,2500)\ \mathrm{kg\,m^2}\)
\(\boldsymbol\rho_e\) 发动机相对质心偏置 \((-1.5,0,0)\ \mathrm m\)

内部计算分别用 \(100\ \mathrm m\)\(10\ \mathrm{m/s}\)\(2000\ \mathrm{kg}\)\(2000\ \mathrm N\) 缩放长度、速度、质量与力; 输入数据、约束、诊断和图中标签仍全部使用 SI 单位。

建模选择与适用边界

MRP 是最小维姿态状态,不需要额外的四元数单位范数约束,但它只是局部 坐标;本例没有切换 MRP 影子集。把主姿态角限制在 \(120^\circ\) 内可使 整条轨迹远离 \(360^\circ\) 奇异点,所以该模型适合受控末段下降,不适合 翻滚进入过程。

模型假定重力、惯量和质心不变,使用一台理想可节流发动机,推力矢量可 瞬时变化,并省略气动力、羽流作用、地形变化、导航误差和不确定性。 结果是一条确定性的开环参考轨迹。默认离散为 \(40\times2\) Lobatto 网格。

运行示例

在仓库根目录运行:

python -m examples.rocket_powered_descent

保存图片且不打开窗口:

python -m examples.rocket_powered_descent --save rocket-powered-descent.png --no-show

验证结果

脚本在 4,001 个时刻重构物理状态与推力,检查接地位置、速度、姿态和 角速度,检查干质量、推力、摆角、倾角、下滑锥、高度、角速度和局部 姿态参数域边界,并核对推力冲量与质量消耗的一致性。

指标 默认求解值
飞行时间 \(16.000\ \mathrm s\)
推进剂消耗 \(62.219\ \mathrm{kg}\)
垂直接地速度 \(-0.500000\ \mathrm{m/s}\)
密集推力范围 \(4005.25\)\(30000.00\ \mathrm N\)
最大摆角 \(9.0869^\circ\)
最大机体倾角 \(11.4496^\circ\)
最小下滑锥余量 \(0.000000\ \mathrm m\)

下滑锥余量输出为零,表示局部最优轨迹的一部分贴着锥边界,并不表示 遗漏了约束。默认精度下,终端位置与速度误差分别必须小于其 SI 单位下 的 \(5\times10^{-5}\),密集路径检查必须小于 \(5\times10^{-4}\)

火星三维着陆轨迹、速度分量、机体倾角与发动机摆角、推力和剩余质量

源代码

完整可运行示例见: examples/rocket_powered_descent.py