仿真模型可信度与在环验证¶
仿真可以低成本覆盖危险、稀有和重复场景,但仿真结果只在模型预定用途、假设和适用域内成立。

开始批量仿真、故障注入或相关性比较前,先完成数据采集、证据保全与可复现分析中的数据字典、随机种子、日志、环境和保留计划。
先写预定用途¶
模型预定用途回答:
- 支持哪项决策;
- 模拟哪些物理和软件边界;
- 需要多高精度;
- 使用哪些输入范围;
- 允许哪些简化;
- 哪些结论禁止外推。
用于检查失联状态机的模型,不一定适合预测螺旋桨效率;用于悬停的小扰动模型,不一定适合高速下降和碰撞。
模型验证与模型确认¶
- 模型验证(Model Verification):代码是否正确实现了概念模型和方程;
- 模型确认(Model Validation):模型是否在预定用途范围内充分代表真实系统。
模型验证可以检查:
- 方程、单位和坐标系;
- 数值解和收敛;
- 边界条件;
- 守恒关系;
- 代码测试;
- 与独立实现或解析解对照。
模型确认可以检查:
- 与台架或飞行数据的偏差;
- 关键趋势;
- 动态时延;
- 故障响应;
- 参数敏感性;
- 不确定度;
- 未覆盖工况。
模型代码无缺陷不等于模型足够真实。
在环层级¶
| 层级 | 典型组成 | 主要证据 |
|---|---|---|
| 模型在环(MIL,Model In The Loop) | 控制模型与被控对象模型 | 算法、状态和概念逻辑 |
| 软件在环(SIL,Software In The Loop) | 生成或生产软件与模型 | 软件实现和接口 |
| 软件在环(SITL,Software In The Loop) | 飞控程序在主机上闭环运行 | 飞控集成、状态机和任务 |
| 处理器在环(PIL,Processor In The Loop) | 目标处理器执行关键软件 | 数值、编译器和部分时序 |
| 硬件在环(HIL/HITL,Hardware In The Loop) | 真实控制器与实时仿真器 | 硬件接口、调度和闭环 |
| 实物台架/飞行 | 真实物理系统 | 模型未覆盖的物理证据 |
项目命名可能不同。记录实际信号从哪里注入、哪些模块被绕过,比只写缩写更重要。
接口保真度¶
核对:
- 信号单位;
- 坐标系;
- 端序和协议;
- 时间戳;
- 更新率;
- 延迟;
- 量化;
- 饱和;
- 丢包;
- 噪声;
- 故障状态;
- 启动和重连。
仿真接口直接写入估计器后的状态,与从原始传感器驱动注入,不属于相同覆盖。
时间保真度¶
仿真可能:
- 实时;
- 慢于实时;
- 快于实时;
- 固定步长;
- 可变步长;
- 锁步;
- 由消息到达驱动。
测试报告应记录仿真时间、墙上时间、步长、实时因子、超时实现和调度负载。加速仿真可能改变网络、超时和并发行为。
物理模型¶
多旋翼模型可能需要:
- 质量和惯量;
- 推力与转速关系;
- 电机和电调动态;
- 电池电压下降;
- 空气阻力;
- 地面效应;
- 传感器噪声、偏置和延迟;
- 风与湍流;
- 碰撞和接触;
- GNSS、磁场和气压环境。
参数来源、拟合数据和有效范围必须保存。无法识别的参数应进入不确定度或敏感性分析。
模型校准与确认数据分离¶
用同一组数据拟合模型再宣称模型吻合,会高估可信度。至少区分:
- 校准数据:估计参数;
- 确认数据:独立评价模型;
- 挑战数据:边界和异常工况。
数据量不足时可以交叉验证,但要说明相关性和限制。
相关性指标¶
根据预定用途比较:
- 稳态偏差;
- 上升、峰值和稳定时间;
- 频率、阻尼和相位;
- 轨迹误差;
- 事件顺序;
- 故障检测时间;
- 状态转换;
- 误差分布。
相关系数高不表示数值一致。两条曲线可以高度相关但存在不可接受偏倚。
敏感性与适用域¶
改变质量、惯量、推力、风、噪声和延迟,观察结论是否稳定。若小幅参数变化会反转结论,应:
- 获取更好参数;
- 限制适用域;
- 增加保护余量;
- 不用该模型关闭高风险要求。
模型适用域示例:
构型:四旋翼X
质量:阻断,范围未定义
速度:阻断,范围未定义
风:阻断,范围未定义
电压:阻断,范围未定义
地面效应:不支持
碰撞:不支持
用途:失联状态机和保守轨迹检查
禁止用途:结构载荷、螺旋桨效率和适航证明
关键性与接受决定¶
模型可信度要求应与决策后果匹配:
- 模型结果对决策影响越大;
- 错误结论后果越严重;
- 真实试验替代程度越高;
- 可用独立证据越少;
所需的验证、确认、不确定度和独立审查就越严格。
评审记录至少包含:
- 决策及错误决策后果;
- 模型对决策的影响程度;
- 关键性等级和依据;
- 能力评估;
- 结果评估;
- 定量接受阈值;
- 适用域和限制;
- 接受、有条件接受或拒绝决定;
- 授权技术负责人和时间。
“曲线看起来接近”不能替代正式接受准则。
故障注入¶
优先在模型环境测试:
- 传感器冻结、偏置和延迟;
- 遥控和数据链丢失;
- GNSS或磁航向不可用;
- 参数错误;
- 电池状态下降;
- 消息丢失、乱序和重放;
- 计算负载和任务超时;
- 节点重启。
每项故障要定义注入位置、开始时间、幅值、持续时间、恢复和预期状态。直接改最终状态变量可能绕过真实检测链。
四个平台¶
Betaflight 2026.6.2¶
固定源码中的主机测试、SITL目标和相关自动化入口用于检查算法与协议。未发现该固定版本由项目维护的通用真实飞控HITL程序;SITL_X_PLANE仍是主机模拟目标。不能把SITL目标写成HITL。
INAV 9.1.0¶
固定版本测试与SITL能力按官方仓库、文档和目标配置确认。固定文档说明SITL仍在开发,且不模拟全部I²C、SPI和外设。仓库中的X-Plane HITL说明依赖独立插件;插件、X-Plane、飞控和接口版本必须另行固定。
ArduPilot Copter 4.7.1¶
SITL和AutoTest可重复执行任务、模式和失效场景。官方HITL页面已经归档且标记为不再支持,其中的X-Plane/FlightGear范围不提供当前Copter HITL保证。Copter 4.7.1应以SITL和AutoTest作为官方自动化主路径。
PX4 v1.17.0¶
PX4提供SITL、部分HITL入口和基于MAVSDK的集成测试。v1.17文档明确指出HITL为社区维护,且HITL模式会绕过部分真实功能;不能只根据“真实飞控在运行”宣称完整硬件链已经验证。SIH页面同样标记为社区维护,且只明确较早版本已知可用,不能因页面位于v1.17文档树就宣称目标板组合已验证。
仿真证据包¶
预定用途:
决策和需求:
错误决策后果:
模型影响程度与关键性:
模型名称、版本和提交:
求解器、步长和实时因子:
硬件/软件在环边界:
接口注入点:
参数及来源:
假设与忽略项:
校准数据:
独立确认数据:
误差指标和判据:
敏感性:
适用域:
未覆盖风险:
能力评估与结果评估:
接受决定、限制和批准人:
检查理解¶
- 模型验证和模型确认分别检查什么?
- 为什么记录信号注入点比只写“HITL”更重要?
- 加速仿真为什么可能改变超时行为?
- 校准数据和确认数据为什么要分开?
- 模型适用域如何限制结论?