Experiment Design Principles 251230
🧪 火箭控制实验设计标准 - 基于 Rosetta 破坏性测试原则
🎯 实验设计的核心原则
罗塞塔方法的破坏性测试
学习路径:
理论模型 → 单变量测试 → 多变量测试 → 边界测试 → 真实场景
↓ ↓ ↓ ↓ ↓
建立认知 验证单因素 理解耦合 找到极限 工程实践
📊 3个实验的设计标准
实验1:PID 调参实验
设计标准:
- ✅ 单一变量原则:每次只改变一个参数(Kp/Ki/Kd)
- ✅ 对比原则:不同参数值的性能对比
- ✅ 可观测性:清晰的性能指标(超调、调节时间、稳态误差)
为什么选择这个实验?
| 标准 | 说明 | 符合情况 |
|---|---|---|
| 最小认知负荷 | 只需理解 PID 三个参数 | ✅ 每个参数独立测试 |
| 快速反馈 | 代码改动 < 5 行,运行 < 1 秒 | ✅ 即时可视化 |
| 对比明确 | 不同参数曲线在同一图 | ✅ 直接观察差异 |
成功标准:
✅ 能看到超调量随 Kp 增大而增大
✅ 能看到稳态误差随 Ki 增大而减小
✅ 能看到震荡随 Kd 增大而抑制
✅ 能理解"没有完美参数,只有权衡"
验证认知的方式:
假设:Kp 越大,响应越快
实验:绘制 Kp=[1000, 5000, 10000] 的曲线
观测:Kp=10000 时,超调 30%,震荡 5 次
结论:假设错误,Kp 过大会导致不稳定
修正认知:Kp 需要平衡速度和稳定性
实验2:传感器噪声实验
设计标准:
- ✅ 对比原则:有无滤波的并排对比
- ✅ 定量标准:用误差数值说话(±5m vs ±50m)
- ✅ 递进性:从理想情况(无噪声)→ 真实情况(有噪声)
为什么选择这个实验?
| 标准 | 说明 | 符合情况 |
|---|---|---|
| 展示问题严重性 | 对比图清晰显示漂移 | ✅ 无滤波误差累积到 ±50m |
| 理论联系实际 | 卡尔曼滤波 = 课上学过 | ✅ 从公式到代码 |
| 工程价值 | 真实 IMU 必须滤波 | ✅ SpaceX/Falcon 9 都用 EKF |
成功标准:
✅ 无滤波:位置误差 ±50m(10 秒内累积)
✅ 有滤波:位置误差 ±5m(收敛并保持)
✅ 能理解"积分导致漂移"
✅ 能理解"滤波 = 预测 + 校正"
破坏性测试:
测试 1:无噪声(理想)
结果:直接积分完美
测试 2:有噪声,无滤波(破坏)
结果:误差快速累积,5 秒后发散
测试 3:有噪声,有滤波(工程)
结果:误差收敛,稳定在 ±5m
认知:噪声不可避免,必须滤波
实验3:SpaceX 着陆复现
设计标准:
- ✅ 真实性:使用真实参数(Falcon 9 规格)
- ✅ 分阶段:高/中/低空三个阶段
- ✅ 工程约束:推力限制、燃料限制、几何约束
为什么选择这个实验?
| 标准 | 说明 | 符合情况 |
|---|---|---|
| 真实世界问题 | SpaceX 实际解决的 | ✅ 复用真实参数 |
| 多目标优化 | 高度 + 速度 + 姿态 + 燃料 | ✅ 需要权衡 |
| 验证理解程度 | 能否综合运用前两个实验 | ✅ PID + 滤波 + 轨迹 |
成功标准:
✅ 能够着陆(高度 > 0m)
✅ 软着陆(速度 < 2 m/s)
✅ 姿态垂直(角度 < 5°)
✅ 燃料足够(总推进剂 > 消耗)
边界测试:
测试 1:初始高度 50km(正常)
结果:成功着陆
测试 2:初始高度 30km(降低)
结果:着陆失败(速度过快)
原因:减速时间不够
测试 3:初始高度 70km(升高)
结果:着陆成功但燃料耗尽
原因:悬停时间过长
认知:存在最小/最大高度边界
🧪 实验设计的"破坏性测试"层级
层级1:单变量破坏(实验1)
目标:理解单个因素的影响
方法:控制变量法
示例:只改 Kp,其他不变
判断:能解释"为什么 Kp=10000 震荡"
层级2:多变量破坏(实验2)
目标:理解多个因素耦合
方法:并排对比(有无滤波)
示例:噪声 + 滤波器
判断:能解释"为什么无滤波漂移"
层级3:真实场景破坏(实验3)
目标:理解工程约束
方法:真实参数 + 边界测试
示例:不同初始高度
判断:能解释"为什么 30km 着陆失败"
📏 实验成功与否的判断标准
认知标准(最重要)
层级1:能解释现象(Why)
✅ "Kp 太大导致超调,因为系统惯性"
❌ "Kp=10000 不好"(只描述现象)
层级2:能预测结果(Prediction)
✅ "如果 Ki=0,会有稳态误差"
❌ "试试看"
层级3:能优化设计(Optimization)
✅ "为了减少超调,应该降低 Kp,增加 Kd"
❌ "随机调参"
定量标准
| 实验 | 定量指标 | 合格 | 优秀 |
|---|---|---|---|
| 实验1 PID | 超调量 | < 30% | < 10% |
| 调节时间 | < 10s | < 5s | |
| 稳态误差 | < 5% | < 1% | |
| 实验2 滤波 | 位置误差 | < 20m | < 5m |
| 收敛时间 | < 5s | < 2s | |
| 实验3 着陆 | 着陆精度 | ±10m | ±2m |
| 软着陆速度 | < 5 m/s | < 2 m/s | |
| 燃料剩余 | > 0% | > 10% |
🔄 实验之间的递进关系
实验1(PID)→ 建立控制基础认知
↓
理解:反馈控制 = 误差 → 控制力
↓
实验2(滤波)→ 加入真实世界约束
↓
理解:传感器有噪声,必须估计
↓
实验3(SpaceX)→ 综合应用到工程
↓
理解:多目标优化 + 约束处理
递进标准:
| 维度 | 实验1 | 实验2 | 实验3 |
|---|---|---|---|
| 复杂度 | 单变量(PID 参数) | 多变量(状态估计) | 多目标(轨迹+控制) |
| 真实度 | 理想模型 | 加噪声 | 真实参数 |
| 认知负荷 | 低(只懂控制) | 中(控制+估计) | 高(GNC 全流程) |
| 工程价值 | 理论学习 | 理解必要性 | 实际应用 |
💡 为什么不是其他实验?
❌ 没有选择的实验及其原因
| 可能实验 | 为什么没选 |
|---|---|
| 6-DOF 完整仿真 | 认知负荷过高,新手无法调试 |
| 硬件在环(HIL) | 需要硬件,门槛太高 |
| 混沌控制 | 理论太深,与工程脱节 |
| 多体动力学 | 涉及柔性体,过于复杂 |
✅ 选择这3个实验的理由
| 理由 | 说明 |
|---|---|
| 最小可运行 | Python 代码 < 200 行 |
| 最大启发 | 每个实验解决一个核心问题 |
| 循序渐进 | 从控制 → 估计 → 综合 |
| 可验证 | 有明确的成功/失败标准 |
🎓 如何判断自己是否"学会"
层级1:能解释(Understand)
提问:"为什么 Kp 太大会震荡?"
回答:"因为系统有惯性,过大控制力导致超调,超调后反向控制又导致反向超调"
→ ✅ 理解了惯性 + 反馈的关系
层级2:能预测(Predict)
提问:"如果 Ki=0,会怎样?"
回答:"会有稳态误差,因为积分项用于消除累积误差"
→ ✅ 理解了 I 项的作用
层级3:能设计(Design)
提问:"设计一个着陆控制,要求超调 < 5%"
回答:"Kp=3000, Ki=10, Kd=800,通过仿真验证满足要求"
→ ✅ 能根据需求设计参数
🚀 总结:实验设计的"三个一"标准
“三个一"原则:
一个核心问题:每个实验只解决一个核心问题
- 实验1:PID 参数如何影响性能
- 实验2:噪声如何影响状态估计
- 实验3:真实约束如何影响设计
一个明确对比:每个实验都有清晰的对照组
- 实验1:不同 Kp 值对比
- 实验2:有/无滤波对比
- 实验3:不同初始高度对比
一个可验证预测:每个实验都能做出预测并验证
- 实验1:“Kp 太大会超调” → 验证
- 实验2:“无滤波会漂移” → 验证
- 实验3:“高度太低会失败” → 验证
📚 参考标准
这些实验设计参考了:
控制理论教学标准(MIT 6.302 Feedback Systems)
- 从一阶系统开始
- 逐步增加复杂度
机器人学实验设计(CS223A Stanford)
- 理论 + 仿真 + 实践
- 有明确的性能指标
SpaceX 公开数据
- Falcon 9 用户手册
- 着陆视频数据分析
记住:实验设计的核心是可验证的认知升级
旧认知 → 实验 → 新认知
↓ ↓ ↓
"PID 神奇" 测试Kp "Kp 过大震荡"
↓ ↓ ↓
"调参靠感觉" 仿真 "调参有章法"
现在你理解了这3个实验的设计标准吗?