六自由度火星省燃料动力下降¶
背景¶
在末段下降过程中,着陆器必须消除水平位置和速度误差,使推力方向与 机体姿态保持在安全包络内,并在不过度消耗推进剂的前提下直立着陆。 平移、姿态、质量消耗和推力矢量产生的力矩相互耦合,因此这是一个典型 的非线性制导问题。
本例规划从 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\),则物理 动力学为
MRP 先通过
转换为旋转矩阵。这里的四元数分量只用于代数计算,并不是优化状态。
目标函数与端点条件¶
固定时域为 \(T=16\ \mathrm s\)。由于质量流率与推力幅值成正比,最小化 尺度化推力冲量等价于最小化推进剂消耗:
初始条件为
着陆时质量自由,而位置、速度、姿态和角速度固定:
因此端点是规定了较小垂直下降速度的接地状态,并不是零速悬停。
路径约束¶
物理限制为
第三个不等式定义 \(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 网格。
运行示例¶
在仓库根目录运行:
保存图片且不打开窗口:
验证结果¶
脚本在 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。