跳转至

仿真模型可信度与在环验证

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

仿真可信度与在环层级

开始批量仿真、故障注入或相关性比较前,先完成数据采集、证据保全与可复现分析中的数据字典、随机种子、日志、环境和保留计划。

先写预定用途

模型预定用途回答:

  • 支持哪项决策;
  • 模拟哪些物理和软件边界;
  • 需要多高精度;
  • 使用哪些输入范围;
  • 允许哪些简化;
  • 哪些结论禁止外推。

用于检查失联状态机的模型,不一定适合预测螺旋桨效率;用于悬停的小扰动模型,不一定适合高速下降和碰撞。

模型验证与模型确认

  • 模型验证(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文档树就宣称目标板组合已验证。

仿真证据包

预定用途:
决策和需求:
错误决策后果:
模型影响程度与关键性:
模型名称、版本和提交:
求解器、步长和实时因子:
硬件/软件在环边界:
接口注入点:
参数及来源:
假设与忽略项:
校准数据:
独立确认数据:
误差指标和判据:
敏感性:
适用域:
未覆盖风险:
能力评估与结果评估:
接受决定、限制和批准人:

检查理解

  1. 模型验证和模型确认分别检查什么?
  2. 为什么记录信号注入点比只写“HITL”更重要?
  3. 加速仿真为什么可能改变超时行为?
  4. 校准数据和确认数据为什么要分开?
  5. 模型适用域如何限制结论?

主要参考