姿态传感器与估计器异常¶
飞行器“自己倾斜”“地平线跳变”或“姿态漂移”可能来自传感器测量、安装方向、振动、电磁干扰、时间同步、估计器状态、控制输出或真实机体运动。只看姿态图无法区分这些路径。
本节沿着实体运动到估计状态的链条逐层定位,不把估计器告警自动当成估计器算法缺陷。

前提条件¶
- 已完成证据保全和日志质量门禁;
- 已固定机体坐标、飞控安装方向和传感器实例;
- 已知日志字段是原始、校准后、滤波后还是估计后数据;
- 涉及撞击、进水、过热或异常振动时,飞行批准保持
阻断; - 地面复现全部拆桨并固定飞行器;
- 不通过关闭传感器健康检查或增大创新门限推进测试。
诊断链¶
每一层都可能产生相似表象。应找出最早出现异常的层级。
先定义现象¶
| 现象 | 需要量化 |
|---|---|
| 静止漂移 | 轴、速率、持续时间、温度和上电时间 |
| 瞬时跳变 | 幅度、时间、是否伴随重置或传感器切换 |
| 持续倾斜 | 目标与实际、加速度、姿态、输出和环境 |
| 航向旋转 | 磁场、GNSS航向、偏航角速度和模式 |
| 高度突变 | 气压、GNSS高度、测距、垂向加速度和气流 |
| 传感器不一致 | 实例、轴、偏差、温度、振动和错误计数 |
| 估计器告警 | 原始消息、状态标志、创新、一致性和重置 |
“漂”“抽风”“姿态不对”不能作为测试输入。
传感器层检查¶
身份与安装¶
记录:
- 传感器型号、实例和主备关系;
- 飞控与外置传感器安装方向;
- 机体坐标定义;
- 固件中的旋转配置;
- 固定、减振、线束接触和壳体间隙;
- 最近拆装、撞击或更换。
用已知方向的小角度手动动作验证轴和符号。飞行器静止在水平基准上时,界面模型、原始加速度和姿态应与定义一致。
电源与总线¶
检查:
- 传感器供电轨和参考地;
- 总线错误、超时、重试和复位;
- 连接器、焊点和线束应力;
- 高负载或温度变化时错误是否增加;
- 多个传感器是否同时中断。
多个不同传感器在同一时刻停止更新,优先考虑共享电源、总线、处理器或时间戳,而不是多个敏感元件同时损坏。
量程、削波和饱和¶
确认:
- 实际量程设置;
- 原始值是否到达量程边界;
- 削波计数是否增加;
- 撞击、起降和稳定飞行窗口是否分开;
- 采样率和滤波是否足以捕捉峰值。
削波后的波形不能还原真实峰值。增加滤波也不能修复已经在传感器量程处截断的数据。
温度与偏置¶
记录从冷启动到稳定温度的:
- 传感器温度;
- 零偏;
- 静止输出;
- 估计器状态;
- 校准或补偿状态。
如果异常只在特定温度出现,应在无桨、受控温度范围内重复,不能用手工加热或超出器件条件的方法快速复现。
时间戳与延迟¶
状态估计不仅需要数值正确,还需要时间正确。检查:
- 不同传感器时间基准;
- 样本时间与接收时间;
- 队列积压和延迟;
- 时间跳变、重复或乱序;
- 固件配置的传感器延迟;
- 地面站显示是否额外平滑或延迟。
若传感器值本身合理但时间错位,估计器可能产生创新突增、重置或相位滞后。不能通过任意平移曲线让结果“看起来对齐”。
多传感器一致性¶
多惯性测量单元(IMU,Inertial Measurement Unit)或多导航传感器系统应比较:
- 同一物理量的幅值和方向;
- 采样、滤波和量程差异;
- 温度;
- 错误计数;
- 主传感器选择和切换时间;
- 切换前后的状态连续性。
备用传感器曲线不同不一定代表故障,可能来自安装位置、滤波或更新率不同。比较前先转换到同一坐标系和带宽。
估计器层检查¶
常见实现包括扩展卡尔曼滤波器(EKF,Extended Kalman Filter),但不同平台的状态、创新和故障标志不能逐字互译。
保存并分析:
- 健康与故障状态;
- 传感器融合选择;
- 创新或残差及其一致性指标;
- 状态方差或等效置信信息;
- 重置计数、重置量和发生时间;
- 主估计器或传感器切换;
- 模式变化和失效保护动作;
- 对控制器发布的最终状态。
创新增大表示测量与预测不一致,不直接说明测量一定错误。模型、时间、坐标、环境和其他传感器都可能造成不一致。
固定诊断步骤¶
- 定义现象、轴、时间和模式;
- 选择异常前、异常中、异常后的窗口;
- 核对日志质量和字段实例;
- 对齐真实动作、原始传感器、校准值和估计状态;
- 检查电源、总线、时间戳、温度、量程和削波;
- 比较主备传感器;
- 标记估计器告警、重置和切换;
- 对齐目标、估计状态和执行器响应;
- 写出至少两个假设;
- 优先在静止、手动小角度、SITL或HITL中验证;
- 单一变量纠正后重复相同低风险测试;
- 根据改动范围决定回退层级。
典型分流¶
界面地平线方向错误¶
先检查安装旋转和轴映射,再检查校准。若手动向右倾斜时界面向左,属于方向链问题,不应通过调PID修复。
上电后静止姿态缓慢变化¶
比较陀螺仪零偏、温度、校准状态和估计器融合。确认飞行器是否真正静止、是否受到桌面振动或气流。
动力增加时姿态开始异常¶
同步检查:
- 原始惯性数据和削波;
- 电机转速或输出;
- 电源轨;
- 飞控安装和线束接触;
- 磁场与电流;
- 估计器创新和重置。
该现象可能同时涉及振动、电源和磁干扰,不能只归因于“算法不稳”。
姿态突然跳变¶
查找:
- 估计器重置量;
- 传感器切换;
- 时间戳中断;
- 总线错误;
- 飞控重启;
- 撞击或真实快速运动;
- 日志dropout。
跳变恰好位于日志缺口边界时,保持未知。
四平台证据入口¶
Betaflight 2026.6.2¶
- 核对飞控板方向、陀螺仪实例、校准和状态;
- Blackbox中对齐原始/滤波陀螺仪、加速度、姿态、目标和输出,具体字段取决于日志配置;
- 检查削波、异常噪声和传感器错误;
- 先排除机械振动和安装问题,再讨论滤波或控制。
Betaflight主要面向人工操纵多旋翼,不能套用导航平台的估计器字段和判据。
INAV 9.1.0¶
- 区分基础姿态传感器与用于导航的磁力计、气压计、GNSS和测距;
- 保存传感器状态、校准、姿态、导航估计、模式和Blackbox字段;
- 先确认基础姿态是否健康,再定位导航融合;
- 动力相关磁干扰应结合电流和油门条件检查。
ArduPilot Copter 4.7.1¶
- 保存IMU、姿态、估计器、错误、消息和模式相关日志;
- 比较目标姿态与实际姿态,区分估计异常和控制跟踪异常;
- 审查振动、削波和多个IMU实例;
- 使用固定版本EKF状态、创新和重置字段解释估计器事件;
- 不因预解锁提示而关闭检查。
PX4 v1.17.0¶
- 保存ULog中的传感器、估计器状态、创新、重置、姿态和事件信息;
- 核对多个传感器实例和选择器状态;
- 使用固定版本定义解释估计器健康和失效保护;
- Flight Review图表用于定位,原始ULog用于复核;
- 缺少高频主题时不判断传感器噪声频谱。
低风险复现¶
静止重复性¶
- 拆桨并固定;
- 从已知温度状态上电;
- 不触碰飞行器,记录初始化和静止段;
- 重复至少一次;
- 比较偏置、温度、健康状态和重置;
- 断电并保存日志。
已知方向动作¶
- 使用可重复的水平和角度基准;
- 每次只绕一个轴缓慢运动;
- 标记动作开始、保持和返回;
- 检查原始值、姿态和界面方向;
- 不执行快速甩动或撞击。
单一外设对照¶
只有证据指向共享总线、电源或外设干扰时,才在断电后移除一个非必要外设,并保留连接前后配置和接线照片。移除飞行必需传感器后的结果只能用于分流,不能直接形成可飞配置。
通过标准¶
- 传感器身份、方向、实例、量程和时间基准明确;
- 原始、校准、滤波和估计数据没有混用;
- 电源、总线、温度、振动和削波已检查;
- 估计器告警、重置和切换与时间线对应;
- 至少两个假设有支持证据和反证;
- 低风险复现可重复或明确说明无法复现;
- 纠正措施后完成静止和已知方向回归;
- 若改变安装、传感器或固件,已确定A/B2及后续回退范围。
本篇通过只表示传感器与估计器诊断资料完整,并完成规定的低风险回归;不签发装桨、解锁或复飞授权。
停止条件¶
- 传感器或飞控过热、进水、破损或供电异常;
- 手动动作可能使电机转动或载荷释放;
- 轴、单位、实例或时间戳无法确认;
- 关键窗口发生dropout或削波;
- 需要关闭估计器检查、增大门限或强制选择不健康传感器;
- 为复现姿态异常需要装桨或飞行,但没有专项测试卡;
- 同时改变传感器、安装、滤波和参数。
恢复措施¶
- 撤销临时诊断改动,回到旧批准基线作差异核对;
- 重启并确认参数持久化;
- 重做传感器方向、静止健康、校准和模式前置检查;
- 若改变飞控安装或传感器,回到A层;
- 若改变减振、线束或机架,至少回到B2;
- 按影响分析决定是否重做C层最小飞行;
- 若旧基线本身含故障,另建纠正候选并完成分层回归;
- 事故级事件在10关闭前保持
阻断。
诊断记录模板¶
以下分域字段必须与统一证据模型合并使用:
现象、轴和时间:
传感器实例、方向和量程:
原始/校准/滤波/估计字段:
电源与总线:
温度与偏置:
削波与振动:
时间戳与延迟:
估计器创新、重置和切换:
H1及反证:
H2及反证:
低风险复现:
纠正措施与回归:
日志适用性:Q0 / Q1 / Q2 / Q3
因素清单(逐项填写角色、证据状态、证据索引、反证和纠正状态):
最低回退层级:
残余限制:
当前飞行批准:阻断 / 部分恢复 / 恢复
批准范围、批准人与到期条件:
检查理解¶
- 为什么估计器创新增大不等于某个传感器必然损坏?
- 多个传感器同时停止更新时应优先检查什么?
- 为什么削波数据不能通过后处理恢复真实峰值?
- 如何区分姿态估计跳变和真实机体快速运动?
- 修改飞控安装方向后为什么必须回到更低层级复核?