13 KiB
13 KiB
动态着陆程序使用说明
概述
本程序实现了基于火箭性能的动态减速着陆算法,能够根据火箭的实时推重比(TWR)自动计算最佳减速时机,实现精准、高效的着陆。
核心特性
1. 动态减速时机计算
- 根据火箭实时 TWR 自动计算最佳减速时机
- 适应不同火箭配置和燃料状态
- 优化燃料使用效率
2. 动态目标速度(V3)
- 根据高度和性能实时计算最优目标速度
- 高空时允许快速下降
- 低空时逐渐减速
- 接近地面时达到着陆速度
3. 水平控制(V3)
- 主动修正水平速度
- 双环控制:位置环 + 速度环
- 确保火箭能够垂直着陆
4. 防自转优化(V3)
- 智能姿态控制策略
- 防止点火时自转浪费推力
- 在低速时使用稳定的参考系
核心原理
1. 推重比(TWR)计算
TWR = 推力 / (质量 × 重力加速度)
- TWR > 1:火箭能够减速
- TWR 越大,减速能力越强,可以更晚开始减速
2. 减速距离计算
使用运动学公式计算从当前速度减速到目标速度需要的距离:
v² = v₀² + 2 × a × d
解得:d = (v² - v₀²) / (2 × a)
其中:
- v₀:当前速度
- v:目标速度
- a:有效减速度 = g × (TWR - 1)
- d:需要的减速距离
3. 动态目标速度计算(V3)
根据当前高度和火箭性能,动态计算最优的目标速度:
v_target = -√(2 × a × h) × 安全系数
其中:
- a:最大减速度
- h:当前高度
- 安全系数:0.8(确保有足够的减速能力)
4. 水平控制(V3)
使用双环控制策略:
位置环:
目标水平速度 = 位置误差 × POS_KP
速度环:
倾角 = (目标水平速度 - 实际水平速度) × VEL_KP
版本对比
版本选择指南
| 版本 | 适用场景 | 特点 | 推荐度 |
|---|---|---|---|
| 动态着陆.py (V1) | 简单场景,燃料充足 | 使用当前TWR,计算快速 | ⭐⭐⭐ |
| 动态着陆v2.py (V2) | 复杂场景,燃料消耗显著 | 考虑燃料消耗和TWR变化 | ⭐⭐⭐⭐ |
| 动态着陆v3.py (V3) | 推荐使用 | 动态目标速度 + 水平控制 + 防自转 | ⭐⭐⭐⭐⭐ |
V1 - 基础版
文件: 动态着陆.py
特点:
- 使用当前 TWR 计算减速距离
- 简单直接,计算快速
- 适用于 TWR 变化不大的情况
配置参数:
TARGET_LANDING_VELOCITY = -2.0 # 目标着陆速度 (m/s)
SAFETY_MARGIN = 100.0 # 安全余量 (m)
MIN_TWR_FOR_BURN = 1.1 # 开始减速的最小TWR
适用场景:
- 火箭燃料充足,燃料消耗对 TWR 影响不大
- 需要快速响应,计算延迟敏感
- 火箭质量相对稳定
- 简单场景,不需要高精度
V2 - 进阶版
文件: 动态着陆v2.py
特点:
- 考虑燃料消耗导致的 TWR 变化
- 使用数值积分精确计算减速距离
- 预测燃烧过程中的质量变化
- 更精确,适用于燃料消耗显著的情况
配置参数:
TARGET_LANDING_VELOCITY = -2.0 # 目标着陆速度 (m/s)
SAFETY_MARGIN = 80.0 # 安全余量 (m)
MIN_TWR_FOR_BURN = 1.1 # 开始减速的最小TWR
PREDICTION_STEPS = 50 # 预测步数
适用场景:
- 火箭燃料消耗显著(燃料占比 > 30%)
- 需要高精度着陆
- 火箭 TWR 变化明显
- 复杂场景,需要精确控制
V3 - 智能版(推荐)
文件: 动态着陆v3.py
特点:
- 动态目标速度计算:根据高度和性能实时计算最优目标速度
- 水平控制:主动修正水平速度,确保垂直着陆
- 防自转优化:智能姿态控制,防止点火时自转浪费推力
- 最智能的减速策略
- 自动适应不同火箭配置
- 最佳的燃料效率
配置参数:
# 垂直控制参数
TARGET_LANDING_VELOCITY = -2.0 # 目标着陆速度 (m/s)
SAFETY_MARGIN = 100.0 # 安全余量 (m)
MIN_TWR_FOR_BURN = 1.1 # 开始减速的最小TWR
# 水平控制参数
POS_KP = 0.04 # 位置环增益
MAX_H_VEL = 15.0 # 最大水平速度
VEL_KP = 0.12 # 速度环增益
VEL_KI = 0.01
VEL_KD = 0.80
MAX_TILT = 0.50 # 最大倾角(弧度,约28.6度)
适用场景:
- 所有场景(推荐)
- 需要最佳燃料效率
- 需要最智能的减速策略
- 需要水平控制
- 自动适应不同火箭配置
使用方法
1. 准备工作
确保:
- KSP 游戏已启动
- kRPC 服务器已运行
- 火箭已发射并处于下降阶段
- 火箭有足够的燃料完成着陆
2. 运行程序
推荐使用 V3 版本:
python 动态着陆v3.py
其他版本:
# V1 - 基础版
python 动态着陆.py
# V2 - 进阶版
python 动态着陆v2.py
3. 程序输出(V3)
程序会实时输出以下信息:
- 高度(m)
- 垂直速度(m/s)
- 水平速度(m/s)
- 目标速度(m/s)
- 节流阀(0-1)
- TWR(推重比)
- 距离目标点的距离(m)
- 减速距离(m)
- 触发高度(m)
- 当前状态(自由落体/减速中)
示例输出(V3):
高度: 5000.0m | 垂直速: -150.0m/s | 水平速: 10.5m/s | 目标速: -200.0m/s | 节流阀: 0.00 | TWR: 1.50 | 距离: 500.0m | 减速距离: 500.0m | 触发高度: 600.0m | 自由落体
高度: 600.0m | 垂直速: -150.0m/s | 水平速: 5.2m/s | 目标速: -50.0m/s | 节流阀: 0.85 | TWR: 1.55 | 距离: 100.0m | 减速距离: 520.0m | 触发高度: 620.0m | 减速中
高度: 100.0m | 垂直速: -20.0m/s | 水平速: 1.5m/s | 目标速: -5.0m/s | 节流阀: 0.30 | TWR: 1.65 | 距离: 10.0m | 减速距离: 50.0m | 触发高度: 150.0m | 减速中
高度: 5.0m | 垂直速: -2.5m/s | 水平速: 0.2m/s | 目标速: -2.0m/s | 节流阀: 0.10 | TWR: 1.70 | 距离: 1.0m | 减速距离: 5.0m | 触发高度: 105.0m | 减速中
已着陆!
参数调整建议
1. 目标着陆速度(TARGET_LANDING_VELOCITY)
- 推荐值:-2.0 m/s
- 范围:-1.0 到 -5.0 m/s
- 影响因素:
- 起落架强度
- 地面硬度
- 精度要求
2. 安全余量(SAFETY_MARGIN)
- 推荐值:80-100 m
- V1:100 m(保守)
- V2/V3:100 m(更精确)
- 影响因素:
- 控制延迟
- 燃料消耗不确定性
- 大气扰动
3. 最小 TWR(MIN_TWR_FOR_BURN)
- 推荐值:1.1
- 范围:1.05 到 1.2
- 影响:
- 值越小,开始减速越早(更安全)
- 值越大,开始减速越晚(更高效)
4. 水平控制参数(V3)
位置环增益(POS_KP):
- 推荐值:0.04
- 范围:0.02 到 0.08
- 影响:
- 值越大,水平修正越快
- 值越小,水平修正越平滑
最大水平速度(MAX_H_VEL):
- 推荐值:15.0 m/s
- 范围:10.0 到 20.0 m/s
- 影响:
- 限制最大水平速度
- 防止过大的倾角
速度环参数(VEL_KP, VEL_KI, VEL_KD):
- 推荐值:VEL_KP=0.12, VEL_KI=0.01, VEL_KD=0.80
- 影响:
- 控制水平速度的响应速度和稳定性
最大倾角(MAX_TILT):
- 推荐值:0.50(约28.6度)
- 范围:0.30 到 0.70
- 影响:
- 限制最大倾角
- 防止过度倾斜
5. PID 参数
根据火箭特性调整:
轻型火箭(质量小,响应快):
SPEED_KP = 0.20
SPEED_KI = 0.08
SPEED_KD = 0.15
重型火箭(质量大,响应慢):
SPEED_KP = 0.10
SPEED_KI = 0.03
SPEED_KD = 0.08
算法优势
1. 自适应性强
- 根据实时 TWR 自动调整减速时机
- 适应不同火箭配置
- 适应不同燃料状态
2. 燃料效率高
- 不会过早开始减速(浪费燃料)
- 不会过晚开始减速(无法减速)
- 优化减速曲线
3. 安全可靠
- 内置安全余量
- TWR 检查机制
- 多重保护措施
4. 精度高
- 基于物理公式计算
- 考虑实际性能参数
- 实时反馈调整
5. 智能化(V3)
- 动态目标速度计算
- 水平控制
- 防自转优化
- 自动适应不同高度
- 最优减速策略
常见问题
Q1: 为什么火箭会提前开始减速?
可能原因:
- 安全余量设置过大
- 最小 TWR 设置过高
- 火箭实际推力低于预期
解决方法:
- 减小
SAFETY_MARGIN - 降低
MIN_TWR_FOR_BURN - 检查发动机配置
Q2: 为什么火箭会过晚开始减速?
可能原因:
- 安全余量设置过小
- 燃料消耗导致 TWR 变化未考虑
- 计算误差
解决方法:
- 增大
SAFETY_MARGIN - 使用 V2 或 V3 版本(考虑燃料消耗)
- 检查发动机参数
Q3: 为什么点火时火箭会自转?
可能原因:
- 使用了不稳定的参考系(
surface_velocity_reference_frame) - 速度很小时参考系不稳定
- 姿态控制逻辑不完善
解决方法:
- 使用 V3 版本(已内置防自转优化)
- 在低速时使用地表参考系
- 在减速阶段且高度较低时保持垂直
Q4: 如何提高着陆精度?
方法:
- 使用 V3 版本
- 调整 PID 参数
- 减小目标着陆速度
- 增加安全余量
- 优化水平控制参数
Q5: 如何节省燃料?
方法:
- 减小安全余量(在可接受范围内)
- 使用 V3 版本(最智能的减速策略)
- 优化减速曲线
- 提前部署刹车
Q6: 如何调整水平控制?
方法:
- 调整
POS_KP:控制位置环的响应速度 - 调整
MAX_H_VEL:限制最大水平速度 - 调整
VEL_KP, VEL_KI, VEL_KD:优化速度环性能 - 调整
MAX_TILT:限制最大倾角
Q7: V3 版本的优势是什么?
V3 版本的优势:
- 动态目标速度:根据高度和性能实时计算最优目标速度
- 水平控制:主动修正水平速度,确保垂直着陆
- 防自转优化:智能姿态控制,防止点火时自转浪费推力
- 最智能:自动适应不同火箭配置和飞行状态
- 最高效:最佳的燃料利用效率
- 最安全:多重安全机制和自适应策略
推荐使用 V3 版本!
技术细节
运动学公式
减速距离计算基于匀变速直线运动:
v² = v₀² + 2ad
其中:
- v:最终速度
- v₀:初始速度
- a:加速度(减速度为负)
- d:位移
有效减速度
考虑重力的影响:
有效减速度 = 推力加速度 - 重力加速度
= (推力 / 质量) - g
= g × (TWR - 1)
TWR 变化影响
随着燃料消耗:
- 质量减小
- TWR 增大
- 减速能力增强
- 可以更晚开始减速
V2 和 V3 版本通过数值积分考虑了这个变化。
动态目标速度(V3)
V3 版本使用动态目标速度算法:
v_target = -√(2 × a × h) × 安全系数
其中:
- a:最大减速度
- h:当前高度
- 安全系数:0.8
这个公式确保:
- 高空时允许快速下降
- 低空时逐渐减速
- 接近地面时达到着陆速度
防自转优化(V3)
V3 版本使用智能姿态控制策略:
- 低速或低高度时:使用地表参考系,保持垂直
- 减速阶段且高度较低时:使用地表参考系,应用水平控制
- 正在减速且节流阀较大时:使用速度反方向
- 其他情况:使用地表参考系,应用水平控制
这样可以防止在低速时使用速度参考系导致自转。
水平控制(V3)
V3 版本使用双环控制策略:
位置环:
目标水平速度 = 位置误差 × POS_KP
速度环:
倾角 = (目标水平速度 - 实际水平速度) × VEL_KP
这样可以实现:
- 主动修正水平速度
- 确保火箭能够垂直着陆
- 平滑的水平控制
扩展功能
可以添加的功能:
-
多阶段减速策略
- 高速段:大倾角减速
- 中速段:中等倾角
- 低速段:垂直着陆
-
目标点选择
- 支持多个预设着陆点
- 实时选择最优着陆点
-
自适应参数调整
- 根据着陆效果自动调整参数
- 机器学习优化
-
故障检测与恢复
- 发动机故障检测
- 备用着陆点选择
-
实时可视化
- 显示减速曲线
- 显示预测轨迹
- 显示性能参数
版本历史
- v1.0(动态着陆.py):基础版本,使用当前 TWR
- v2.0(动态着陆v2.py):进阶版本,考虑燃料消耗和 TWR 变化
- v3.0(动态着陆v3.py):智能版本,动态目标速度 + 水平控制 + 防自转优化(推荐)
参考资料
- kRPC 文档:https://krpc.github.io/krpc/
- Kerbal Space Program:https://www.kerbalspaceprogram.com/
- SpaceX 着陆技术:https://www.spacex.com/
总结
本程序提供了三个版本的动态着陆算法:
- V1(基础版):简单直接,适用于简单场景
- V2(进阶版):考虑燃料消耗,适用于复杂场景
- V3(智能版):动态目标速度 + 水平控制 + 防自转优化,推荐使用
推荐使用 V3 版本(动态着陆v3.py),它具有:
- 最智能的减速策略
- 最佳的燃料效率
- 水平控制功能
- 防自转优化
- 自动适应不同火箭配置
祝您着陆成功! 🚀