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 日志下载方法:三种途径

拿到日志文件,才能开始分析。下载方式主要有三种:

  1. QGC内直接下载(无线/有线)
    • 连接飞控 → 点击「分析工具」→ 选择日志 → 下载
    • 优点:方便,不用拔卡
    • 缺点:速度慢(尤其无线),大文件容易断
  2. 拔SD卡读卡器拷贝
    • 直接拔卡 → 插读卡器 → 复制到电脑
    • 优点:速度快,稳定
    • 缺点:需要拆机(有些飞控SD卡槽在内部)
  3. Mavlink FTP协议下载
    • 通过QGC或命令行工具(如mavftp)拉取
    • 优点:远程下载,不用靠近飞机
    • 缺点:配置复杂,新手容易搞错路径
我的建议:现场调试用方法1,快速看一眼日志有没有记录。正式分析用方法2,把日志完整拷到电脑上再用QGC或Python脚本慢慢看。方法3嘛……除非你搞集群或者远程运维,否则没必要折腾。

1.5 知识体系总览:日志分析第一步

下面这张图,是我自己总结的日志分析知识体系。你看一遍,心里就有谱了。

QGC日志分析知识体系 QGC日志分析 日志类型 日志结构 存储与下载 .bin (APM) .ulog (PX4) Header Definition Data Flash存储 SD卡存储 QGC直连 拔卡拷贝 FTP协议 核心思路:先识别日志类型 → 理解结构 → 正确获取文件 → 后续分析 本章重点:类型判断 + 存储位置 + 下载方法

这张图把日志分析的起点画清楚了。你从左上角开始看:先搞清楚日志是.bin还是.ulog,然后理解它的三段式结构,最后选一种方式把文件搞到手。这三步走完,你才有资格谈「分析」二字。

一句话总结:日志分析的第一步,不是打开QGC点「分析」,而是先确认你拿到的文件对不对、全不全、能不能解析。这一步走稳了,后面才不会白忙活。