Files
krpc-auto-landing/测试文件/动态着陆使用说明.md
2026-01-30 18:50:52 +08:00

548 lines
13 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 动态着陆程序使用说明
## 概述
本程序实现了基于火箭性能的动态减速着陆算法能够根据火箭的实时推重比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**
- V1100 m保守
- V2/V3100 m更精确
- 影响因素:
- 控制延迟
- 燃料消耗不确定性
- 大气扰动
### 3. 最小 TWRMIN_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 Programhttps://www.kerbalspaceprogram.com/
- SpaceX 着陆技术https://www.spacex.com/
## 总结
本程序提供了三个版本的动态着陆算法:
1. **V1基础版**:简单直接,适用于简单场景
2. **V2进阶版**:考虑燃料消耗,适用于复杂场景
3. **V3智能版**:动态目标速度 + 水平控制 + 防自转优化,推荐使用
**推荐使用 V3 版本动态着陆v3.py**,它具有:
- 最智能的减速策略
- 最佳的燃料效率
- 水平控制功能
- 防自转优化
- 自动适应不同火箭配置
---
**祝您着陆成功!** 🚀