RflySim PHM-故障注入与健康评估接口库¶
RflySim PHM(Prognostics and Health Management)库提供了一套完整的故障注入与健康评估工具,支持对无人机各类硬件故障进行建模、注入和评估,用于验证飞控系统的容错能力和故障处理性能。
模块列表¶
动力系统故障¶
| 模块 | 功能描述 |
|---|---|
| Motor Fault | 电机故障注入,支持电机效率下降、卡死、停转等故障模式 |
| Prop Fault | 螺旋桨故障注入,支持桨叶损伤、脱落、效率下降等故障 |
| Battery Fault | 电池故障注入,支持电压跌落、容量衰减、内阻增大等故障 |
环境干扰故障¶
| 模块 | 功能描述 |
|---|---|
| Wind Fault | 风干扰故障注入,支持阵风、湍流、风切变等环境干扰 |
| Load Fault | 载荷故障注入,支持载荷突变、重心偏移、挂载脱落等 |
传感器故障¶
| 模块 | 功能描述 |
|---|---|
| GPS Fault | GPS 故障注入,支持定位漂移、信号丢失、精度下降等故障 |
| Sensor Fault | 通用传感器故障注入,支持 IMU、磁力计、气压计等传感器故障 |
工具模块¶
| 模块 | 功能描述 |
|---|---|
| PHM 6DOF | 接入 PHM 故障模型总线的六自由度动力学模块,用于故障注入场景下的运动状态计算 |
| Fault Params Extract | 故障参数提取模块,用于从故障配置中提取和解析故障参数 |
故障类型说明¶
动力系统故障¶
| 故障类型 | 典型表现 | 应用场景 |
|---|---|---|
| 电机效率下降 | 转速降低、响应变慢 | 电机老化、过热保护 |
| 电机卡死 | 完全失去动力 | 机械故障、异物卡死 |
| 螺旋桨损伤 | 拉力下降、振动增大 | 桨叶碰撞、疲劳裂纹 |
| 电池电压跌落 | 功率不足、提前降落 | 低温、过放电 |
环境干扰故障¶
| 故障类型 | 典型表现 | 应用场景 |
|---|---|---|
| 阵风干扰 | 姿态振荡、位置偏移 | 强风天气、城市风场 |
| 湍流干扰 | 随机振动、控制困难 | 复杂地形、尾流区域 |
| 载荷突变 | 重心偏移、控制裕度下降 | 投放载荷、吊挂摆动 |
传感器故障¶
| 故障类型 | 典型表现 | 应用场景 |
|---|---|---|
| GPS 漂移 | 定位误差增大、导航失败 | 遮挡环境、多路径效应 |
| IMU 漂移 | 姿态估计偏差、自旋发散 | 温度漂移、振动干扰 |
| 磁力计干扰 | 偏航角跳变、校准失败 | 电磁干扰、硬铁效应 |
使用场景¶
容错控制算法验证¶
- 故障检测:验证飞控对各类故障的检测能力和响应速度
- 控制重构:测试故障发生后的控制重构和降级控制能力
- 安全着陆:验证严重故障情况下的紧急降落策略
传感器融合算法测试¶
- 故障识别:测试多传感器融合对单传感器故障的识别能力
- 权重调整:验证故障情况下的传感器权重自适应调整
- 状态估计:评估故障条件下的状态估计精度
飞行安全评估¶
- 故障覆盖率:评估飞控对不同故障模式的覆盖能力
- 故障传播:分析故障在系统中的传播路径和影响范围
- 安全边界:确定不同故障条件下的安全飞行边界
使用注意事项¶
故障参数设置¶
- 故障强度:故障强度参数需在合理范围内,过大的值可能导致仿真发散或崩溃
- 渐变注入:建议采用渐变方式注入故障,避免瞬时剧烈变化导致仿真不稳定
- 故障时机:选择适当的故障注入时机,避免在关键控制阶段(如起飞、降落)注入严重故障
- 参数一致性:确保故障参数与故障类型匹配,避免不兼容的参数组合
仿真安全¶
- 边界保护:设置合理的飞行边界,当无人机状态超出安全范围时自动终止仿真
- 故障恢复:设计故障恢复测试时,确保有足够的恢复时间和空间
- 多故障叠加:谨慎测试多故障同时发生的情况,避免不可预见的交互效应
- 日志记录:启用详细的仿真日志记录,便于事后分析和故障重现
与飞控的交互¶
- 消息频率:故障注入消息的发送频率需与飞控处理周期匹配,避免消息堆积或丢失
- 协议兼容性:确保故障参数格式与飞控期望的格式一致,避免解析错误
- 权限管理:在实机测试前,先在仿真环境中充分验证故障注入逻辑
- 紧急停止:实机测试时确保有可靠的紧急停止机制,能够在故障失控时立即接管
故障建模原理¶
PHM 故障模型将故障注入位置分为执行机构、环境、载荷、传感器和状态输出链路。建模目标不是单纯让仿真异常,而是让故障能够被控制器、诊断算法和健康评估模块观测到。


运动模型注入关系¶
除传感器以外,多数故障最终都会通过总力、总力矩、质量、惯量或外部扰动进入刚体运动模型。
| 故障类别 | 主要影响量 |
|---|---|
| 动力系统故障 | 总升力 F、三轴力矩 tau |
| 环境故障 | 外力、外力矩、相对风速和世界系速度 |
| 载荷故障 | 质量 m、惯量矩阵 J、附加力矩 |
| 传感器故障 | 尺度因子、常值偏置、冲击、延迟、随机游走噪声 |
动力系统故障¶

| 故障类型 | 注入位置 | 典型表现 | 关键参数 |
|---|---|---|---|
| 电池故障 | 电压、电流、剩余容量模型 | 电压跌落、动力不足、续航缩短 | 内阻、容量、SOC、放电倍率 |
| 电调故障 | PWM 到电机命令之间 | 单路输出饱和、延迟、失效 | 增益、偏置、死区、响应时间 |
| 电机故障 | 电机转速和推力模型 | 推力下降、卡滞、响应变慢 | 推力系数、转速上限、时间常数 |
| 螺旋桨故障 | 推力/扭矩生成环节 | 桨效下降、失衡、额外振动 | 效率系数、损伤比例、扭矩偏差 |
动力系统可按电池、ESC、电机、螺旋桨的信号链建模:
| 子模型 | 关系式 | 说明 |
|---|---|---|
| 电池 | U_b = k_Ub * f_Ub(C_dch_effective, U_b0) |
k_Ub 为电池故障系数,影响输出电压 |
| ESC | U_m = k_Um * sigma * U_b |
sigma 为归一化油门,k_Um 为电调故障系数 |
| 电机 | omega = k_omega / (k_Tm * T_m * s + 1) * omega_ss |
描述响应速度和执行效率故障 |
| 螺旋桨 | T = k_CT * c_T * omega^2,M = c_M/T * T |
k_CT 改变拉力效率 |
环境与载荷故障¶
| 故障类型 | 建模方式 | 影响 |
|---|---|---|
| 风力故障 | 在地理坐标系或机体系加入外力 | 位置漂移、速度误差、姿态补偿增大 |
| 风矩故障 | 加入额外滚转/俯仰/偏航力矩 | 姿态振荡、控制量长期偏置 |
| 实时障碍物 | 通过 UE 或碰撞模型注入障碍 | 路径规划、避障和碰撞检测 |
| 质量变化 | 修改质量参数 | 模拟载荷投放、挂载变化、电池替换 |
| 转动惯量变化 | 修改惯量矩阵 | 影响姿态响应和角加速度 |
| 质心偏移 | 修改重心或附加力矩 | 产生持续姿态偏差和控制补偿 |
载荷故障应同步更新重力、惯量和力臂,否则会出现不一致的动力学结果。
环境风场可由大气紊流、常风、风切变和阵风叠加:
风扰动造成的阻力和附加力矩可写为:
其中 p_wind 是风力作用点在机体系下的位置向量。实时障碍物通常由三维引擎在故障触发时间动态实例化,可与风场叠加用于构造复杂任务环境。
载荷质量偏移会改变惯量矩阵并引入附加力矩:
传感器故障¶
| 传感器 | 常见故障 | 观测表现 |
|---|---|---|
| 陀螺仪 | 偏置、噪声增大、漂移、卡死 | 姿态估计漂移、角速度异常 |
| 加速度计 | 偏置、比例因子、冲击异常 | 姿态估计和速度估计异常 |
| 磁力计 | 偏置、干扰、失锁 | 航向角跳变或长期偏差 |
| 气压计 | 偏置、随机游走、阶跃 | 高度估计错误 |
| GPS | 丢星、延迟、噪声、欺骗、位置跳变 | 位置和速度估计异常 |
传感器故障通常注入在 SensorOutput 或 HIL 输出前。注入后应保证数据类型、单位和采样频率仍满足飞控输入要求。
常用传感器故障可统一表示为真实量经过尺度因子、常值偏置、漂移和噪声后的测量量:
| 传感器 | 简化模型 | 主要参数 |
|---|---|---|
| 陀螺仪 | omega_m = k_g * (omega + c_g) + b_g + n_g |
尺度因子、常值偏置、漂移、白噪声 |
| 加速度计 | a_m = k_a * (a + lever_arm_terms - gravity_terms) + b_a + n_a |
尺度因子、杆臂项、漂移、噪声 |
| 磁力计 | m_m = k_m * (R_be * m_e + c_m) + b_m + n_m |
地磁向量、安装姿态、偏置 |
| 气压计 | d_baro = -k_baro * (p_z + c_baro) + b_baro + n_baro |
高度偏置、尺度因子、漂移 |
| GPS | p_gps = k_gps * (p + c_gps) + b_gps + n_gps |
位置偏置、尺度因子、随机游走 |
故障注入协议¶
PHM 模块通过 inSILInts 和 inSILFloats 接收故障标识符与故障参数。每个故障使用唯一 FaultID 定位类型,参数按故障模块约定写入浮点数组。
| 变量名 | 类型 | 长度 | 说明 |
|---|---|---|---|
inSILInts |
int32[] |
8 | 故障标识符,用于类型选择与通道定位 |
inSILFloats |
float32[] |
20 | 故障参数,用于设置故障强度、比例、噪声或风速等 |

| FaultID | 故障类型 | 故障参数 |
|---|---|---|
123450 |
电机执行效率故障 | 1 到 x 号电机执行效率比,范围 0-1 |
123451 |
螺旋桨故障 | 1 到 x 号螺旋桨执行效率比,范围 0-1 |
123452 |
电池失效故障 | 无 |
123453 |
低电压故障 | 电压失效比,范围 0-1 |
123454 |
低电量故障 | 电量失效比,范围 0-1 |
123455 |
负载故障 | 重量泄露比,范围 0-1 |
123456 |
负载漂移故障 | 重量泄露比与 x/y/z 泄露因子,范围 0-1 |
123457 |
负载泄露故障 | 重量泄露比与泄露因子,范围 0-1 |
123458 |
常风故障 | x/y/z 轴风速 |
123459 |
阵风故障 | 阵风强度与风到达时间 |
123540 |
紊流风故障 | 紊流风强度 |
123541 |
切向风故障 | 切向风强度 |
123542 |
加速度计噪声干扰 | 噪声增益 |
123543 |
陀螺仪噪声干扰 | 噪声增益 |
123544 |
磁力计噪声干扰 | 噪声增益 |
123545 |
气压计噪声干扰 | 噪声增益 |
123546 |
GPS 故障 | 噪声增益、3D 方式和卫星数量 |
单故障注入示例:4 个电机效率分别为 1、0.8、0.5、1。
多故障联合注入示例:同时注入电机效率故障和加速度计噪声故障。
故障参数管理¶
| 参数 | 说明 |
|---|---|
faultType |
故障类别或模块编号 |
startTime |
故障开始时间 |
duration |
故障持续时间 |
severity |
故障强度或损伤比例 |
channel |
执行机构或传感器通道 |
bias |
加性偏置 |
scale |
乘性比例 |
noiseStd |
噪声标准差 |
做 PHM 数据集时,建议同时记录故障参数、飞控日志、真值状态、控制输入和传感器输出。只保存飞控日志通常不足以复盘故障发生位置和强度。
模块页面索引¶
| 主题 | 页面 |
|---|---|
| 电池故障 | Battery Fault |
| 电机故障 | Motor Fault |
| 螺旋桨故障 | Prop Fault |
| 风场与环境故障 | Wind Fault |
| 载荷故障 | Load Fault |
| GPS 故障 | GPS Fault |
| 通用传感器故障 | Sensor Fault |
| PHM 六自由度模型 | PHM 6DOF |
| 故障参数提取 | Fault Params Extract |
相关资源¶
注意:本文档为 RflySim PHM 库的索引文档。各模块的详细使用说明请参考对应模块的独立文档页面。