日志采集、解码与质量门禁¶
“有日志”不等于“日志能回答问题”。一个文件可能完整记录模式切换,却因采样不足无法判断高频振动;也可能包含姿态曲线,却因关键时段发生日志丢帧(dropout)而无法解释失控起点。
本节把日志质量判定放在故障解释之前。分析者先提出具体问题,再判断身份、时间、字段、采样和缺口是否足以回答该问题。

前提条件¶
- 已完成证据保全与初始分诊中的现场安全、原件封存和初始清单;
- 证据主副本已计算摘要并限制写入,当前使用分析副本;
- 飞行器、固件、配置、任务和时钟身份先记录已知部分;允许通过本节只读初步解码回填未知项;
- 已记录日志设备、记录配置、取得工具和取得过程;
- 分析问题已具体化,例如“解锁拒绝的首个条件是什么”,而不是“看看哪里不对”;
- 不会为取得日志而重新装桨、解锁或覆盖现场状态。
从问题反推所需证据¶
| 问题 | 最低字段或证据 | 常见不足 |
|---|---|---|
| 为什么无法解锁 | 解锁请求、禁用标志、健康检查、模式、传感器与消息 | 未解锁时未记录日志 |
| 是否发生飞控重启 | 启动标识、运行时间、日志边界、电源、地面站事件 | 只有飞行中单一日志 |
| 是否先失联再触发安全动作 | 接收状态、链路质量、输入、模式、失效保护状态和动作 | 发射机与飞控时钟未对齐 |
| 是否为机械振动 | 原始或足够高频的惯性数据、采样率、转速/输出和稳定窗口 | 低抽取率、混叠、削波 |
| 是否为控制振荡 | 目标、实际、误差、控制项、执行器输出和饱和状态 | 只看陀螺仪,不看命令 |
| 是否为动力故障 | 输出命令、电压、电流、转速/遥测、姿态响应和物理证据 | 传感器刷新慢、无单路反馈 |
| 是否为导航异常 | 估计器状态、创新或一致性、传感器质量、模式、任务和位置 | 只有地图轨迹截图 |
| 是否为串口或遥测拥塞 | 字节/包计数、错误、队列、消息率、端口配置和供电 | 只看到“无数据” |
字段存在仍不等于字段可信。还要核对单位、更新率、量程、传感器实例和固件语义。
原始取得¶
机载存储仍可安全读取¶
- 记录存储介质外观、标签和安装位置;
- 按01区分位流镜像和逻辑取得;事故级可拆卸介质优先写阻断成像;
- 不运行格式化、修复、清理或“优化存储”;
- 保存介质或逻辑目录结构、文件名、大小和时间戳;
- 计算镜像或第一次逻辑副本的摘要,并记录输入输出错误;
- 对可能相关的前后日志一并保存;
- 将第一次读取失败、重试和错误信息写入处理记录。
只能通过飞控下载¶
- 先评估上电是否会新建日志、覆盖环形空间或改变配置;
- 拆除螺旋桨并隔离执行器;
- 使用受控电源,记录上电时间;
- 禁用会自动同步、升级或写参数的软件行为;
- 使用与固定版本兼容的官方下载路径;
- 下载后立即计算摘要;
- 保留工具输出和失败记录;
- 断电并重新封存设备。
文件损坏¶
恢复工具只能作用于介质镜像或工作副本。保存:
- 损坏原件;
- 镜像摘要;
- 恢复工具和版本;
- 完整命令;
- 恢复前后文件;
- 被跳过、插补或重建的区间;
- 恢复文件的用途限制。
修复后“能够打开”不表示缺失内容已恢复。
固定解码环境¶
每次分析记录:
优先使用与固定固件版本对应的官方或项目维护工具。不同版本的解码器可能改变字段名、单位、枚举和错误恢复方式。
网页查看器若要求上传日志,应先评估数据敏感性、访问控制、保留政策和合规要求。位置、视频、任务、设备标识和操作者信息都可能属于敏感数据;不能确认边界时使用本地工具或脱敏副本。
日志适用性门禁Q0至Q3¶
Q0:不可用¶
满足任一情况:
- 文件为空、无法识别或解码失败;
- 固件、飞行器或事件身份无法对应;
- 时间轴大范围倒退、重复或断裂;
- 目标时段完全缺失;
- 只有截图或二次导出的曲线,没有原始数值;
- 文件曾被覆盖,且无法证明剩余内容属于当次事件。
Q0日志不能用于判断根因。可以保留“文件为何不可用”这一事实,并转向视频、地面站、发射机、物证和现场记录。
Q1:有限¶
典型情况:
- 文件可解析,能确认启动、模式或告警顺序;
- 采样率不足以分析目标动态;
- 关键字段缺失或字段更新率不明;
- 时间同步误差较大;
- dropout存在,但未完全覆盖全部事件;
- 参数快照缺失,无法确定部分语义。
Q1只支持明确、低频、粗粒度事实。不得从低频记录推断高频振动,也不得把没有记录到事件解释为事件没有发生。
Q2:可诊断¶
针对当前问题同时满足:
- 飞行器、固件、参数和事件身份可对应;
- 目标时段可定位且时间戳连续;
- 所需字段存在,单位、实例、量程和更新率已确认;
- 采样链与问题带宽匹配;
- dropout已量化且不覆盖关键动作;
- 命令、状态、响应和环境证据可以对齐;
- 原始文件与派生处理可追溯。
Q2允许检验当前问题的假设,不代表日志对所有问题都可用。
Q3:可复核¶
在Q2基础上还具备:
- 原始文件、解码器、脚本、处理参数和输出摘要已固定;
- 时间窗口、排除规则、单位和坐标转换完整;
- 独立分析者能够从同一证据主副本复现解码数据、图表和日志内结论。
Q3只提高日志处理的可复核性,不修补历史日志缺失,也不自动增强因果结论。正常对照、外部测量、故障注入和纠正前后复测应另按因果证据强度记录;不得为了追求Q3而重演故障。
时间连续性¶
检查:
- 起始与结束时间是否合理;
- 时间戳是否单调;
- 相邻样本间隔的中位数、最大值和分布;
- 是否有重启后从零开始的片段;
- 每类记录是周期发布、事件触发还是变化触发;
- 不同主题是否使用相同时间基准;
- 字段使用硬件采样时间、记录时间、发送时间还是接收时间;
- 队列、传输、缓存和滤波延迟;
- 视频帧率是否恒定;
- GNSS校时是否在事件中发生跳变。
对周期字段建议输出:
只看平均采样率会掩盖短时大缺口。事件触发或变化触发字段没有固定样本间隔,不能套用周期字段的缺口算法。
采样率、更新率和带宽¶
必须区分:
- 控制循环频率;
- 传感器内部输出数据率;
- 主题或字段更新率;
- 日志抽取率;
- 存储写入节奏;
- 解码后的重采样率。
若记录率为控制循环的(n/d),理想有效采样率近似:
[ f_s=f_{loop}\times\frac{n}{d} ]
理想奈奎斯特频率为:
[ f_N=\frac{f_s}{2} ]
实际可信带宽还取决于抽取前抗混叠滤波、时间抖动、字段异步更新和dropout。把低率数据插值到高率不会产生新的信息。
dropout判定¶
先区分:
- 记录器明确报告的dropout;
- 由帧序号、记录序号或平台统计确认的丢失;
- 生产者停止发布;
- 事件或变化触发字段本来就没有周期更新;
- 解码器因损坏记录而跳过的恢复区间。
分别使用平台证据:ULog的dropout记录、DataFlash的DSF等统计、Blackbox帧与解码统计,或协议序列计数。不能仅因某字段一段时间未变化就认定日志丢失。
对每个已确认或疑似缺口记录:
- 开始时间和持续时间;
- 受影响字段;
- 是否覆盖命令、状态转换或异常起点;
- 缺口前后值是否连续;
- 解码器是否报告损坏记录;
- 存储、处理器负载或通信是否有同步异常;
- 当前问题是否仍可回答。
禁止用直线连接跨越缺口后再判断过冲、频率或先后顺序。
如果已知关键动作实际发生但落在缺口内,应记为已执行但不可观测/不可判定;未测试只用于动作确实没有执行。
单位、坐标系和实例¶
分析前固定:
- 角度与弧度;
- 度每秒与弧度每秒;
- 重力加速度与米每二次方秒;
- 电压、电流、功率和容量;
- 机体系、导航系和地理坐标系;
- 正方向、轴映射和传感器安装旋转;
- 原始、滤波后和估计后的信号;
- 主传感器与备用传感器实例;
- 目标值、测量值和误差值。
同名字段在不同平台不能直接拼接。坐标转换必须保留公式、输入单位和验证样例。
四平台日志入口¶
Betaflight 2026.6.2¶
- 保存原始Blackbox文件和完整配置导出;
- 核对目标板、实际PID循环、Blackbox记录比例和日志设备;
- 设备为
NONE时,界面存在Blackbox配置不代表有机载记录; - 检查日志头、帧类型、时间、丢帧和调试模式;
- 诊断所需字段可能依赖固定版本、目标资源和
debug_mode; - 用工作副本进入Blackbox Explorer或兼容解码器。
若改变debug_mode或记录率来补证,该改动属于新的诊断配置,必须记录并在拆桨条件验证;新日志不能反向证明历史事件中未记录的信号。
INAV 9.1.0¶
- 保存Blackbox原始文件、完整配置和固定版本信息;
- 核对记录设备、控制循环抽取比例和字段配置;
- 低记录率适合延长时长,不自动适合振动和快速控制诊断;
- 导航问题同时保存模式、估计状态、GNSS、航向、任务和遥控字段;
- 先处理文件损坏和dropout,再解释曲线。
ArduPilot Copter 4.7.1¶
- 保存DataFlash原始日志、参数和地面站遥测日志;
- 使用消息、模式、错误、估计器、输入、输出、电源和惯性字段建立时间线;
- 通过日志统计或
DSF等记录核对丢失记录,字段存在性以固定版本消息定义为准; - 无法解锁问题可能发生在正常飞行日志开始前;
- 经专项批准可在拆桨状态配置未解锁日志以捕获预解锁事件,但不能借此关闭检查或直接解锁;
- 新增日志配置后检查存储空间、性能影响和恢复步骤。
PX4 v1.17.0¶
- 保存原始ULog、参数、机型配置、事件和地面站日志;
- 核对ULog元数据、主题实例、更新率、dropout和日志开始条件;
- 默认日志不保证包含高频分析需要的全部主题;
- Flight Review或其他查看器输出是派生结果;
- 上传第三方服务前评估位置和任务数据的隐私;
- dropout覆盖异常起点时,不得把前后两段强行拼成连续因果链。
派生处理¶
每次处理只解决一个问题,并记录:
- 输入文件摘要;
- 选取时间窗口及理由;
- 排除起飞、着陆、撞击或缺口的规则;
- 单位和坐标转换;
- 去趋势、滤波、窗函数、重叠率和FFT长度;
- 插值或重采样方法;
- 输出图表和数据;
- 处理脚本摘要或提交;
- 结果适用范围。
若处理会改变峰值、相位或事件时间,应保留处理前后对照。
日志质量审查步骤¶
- 明确待回答问题和目标时间段;
- 核对原始摘要和工作副本;
- 用固定版本工具解码并保存警告;
- 确认平台、固件、飞行器和配置身份;
- 检查时间单调性、重启边界和多源时钟偏差;
- 列出所需字段及实际存在字段;
- 核对单位、实例、坐标系、量程和更新率;
- 量化dropout和损坏区间;
- 判断采样链是否覆盖问题带宽;
- 对每个问题分别给出Q0至Q3;
- 写明允许结论和禁止结论;
- 决定补证方法,优先选择最低风险环境。
通过标准¶
日志质量审查完成应得到:
- 原件、工作副本和派生文件的摘要链;
- 固定解码环境;
- 统一时间线和同步误差;
- 字段、单位、实例和更新率清单;
- dropout和损坏区间清单;
- 针对每个问题的Q0至Q3等级;
- 独立记录E0至E2因果证据强度;
- 允许与禁止结论;
- 缺失证据和最低风险补证方案。
只有当前问题达到Q2,才进入基于该日志的详细故障判断。Q1可以用于分诊,但不能越级承担因果结论。本篇通过只表示日志适用性审查完整,不改变飞行批准。
停止条件¶
- 工具准备修改或覆盖原始文件;
- 文件摘要与清单不一致;
- 固件或格式版本无法识别;
- 解码警告被工具静默忽略;
- 时间跳变、单位或坐标系无法解释;
- 关键区间dropout;
- 采样率或字段更新率不明,却准备做频谱或快速动态结论;
- 上传服务的隐私和保留边界不清;
- 为补日志需要装桨、解锁或飞行,但没有专项授权。
恢复措施¶
日志分析本身不改变飞行器。若为补证修改过日志配置:
- 保留修改前全量配置;
- 在拆桨状态写入单一日志改动;
- 重启后读取并验证;
- 完成低风险记录测试;
- 取得所需证据后撤销临时日志配置并回到旧基线作差异核对;
- 再次读取全量配置并比较差异;
- 未完全恢复时保持
阻断。
补证所得新日志与历史事件分开编号。
若旧基线本身含故障,只把它作为比较对象,不重新投入运行;修复内容另建纠正候选,完成分层回归和批准后才能成为新基线。
质量报告模板¶
问题编号与具体问题:
原始日志摘要:
固定解码环境:
飞行器/固件/参数身份:
目标时间段:
时间同步误差:
所需字段:
存在字段、单位、实例与更新率:
dropout与损坏:
采样链和可信带宽:
质量等级:Q0 / Q1 / Q2 / Q3
因果证据强度:E0 / E1 / E2
允许结论:
禁止结论:
待补证据:
最低风险补证方法:
当前飞行批准:阻断 / 部分恢复 / 恢复
批准范围、批准人与到期条件:
检查理解¶
- 为什么日志质量必须针对具体问题评级?
- 平均采样率正常时,为什么仍要检查最大样本间隔?
- 把低频数据插值到更高频率能否补回高频信息?
- 关键动作落在dropout内应如何标记?
- 为什么新配置取得的日志不能证明历史事件中的未记录信号?