# 动态着陆程序使用说明 ## 概述 本程序实现了基于火箭性能的动态减速着陆算法,能够根据火箭的实时推重比(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`](动态着陆.py) **特点:** - 使用当前 TWR 计算减速距离 - 简单直接,计算快速 - 适用于 TWR 变化不大的情况 **配置参数:** ```python TARGET_LANDING_VELOCITY = -2.0 # 目标着陆速度 (m/s) SAFETY_MARGIN = 100.0 # 安全余量 (m) MIN_TWR_FOR_BURN = 1.1 # 开始减速的最小TWR ``` **适用场景:** - 火箭燃料充足,燃料消耗对 TWR 影响不大 - 需要快速响应,计算延迟敏感 - 火箭质量相对稳定 - 简单场景,不需要高精度 ### V2 - 进阶版 **文件:** [`动态着陆v2.py`](动态着陆v2.py) **特点:** - 考虑燃料消耗导致的 TWR 变化 - 使用数值积分精确计算减速距离 - 预测燃烧过程中的质量变化 - 更精确,适用于燃料消耗显著的情况 **配置参数:** ```python 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`](动态着陆v3.py) **特点:** - **动态目标速度计算**:根据高度和性能实时计算最优目标速度 - **水平控制**:主动修正水平速度,确保垂直着陆 - **防自转优化**:智能姿态控制,防止点火时自转浪费推力 - 最智能的减速策略 - 自动适应不同火箭配置 - 最佳的燃料效率 **配置参数:** ```python # 垂直控制参数 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 版本:** ```bash python 动态着陆v3.py ``` **其他版本:** ```bash # 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 参数 根据火箭特性调整: **轻型火箭(质量小,响应快):** ```python SPEED_KP = 0.20 SPEED_KI = 0.08 SPEED_KD = 0.15 ``` **重型火箭(质量大,响应慢):** ```python 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: 如何提高着陆精度? **方法:** 1. 使用 V3 版本 2. 调整 PID 参数 3. 减小目标着陆速度 4. 增加安全余量 5. 优化水平控制参数 ### Q5: 如何节省燃料? **方法:** 1. 减小安全余量(在可接受范围内) 2. 使用 V3 版本(最智能的减速策略) 3. 优化减速曲线 4. 提前部署刹车 ### Q6: 如何调整水平控制? **方法:** 1. 调整 `POS_KP`:控制位置环的响应速度 2. 调整 `MAX_H_VEL`:限制最大水平速度 3. 调整 `VEL_KP, VEL_KI, VEL_KD`:优化速度环性能 4. 调整 `MAX_TILT`:限制最大倾角 ### Q7: V3 版本的优势是什么? **V3 版本的优势:** 1. **动态目标速度**:根据高度和性能实时计算最优目标速度 2. **水平控制**:主动修正水平速度,确保垂直着陆 3. **防自转优化**:智能姿态控制,防止点火时自转浪费推力 4. **最智能**:自动适应不同火箭配置和飞行状态 5. **最高效**:最佳的燃料利用效率 6. **最安全**:多重安全机制和自适应策略 **推荐使用 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 版本使用智能姿态控制策略: 1. **低速或低高度时**:使用地表参考系,保持垂直 2. **减速阶段且高度较低时**:使用地表参考系,应用水平控制 3. **正在减速且节流阀较大时**:使用速度反方向 4. **其他情况**:使用地表参考系,应用水平控制 这样可以防止在低速时使用速度参考系导致自转。 ### 水平控制(V3) V3 版本使用双环控制策略: **位置环:** ``` 目标水平速度 = 位置误差 × POS_KP ``` **速度环:** ``` 倾角 = (目标水平速度 - 实际水平速度) × VEL_KP ``` 这样可以实现: - 主动修正水平速度 - 确保火箭能够垂直着陆 - 平滑的水平控制 ## 扩展功能 可以添加的功能: 1. **多阶段减速策略** - 高速段:大倾角减速 - 中速段:中等倾角 - 低速段:垂直着陆 2. **目标点选择** - 支持多个预设着陆点 - 实时选择最优着陆点 3. **自适应参数调整** - 根据着陆效果自动调整参数 - 机器学习优化 4. **故障检测与恢复** - 发动机故障检测 - 备用着陆点选择 5. **实时可视化** - 显示减速曲线 - 显示预测轨迹 - 显示性能参数 ## 版本历史 - **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/ ## 总结 本程序提供了三个版本的动态着陆算法: 1. **V1(基础版)**:简单直接,适用于简单场景 2. **V2(进阶版)**:考虑燃料消耗,适用于复杂场景 3. **V3(智能版)**:动态目标速度 + 水平控制 + 防自转优化,推荐使用 **推荐使用 V3 版本(动态着陆v3.py)**,它具有: - 最智能的减速策略 - 最佳的燃料效率 - 水平控制功能 - 防自转优化 - 自动适应不同火箭配置 --- **祝您着陆成功!** 🚀