1. QGC日志概览:认识日志文件结构与类型
做飞控调试这么多年,我越来越觉得——日志就是飞行器的「黑匣子」。飞机在天上飞了啥、干了啥、为啥炸机,全写在日志里。今天咱们就从最基础的开始,把QGC日志的底裤扒干净。
1.1 日志文件类型:.bin vs .ulog
QGC能处理的日志主要有两种格式。说白了,一个老派,一个新潮。
| 特性 | .bin(老派) | .ulog(新潮) |
|---|---|---|
| 适用固件 | APM(ArduPilot) | PX4 |
| 数据结构 | 二进制流,无自描述 | 带消息定义,自描述 |
| 解析难度 | 需要对应固件版本参数表 | 自带字段定义,解析友好 |
| 文件大小 | 相对紧凑 | 略大,但信息更完整 |
| 兼容性 | 老版本APM专用 | PX4全系列 + 新版APM |
我个人的习惯:拿到日志先看后缀。如果是.bin,我会先问一句「飞控是APM还是PX4?」——因为有一次我拿.bin当ulog解析,折腾了半天才发现固件不对。嗯,这种低级错误犯一次就够了。
1.2 日志文件结构:里面到底装了啥?
你想想看,一个日志文件少说几十MB,里面不是乱码,而是按固定格式打包的飞行数据。以ulog为例,它的结构大致是这样的:
ULog文件结构:
┌─────────────────────────────┐
│ Header (3字节) │ ← 魔数 + 版本
├─────────────────────────────┤
│ Definition Section │ ← 消息格式定义(字段名、类型)
│ - 多个 message definition │
├─────────────────────────────┤
│ Data Section │ ← 真正的飞行数据
│ - 时间戳 + 消息ID + 数据 │
│ - 循环记录直到文件结束 │
└─────────────────────────────┘
这里有个关键点:Definition Section 是ulog的「字典」。没有它,后面的数据就是一堆二进制乱码。PX4在设计时把这个字典写进了日志文件本身,所以哪怕固件版本变了,也能正确解析。
避坑指南:我曾经遇到过一个问题——用旧版QGC解析新版PX4的ulog,结果部分参数显示异常。原因就是QGC内置的解析器没更新,但ulog自带的definition section其实是对的。后来我改用pyulog手动解析,才拿到真实数据。所以,别完全信任QGC的图形界面,关键数据要自己拿原始值核对。
1.3 日志存储位置:飞控 vs SD卡
日志存在哪儿?这问题看似简单,但坑不少。
- 飞控内部Flash:容量小(通常几MB),循环覆盖。适合短时间试飞。
- SD卡:容量大(GB级别),持续记录。我建议所有正式飞行都用SD卡。
我记得有一次帮朋友排查炸机原因,发现日志只记录了前30秒——因为飞控Flash满了,后面的数据全被覆盖了。从那以后,我给自己定了个规矩:只要飞航线,必插SD卡。
注意:SD卡不是插上就能用。需要先在QGC里确认「SD卡检测」状态为绿色。另外,SD卡格式建议用FAT32,exFAT在某些飞控上会出兼容性问题。
1.4 日志下载方法:三种途径
拿到日志文件,才能开始分析。下载方式主要有三种:
- QGC内直接下载(无线/有线)
- 连接飞控 → 点击「分析工具」→ 选择日志 → 下载
- 优点:方便,不用拔卡
- 缺点:速度慢(尤其无线),大文件容易断
- 拔SD卡读卡器拷贝
- 直接拔卡 → 插读卡器 → 复制到电脑
- 优点:速度快,稳定
- 缺点:需要拆机(有些飞控SD卡槽在内部)
- Mavlink FTP协议下载
- 通过QGC或命令行工具(如mavftp)拉取
- 优点:远程下载,不用靠近飞机
- 缺点:配置复杂,新手容易搞错路径
我的建议:现场调试用方法1,快速看一眼日志有没有记录。正式分析用方法2,把日志完整拷到电脑上再用QGC或Python脚本慢慢看。方法3嘛……除非你搞集群或者远程运维,否则没必要折腾。
1.5 知识体系总览:日志分析第一步
下面这张图,是我自己总结的日志分析知识体系。你看一遍,心里就有谱了。
这张图把日志分析的起点画清楚了。你从左上角开始看:先搞清楚日志是.bin还是.ulog,然后理解它的三段式结构,最后选一种方式把文件搞到手。这三步走完,你才有资格谈「分析」二字。
一句话总结:日志分析的第一步,不是打开QGC点「分析」,而是先确认你拿到的文件对不对、全不全、能不能解析。这一步走稳了,后面才不会白忙活。