feat: 初始化提交
This commit is contained in:
547
测试文件/动态着陆使用说明.md
Normal file
547
测试文件/动态着陆使用说明.md
Normal file
@@ -0,0 +1,547 @@
|
||||
# 动态着陆程序使用说明
|
||||
|
||||
## 概述
|
||||
|
||||
本程序实现了基于火箭性能的动态减速着陆算法,能够根据火箭的实时推重比(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)**,它具有:
|
||||
- 最智能的减速策略
|
||||
- 最佳的燃料效率
|
||||
- 水平控制功能
|
||||
- 防自转优化
|
||||
- 自动适应不同火箭配置
|
||||
|
||||
---
|
||||
|
||||
**祝您着陆成功!** 🚀
|
||||
Reference in New Issue
Block a user