一句话掌握:ULog 是二进制自描述日志格式,靠 F 段自带 schema(结构定义),解析器无需硬编码字段顺序,这是它优于 CSV 的根本原因;飞行异常诊断的入口是「用 EKF 测试比定位哪一路观测被拒绝或异常」,而不是上来就翻原始数据。
目录
- 一、日志分析
- 1. ULog 日志格式与结构
- 2. ULog 常用 topic 速查(测试分析视角)
- 3. PlotJuggler 标准分析流程
- 二、飞行异常诊断
- 1. 无人机飞行异常因素总表(8 大类 32 项)
- 2. 磁异常全景:场景、成因、作用原理与影响链
- 3. 磁异常的处置与预防
- 4. GNSS 异常:干扰、欺骗、多路径、失锁与星况劣化
- 5. 振动异常:成因、削波、谐振与对 EKF 的影响
- 6. 电源与动力异常:电压跌落、内阻劣化、电调与动力线故障
- 7. 通信链路异常:丢包、延迟抖动、断链与失联保护
- 8. 环境与外部因素导致的飞行异常
- 9. 基于 EKF 创新比与测试比的异常定位方法
- 三、资深实操:飞行异常排查检查单
- 四、术语速查
- 五、来源与勘误
适用人群与前置
面向无人机研发、测试、运维与飞手。
建议先具备:PX4 飞控基本概念(EKF 滤波器、uORB 消息总线、传感器校准)、MAVLink/遥测链路基础、PlotJuggler 或 QGroundControl 日志查看能力。
一、日志分析
1. ULog 日志格式与结构
ULog(Ultralight Log,超轻日志)是 PX4 默认的二进制日志格式。其核心设计是自描述:日志文件内自带了数据格式定义,因此任何解析器(PlotJuggler、QGC、pyulog)打开日志即可按段内声明还原字段,不需要提前知道「第几列是什么」。
| 项目 | 说明 |
|---|---|
| 文件头 | 魔数0x55 0x4C 0x6F 0x67(即 ASCII 字符串ULog)+ 版本号 + 时间戳;时间戳单位为微秒(us),不是毫秒,读数时注意量纲 |
| 关键消息段 | 见下表 |
关键消息段
| 段 | 全称/含义 | 作用与实战要点 |
|---|---|---|
| B | Flag Bits(标志位) | 记录数据是否被丢弃(dropout,丢段),是判断日志完整性的关键 |
| F | Format(格式) | 定义字段名与类型,每个 topic 只声明一次,解析依赖它 |
| I | Info(信息) | 元信息,如 sys_name / ver_sw(软件版本)/ time_utc(UTC 时间) |
| P | Parameter(参数) | 记录一次参数变更;改参前后做复现就靠它 |
| A/R | Add/Remove Logged(记录增删声明) | 声明本段记录了哪些 topic |
| D | Data(数据帧) | 真正的数据帧,主休 |
| S | Sync(同步标记) | 同步/校验标记,用于定位段边界 |
三个实战要点
- 参数复现:参数变更记录在 P 段。做「本次飞行到底用了哪套参数」的复现时,取各参数最后一次 P 值即可。
- B 段 dropout 判读:B 段的 dropout 标记能区分「日志丢了,但飞机没问题」,避免把丢日志误判成数据异常。这是排查的第一步,务必先看。
- 大文件流式读取:解析 800MB 以上大日志必须流式读取(逐段读取),不能一次性载入内存,否则会 OOM(内存耗尽)。
易错点:ULog 时间戳单位是微秒(us)。在 PlotJuggler 里若没做单位换算,大量数值会小 1000 倍,横轴/趋势看起来完全不对,这是最常见的低级错误之一。
2. ULog 常用 topic 速查(测试分析视角)
topic(话题):PX4 内部 uORB 数据总线上的一个消息通道名,ULog 中按 topic 分组记录数据。下表为测试分析最常用的 topic 及其用途。
| topic | 分析用途 |
|---|---|
vehicle_attitude(四元数 + 角速率) | 姿态跟踪误差、震荡检测、机动品质 |
vehicle_local_position(本地 NED 位置与速度) | 定点精度、轨迹跟踪(NED:北东地坐标系) |
vehicle_global_position | 航线偏移、返航精度(经纬度 + 海拔) |
vehicle_status(解锁/导航状态/飞行模式) | 状态机时序分析,定位「模式为何在某刻切换」 |
actuator_controls/actuator_outputs | 控制饱和、各电机输出差异 |
battery_status | 续航评估、电压跌落曲线 |
sensor_combined(陀螺 + 加速度计原始值) | 振动分析前必看 |
estimator_status | 估计异常定位(EKF 测试比、磁异常标记等) |
position_setpoint_triplet/trajectory_setpoint | 编队轨迹跟随的核心对照量(设定值 vs 实际) |
vehicle_command/vehicle_command_ack | 判断「指令到底发没发」「飞机认没认」 |
failsafe_flags | 失联与低电保护是否按预期动作 |
cpuload | 高负载导致消息被丢弃 |
姿态/角速率容差的几个关键设定
- 角度归一化:做姿态误差判读前必须先做角度归一化——
359°与1°实际只差2°,不做归一化会误判为358°的巨大误差。表演场景常用连续角度容差 ±170°,或直接按姿态误差上限判定。 - 角速率容差 300°/s:这属于宽松保底阈值,用于识别剧烈失控(明显发散),不是检测日常抖动的标准;日常抖动判定应看更高灵敏度的阈值/频谱。
- 编队分析特征量= 轨迹跟随误差 + 机间相对位置偏差 +时间同步偏差(三者缺一,编队问题定位会断链)。
3. PlotJuggler 标准分析流程
PlotJuggler(绘图引擎,跨平台开源):支持 ULog 可视化的常用曲线分析工具,可将各 topic 曲线叠图、做 XY 散点、计算派生量。
标准流程
| 步骤 | 说明 |
|---|---|
拖入.ulg | 把日志文件拖进 PlotJuggler 窗口 |
| 勾选字段上屏 | 左侧树按 topic 分组,勾选所需字段曲线上屏 |
| 多机对比 | 多次拖入不同飞机的日志,挂到不同根节点,勾选同名 topic 叠图 |
| Transform 派生 | 用 Transform 的 Derivative(求导)/ Integral(积分)计算派生量(如加速度、速度) |
两个关键技巧
- XY Plot:把两个量绑成散点图(如期望位置 X 轴 vs 实际位置 Y 轴),与纯时序图相比,更容易一眼看出跟踪偏差的方向与量级——理想应落在对角直线附近。
- Layout → Save layout:把调好的曲线组存成模板,多机批量分析时直接复用,避免每次重新拖拽、重新勾选,是编队几十架飞机分析效率的关键。
时间对齐(multi-vehicle 必做)
多机日志的时间戳基准不同(各自开机时刻不同),必须先做时间对齐——用 GPS 时间或起飞时刻拉齐曲线,否则叠图完全没意义,机间一致性分析无从谈起。
常见坑
| 坑 | 规避 |
|---|---|
| 字段太多导致内存爆掉 | 先关掉不需要的 topic,或勾选 Load only selected |
| 横轴变成行号、曲线看起来完全错误 | PX4 的.ulg必须选「使用日志时间戳」(use timestamp),否则横轴退化行为号 |
| 参数对比不清晰 | 不要用 PlotJuggler 对比参数,改用参数表工具(如 QGC 参数界面、pyulog 提取)更合适 |
| 800MB 以上大文件卡顿/爆内存 | 建议先做时间窗裁剪,或分关注时段截取后再分析 |
二、飞行异常诊断
1. 无人机飞行异常因素总表(8 大类 32 项)
| 大类 | 项数 | 涵盖成因 | 排查入口(首查对象) |
|---|---|---|---|
| 磁类 | 5 | 硬磁 / 软磁 / 交变电磁 / 地磁异常 / 太阳磁暴 | 磁场强度读数、mag_test_ratio |
| GNSS 定位 | 5 | 遮挡 / 多路径 / 干扰 / 欺骗 / 星况劣化 | GPS_RAW_INT的fix_type、satellites_visible、hdop、pos_test_ratio |
| 振动与机械 | 4 | 桨叶不平衡 / 电机轴承损伤 / 机架谐振 / 紧固件松动 | EstimatorStatus.vibe[0..2]、削波计数、角速度频谱峰值 |
| 电源与动力 | 4 | 电压跌落 / 内阻上升 / 电调过热失步 / 接插件接触不良 | battery_status电压电流曲线、单架次最低电压与最大电流 |
| 通信链路 | 4 | 丢包 / 延迟抖动 / 链路中断 / 带宽拥塞 | HEARTBEAT间隔、COMMAND_ACK超时率、RSSI 与 SNR 趋势 |
| 传感器与状态估计 | 4 | 传感器漂移 / 失效 / EKF 估计发散 | EKF 各类 test_ratio |
| 环境与外部因素 | 4 | 风 / 温度 / 空间天气 / 场地干扰 | 气象与场地条件、全场是否同时异常 |
| 人为与流程因素 | 2 | 校准不规范、参数误改 | 校准记录、参数变更记录(P 段) |
排查总原则(最重要):先用 EKF 测试比定位「哪一路观测被拒绝或异常」,再看该传感器原始数据,最后才查物理层(线路、安装、场地)。顺序颠倒(先查物理层)会浪费大量时间。
2. 磁异常全景:场景、成因、作用原理与影响链
磁力计(罗盘)是 EKF 估计航向的主要观测量。磁异常是飞行器航向/CAN 错误的高发根因。
易发场景四类
| 场景 | 典型诱因 |
|---|---|
| 上电与校准 | 钢筋混凝土地面、插着 USB 线、校准动作不完整 |
| 载机自身 | 动力线大电流、机载磁吸件、含永磁体的云台舵机、铁磁螺丝 |
| 场地环境 | 高压线、钢结构、地下管线、磁铁矿带 |
| 时间与空间 | 太阳磁暴 Kp≥5、纬度效应、航向变化本身 |
五种成因的可校准性截然不同
| 成因 | 特性 | 可否校准 |
|---|---|---|
| 硬磁 | 机体坐标系恒定偏置 | 可校准 |
| 软磁 | 随航向呈椭圆变化 | 可校准 |
| 交变电磁干扰 | 随时间变化、与电流同步 | 不可校准 |
| 地磁异常 | 偏离 WMM(世界地磁模型) | 不可校准 |
| 太阳磁暴 | 分钟级波动 | 不可校准 |
先分清楚成因类型,再决定是「重新校准」还是「换场地/改设计」,否则校准做了也白做。
完整影响链
- 磁力计是 EKF 航向的主要观测量。
- EKF 在「创新(innovation,测量残差)」环节发现异常,
mag_test_ratio正常应长期低于 0.5,持续超过 1.0 表示该观测被拒绝。 - 持续超阈值 → yaw(偏航)只能靠陀螺积分,零偏累积导致缓慢漂移;未超阈值但已有误差 → 错误磁数据被融合,飞机缓慢绕圈(toilet bowl,马桶圈现象)。
④ 航向错误向下传导
- 位置控制器把期望的 NED 位置映射到机体坐标系时方向错误 → 推力方向错误 → 航迹偏差。
- 返航跑偏。
- 编队机间相对位置错位。
⑤ 解锁阶段磁一致性检查:磁一致性检查不通过会直接拒绝解锁,报错preflight fail: mag sensors inconsistent。
解锁判据参数(PX4 默认)
| 参数 | 默认值 | 含义 |
|---|---|---|
COM_ARM_MAG | 0.15 Gauss | 解锁时磁场强度允许偏差范围 |
EKF2_MAG_CHK_STR | 0.2 Gauss | 磁测量强度一致性上限 |
EKF2_MAG_CHK_INC | 20° | 磁航向角度一致性上限 |
3. 磁异常的处置与预防
空中动作(按优先级)
- 立即切手动或增稳,不要继续留在 Position(定点)/ Mission(任务)/ Offboard(外部控制)模式。
- 判断可恢复性:可控则降低高度就近降落;持续自旋且操纵无效则立即紧急降落。
- 记录现场信息(位置、载荷状态、周边是否有磁干扰源)。
- 落地后不要立刻重启再飞,先把现象与日志对上再定位。
地面排查(按性价比排序)
| 手段 | 说明 |
|---|---|
| 看 STATUSTEXT 提示文本 | 先读取飞控自检/告警文本,往往直接给出方向 |
| 把飞机抬到 1 米以上复查 | 排除地面钢筋/地下管线的近场干扰 |
| 逐项断源 | 依次断开云台、关蜂鸣器、拔图传,定位干扰源 |
| 油门联动测试 | 不装桨,看油门加大时磁场是否变化(电流大→磁场变) |
| 多罗盘对比 mag0/mag1 | 两罗盘读数不一致则提示其中一路受干扰 |
| 换空旷场地对照 | 排除场地因素 |
警告:参数层处置要慎重——放大
COM_ARM_MAG可以让飞机解锁,但等于承认磁数据不可信,属带病起飞,不可作为长期方案。
校准规范(性价比最高的预防手段)
- 远离金属建筑与车辆;
- 断开 USB,仅用电池供电;
- 装机完整后再校准(先装好全部载荷与结构再校,否则校准的是"裸机"磁场);
- 三轴各旋转 360° 至少 2 圈;
- 地面站航向与实际朝向误差应小于 15°;
- 换场地 / 换载荷 / 换磁罗盘后必须重校准。
设计布局预防
| 手段 | 说明 |
|---|---|
| 外置磁罗盘架高 | 离动力线 10cm 以上改善明显 |
| 动力线双绞 | 最有效的布线手段(抵消电流磁场) |
| 铜箔铝箔屏蔽 | 对高频电磁场有效,对直流磁场无效 |
| 紧固件选型 | 优先尼龙 / 钛 / 304 不锈钢(非铁磁材料) |
应固化为测试用例的六个场景
- 磁一致性检查(解锁预检)。
- 油门联动测试。
- 载荷通电测试。
- 磁数据异常注入。
- 场地复现。
- 航向异常下的失效保护。
4. GNSS 异常:干扰、欺骗、多路径、失锁与星况劣化
五类异常与识别特征
| 类型 | 识别特征 |
|---|---|
| 遮挡 | 卫星数骤降、DOP(精度因子)上升 |
| 多路径 | 位置缓慢漂移或周期性画圆、速度测量噪声大;城市环境最常见 |
| 干扰 jamming | 瞬间全失锁、载噪比(信号强度)骤降到 10 dB 以下 |
| 欺骗 spoofing | 位置平滑跳到错误位置、地速异常、时间异常;往往无任何报警 |
| 星况与电离层 | Kp≥5 时定位误差可达数十米 |
作用原理:GNSS 靠测距定位,任何让「时间」或「几何」失真的因素都会直接变成位置误差。RTK 更脆弱——依赖载波相位,轻度干扰就可能从 Fixed(固定解)掉到 Float(浮点解),精度从厘米级退化到分米甚至米级。
影响链(流程链)
位置与速度观测被污染 → EKF 的 pos_test_ratio / vel_test_ratio 上升 → 超阈值后 EKF 拒绝 GNSS 观测 → 位置靠惯导递推、随漂移,同时可能触发 ATTI 模式 → 若未拒绝而误融合,飞机会朝错误方向修正
编队场景放大效应:位置误差直接变成机间相对位置误差 → 编队间距收缩或碰撞风险。单机还能忍的 GNSS 掉段,在编队里可能是事故级问题。
现场处置
- 看状态量:
satellites_visible(可见星数)、fix_type、hdop、s_variance_m_s(位置估计方差)。 - 立即切模式,摆脱位置/任务依赖。
- 改善可见性(升高、移出遮挡)。
- 怀疑欺骗时:「无任何报警但飞机缓慢走位」是典型欺骗特征,应立即切手动并就近降落。
- 落地后比对 GNSS 轨迹与惯导轨迹的偏离起始时刻,确定污染起始点。
预防
- 天线朝上、无遮挡、远离图传发射天线;
- L1+L5 双频接收;
- 双天线定向或双 GNSS 冗余;
- 飞行前查Kp 指数;
- 明确降级路径(GNSS 失效时的控制策略);
- 用注入式验证代替现场碰运气(可控地注入干扰数据测试降级行为)。
5. 振动异常:成因、削波、谐振与对 EKF 的影响
现象
- 姿态抖动;
- 高度保持不稳;
- EKF 报错;
- 加速度计出现削波;
- 悬停油门附近特别明显——这是动力匹配共振的典型特征。
常见成因(按发生频率)
| 类别 | 典型问题 |
|---|---|
| 桨叶 | 动不平衡、安装不到位、左右桨装反 |
| 电机 | 轴承磨损、磁钢脱落 |
| 结构 | 机架臂刚性不足、螺丝松动、GPS 杆过细形成二次共振 |
| 减振 | 减振硬度与起飞重量不匹配 |
| 动力匹配 | 共振点落在常用悬停油门区间 |
作用原理
- 振动耦合:高频振动经采样滤波后产生直流偏置误差,积分一次是速度误差、两次是位置误差。
- 削波(clipping):振动幅值超出传感器量程时信号被截顶,是不可逆的信息损失。
- 混叠(aliasing):接近 IMU(惯性测量单元)采样频率(多数板卡 1kHz)的高频振动会混叠到低频,伪装成真实运动。
- 陷波滤波器(notch filter):是补救手段而非解决方案,能滤掉特定频点的谐振,但不能掩盖根因。
对 EKF 的影响链(流程链)
振动 → 加速度计偏置 → 速度创新比上升 → 位置与速度估计发散 → EKF 拒绝观测或重置 → 姿态与位置短时间同时跳变
频谱定位
- 悬停转速基频处峰值 → 指向桨或电机平衡问题。
- 二倍频峰值 → 指向桨叶变形。
- 8-15 Hz低频峰值 → 指向机架臂或减振板共振。
测试要求(硬指标)
- 削波计数应作为硬性指标,要求恒为 0;
- 悬停段做振动均值与峰值统计;
- 每次拆装电机、更换桨叶、改动机架后重新确认振动基线。
6. 电源与动力异常:电压跌落、内阻劣化、电调与动力线故障
现象
- 油门上不去;
- 掉高;
- 电压骤降后回升;
- 续航明显缩短;
- 单机或整机突然断电;
- 电池发热鼓包;
- 接插件变色。
典型表现:内阻随老化 / 低温 / 循环次数上升,特征是「悬停正常、猛推油门就报警」。低温下锂电池可用容量与放电能力显著下降,是冬季掉高与提前报警的主因。
作用原理(流程链)
电池端电压 = 开路电压 − 电流 × 内阻。当负载电流上升 → 压降上升 → 母线电压下降 → 电调输出能力下降 → 推力下降 → 为维持姿态需要更大电流 → 进一步压低电压
这是一条正反馈链(电压跌落加剧)。同时,飞控依赖电压电流估计剩余电量并执行失效保护,采样不准会直接导致误判——提前返航,或该报警时没报。
现场处置:立即降低负载(减小机动、降低高度、就近降落),关闭非必要负载;落地后检查接插件发热变色情况;用battery_status的电压电流曲线定位。
预防
- 记录循环次数与内阻趋势,设定报废阈值;
- 起飞前电池保温(冬季关键);
- 接插件与线径留足余量;
- 建立机型「正常电压曲线」基线。
测试用例
- 满油门下母线电压最低值;
- 电压跌落恢复时间;
- 低电保护触发阈值与动作;
- 单路动力失效后的可控性。
7. 通信链路异常:丢包、延迟抖动、断链与失联保护
现象
- 遥测卡顿;
- 数据陈旧(数值长时间不变);
- 指令超时、收不到
COMMAND_ACK; - 图传花屏;
- 触发返航或自动降落;
- 编队中个别飞机掉线。
成因分五层
| 层 | 典型成因 |
|---|---|
| 射频层 | 同频干扰、天线极化不一致、遮挡 |
| 链路层 | 共享介质拥塞、电台缓冲与跳频延迟 |
| 网络层 | NAT(网络地址转换)表项超时、基站切换断链 |
| 协议层 | 消息频率过高、参数全量拉取阻塞链路 |
| 设备层 | 波特率不匹配、供电不足导致电台复位 |
带宽拥塞的典型表现:低优先级的大流量(高频遥测、日志下载)挤占高优先级消息(心跳、指令),表现为「能看见但控不了」。
现场处置
- 立即停止上行密集操作——反复点指令重试会进一步挤占带宽;
- 观察心跳与 RSSI/SNR 变化趋势,判断是逐渐劣化还是瞬时中断;
- 若已触发返航,不要盲目切模式打断,先确认返航方向与航迹合理。
预防
- 天线极化方向一致并架高;
- 起飞前做频谱扫描;
- 多机走mavlink-router做转发与端口映射;
- 带宽预算:用
MAV_CMD_SET_MESSAGE_INTERVAL把非必要消息降频; - 遥控与数传链路分离;
- 机载自主保护逻辑验证到位。
测试用例
- 丢包 30% 与 50% 下的失联判定;
- 跨基站切换;
- 链路中断到保护动作的时延;
- 带宽饱和时的消息优先级行为。
8. 环境与外部因素导致的飞行异常
风与气流
- 位置环靠倾角产生水平加速度对抗持续外力,风速接近机型抗风能力上限时姿态余量耗尽;近建筑与树线的涡旋会更复杂。
- 城市峡谷阵风瞬时风速可达平均风速的1.5-2 倍;处置是降低高度寻找弱风层。
- 注意顺风返航场景(顺风导致地速偏大,返航路径/电量消耗需评估)。
温度
- 高温:电池与电调降额、IMU 温漂加剧;
- 低温:锂电池放电能力下降、传感器零偏变化;应地面预热 + 悬停自热,缩短单架次时间。
太阳活动与空间天气
- Kp ≥ 5时地磁扰动 → 磁力计读数波动 + 电离层干扰 GNSS 定位;
- 典型特征是全场所有飞机同时异常、与场地无关、随时间自行恢复——据此可与场地问题区分。
降水、湿度与结冰
- 结冰破坏桨叶与结构气动外形,是坠机的直接原因;需确认机型防护等级(IP 等级)。
外部电磁与电力设施
- 高压线、变电站、接触网、雷达。雷达是双重影响:干扰磁力计导致航向错误 + 抬高 GNSS 噪底导致定位误差。
场地与人因:起降区不平或有杂物、围观人员干扰、落入禁飞区域、存在信号盲区。
9. 基于 EKF 创新比与测试比的异常定位方法
这是整套诊断的总方法论。
判读基准:正常飞行中所有测试比应长期低于 0.5;偶发尖峰可接受;持续超过 1.0 表示该观测数据不一致并被拒绝。
核心指标对照
| 指标 | 含义(上升表示) |
|---|---|
vel_test_ratio上升 | 速度观测不一致 |
pos_test_ratio上升 | 水平位置不一致 |
hgt_test_ratio上升 | 高度不一致(气压计受气流与温漂影响) |
mag_test_ratio上升 | 磁干扰或校准不良 |
vibe[0..2] | 机架振动水平 |
创新(innovation):EKF 中「测量的预测残差」,即实际测量与滤波器预测的差;test_ratio 是该残差相对预期噪声方差的归一化统计量,用来检测观测是否异常。
排除法判读(症状 → 指标 → 根因)
| 序号 | 症状组合 | 根因指向 |
|---|---|---|
| ① | 速度与位置测试比同时上升、磁力计轻微上升 | 优先怀疑振动 |
| ② | 角速率零偏变化明显 + 磁力计测试比上升 | 陀螺零偏或温漂,yaw 轴最典型 |
| ③ | 飞机一开始移动,速度测试比就快速上升 | 航向不准,查磁罗盘校准与安装朝向 |
| ④ | 接收机自报速度精度与创新同步上升 | GNSS 自身问题 |
| ⑤ | 位置与速度测试比平线不再更新 | GNSS 数据丢失 |
| ⑥ | 只有高度测试比异常 | 气压计受气流或温度骤变影响 |
使用流程(流程链)
先确认无 dropout 与 CPU 过载排除假异常 → 用 PlotJuggler 勾选估计器指标定位异常起始时刻 → 拉出对应传感器原始数据 → 用 vehicle_command 与 vehicle_command_ack 确认指令是否送达与被执行 → 结论必须落到「可复现的操作」上
注意事项
- 不要只看单条测试比,要看时间序关系——谁先动、谁后动,根因往往是"先动"的那个;
EKF2_MAG_CHECK启用时用 WMM 比对磁场属保护行为而非故障,别误报;- 冷启动后陀螺零偏变化超过约 3 deg/s 属于硬件温度问题;
- 测试比阈值与机型、减振设计强相关,建议为本机型建立「正常基线」,而不是套用通用值。
三、资深实操:飞行异常排查检查单
- 先排假异常:确认 B 段 dropout 比例与
cpuload不高,否则先排除日志本身不完整。 - EKF 测试比定位:勾
estimator_status里的各test_ratio与vibe[],看哪个指标先超 0.5→1.0。 - 时序定根因:用 PlotJuggler 放大异常起始窗口,确认「谁先动、谁后动」。
- 回到原始数据:对嫌疑传感器拉原始值(
sensor_combined、GPS_RAW_INT、battery_status)。 - 验证指令链:用
vehicle_command/vehicle_command_ack确认「发没发、认没认」。 - 落地到可复现操作:把结论写成可复现的测试用例,而不是一句「当时环境问题」。
警告:不要为了「先飞起来」放大磁检/阈值的解锁参数带入病起飞;也不要拿 PlotJuggler 对比参数。诊断的目的永远是定位到可复现、可修复的根因。
四、术语速查
| 缩写/术语 | 中文全称 | 一句话解释 |
|---|---|---|
| ULog | 超轻日志(Ultralight Log) | PX4 自描述二进制日志格式 |
| topic | 话题 | PX4 uORB 总线上的消息通道名 |
| uORB | 微发布-订阅总线 | PX4 内部模块间的消息交换机制 |
| EKF | 扩展卡尔曼滤波器 | 融合各传感器估计导航状态 |
| NED | 北-东-地坐标系 | 机体位置/速度使用的导航参考系 |
| innovation | 创新(测量残差) | 实际测量与预测之差 |
| test_ratio | 测试比 | 残差相对预测噪声方差的归一化统计量 |
| IMU | 惯性测量单元 | 陀螺 + 加速度计组合 |
| dropout | 丢段/丢弃标记 | ULog B 段记录的数据缺失标记 |
| RSSI/SNR | 接收信号强度 / 信号噪声比 | 衡量链路质量的指标 |
| DOP | 精度因子 | GNSS 几何精度,越小越好 |
| RTK | 实时动态差分定位 | 厘米级高精度定位 |
| Fixed/Float | 固定解 / 浮点解 | RTK 解算状态 |
| jamming/spoofing | 干扰 / 欺骗 | GNSS 的射频压制 vs 伪造信号攻击 |
| WMM | 世界地磁模型 | 全球磁场标准模型 |
| Kp 指数 | 地磁活动指数 | ≥5 表示有磁暴 |
| toilet bowl | 马桶圈现象 | 错误磁数据被融合导致的缓慢绕圈 |
| AGI | 通用人工智能 | 见具身智能文档 |
五、来源与勘误
依据来源:本文基于 PX4 ULog 格式文档、QGroundControl/PlotJuggler 常见用法、PX4 传感器与 EKF 诊断的行业通用口径整理。