日志文件结构:解析无人机日志文件格式

做飞控这么多年,我见过太多人拿到日志后一脸茫然——打开一看全是乱码,或者一堆看不懂的字段名。其实说白了,日志文件就是飞机的「黑匣子」,记录着它从起飞到炸机的每一秒状态。今天我就带你把这些文件格式彻底搞明白。

常见的日志文件格式

不同飞控系统用的日志格式不一样,我接触最多的有三种:

格式 扩展名 常见于 特点
二进制日志 .bin PX4、ArduPilot 体积小、解析快、需要专用工具
文本日志 .log ArduPilot(旧版) 可读性好、但文件大
遥测日志 .tlog 地面站(Mission Planner等) 记录的是地面站收到的数据

我个人习惯优先看 .bin 文件,因为它最完整。有一次我帮朋友分析炸机原因,他给我的是 .tlog 文件,结果发现遥测链路在炸机前几秒就断了,关键数据全丢了——嗯,这就是个坑。

数据帧类型:日志里的「语言」

日志文件不是一团乱码,它是由一个个「数据帧」组成的。每个数据帧就像一句话,告诉你飞机在某个时刻的状态。

1. 消息帧(MSG)

这是最容易读的——直接是文字信息。比如:

MSG, 100, 3, "PreArm: Check GPS"

意思是在第100秒,飞控输出了一条预检失败信息。我遇到过一个案例,用户说飞机起飞就翻,结果日志里全是这种预检失败消息——他根本没等自检完成就强行解锁了。

2. 姿态帧(ATT)

记录飞机的滚转、俯仰、偏航角。炸机前姿态数据往往会出现异常抖动。

ATT, 100.5, 12.3, -5.1, 45.0

这行数据表示:第100.5秒时,滚转12.3度,俯仰-5.1度,偏航45度。

3. GPS帧(GPS)

包含经纬度、高度、卫星颗数、定位精度等。我曾经遇到一个案例,飞机飞着飞着突然往一个方向猛冲,查日志发现GPS帧里的卫星颗数从12颗骤降到3颗——显然是GPS信号被干扰了。

4. 电机帧(MOT)

记录每个电机的输出值(PWM或百分比)。这是判断电机是否正常工作的关键。

MOT, 100.5, 1500, 1520, 1480, 1510

四个数值分别对应四个电机的PWM值。正常悬停时它们应该差不多,如果某个电机数值突然归零或异常偏高,那基本就是它出问题了。

5. 传感器帧(IMU、BARO、MAG)

IMU记录加速度和角速度,BARO记录气压高度,MAG记录磁罗盘数据。炸机前这些数据往往会有「征兆」。

关键字段速查表

字段缩写全称含义
TimeUSTime Microseconds时间戳(微秒)
Roll/Pitch/Yaw姿态角飞机当前角度
AltAltitude高度(米)
VccVoltage电池电压
CurrCurrent电流
NSatsNumber of SatellitesGPS卫星颗数
HDopHorizontal Dilution of Precision水平定位精度

日志文件内部结构

你想想看,一个 .bin 文件里可能有几十万行数据,飞控是怎么组织的?其实它有一个固定的结构:

[文件头] → [参数块] → [数据块1] → [数据块2] → ... → [数据块N]
  • 文件头:包含固件版本、硬件类型、日志格式版本
  • 参数块:记录所有飞控参数(PID、滤波器设置等)
  • 数据块:按时间顺序排列的各类数据帧

我一般拿到日志后,第一步不是看数据,而是先看参数块——很多炸机原因其实在参数里就埋下了伏笔。比如有一次,我发现用户把「最大倾斜角」设成了80度,这飞机不翻才怪。

如何快速定位关键数据

面对几十万行日志,你不可能逐行看。我分享几个实用技巧:

  1. 先看时间戳:找到炸机时刻,往前推5-10秒重点分析
  2. 看异常值:比如电机输出突然归零、姿态角突变、GPS HDop飙升
  3. 对比多个传感器:比如IMU和GPS的高度数据是否一致

我的小技巧:在Mission Planner里打开日志后,直接按Ctrl+F搜索「ERR」或「FAIL」——飞控自己报的错误往往就是突破口。我曾经靠这个在5分钟内找到了一个电机堵转的案例。

日志解析工具

工欲善其事,必先利其器。常用的工具有:

  • Mission Planner:最常用,图形化界面,适合快速浏览
  • PyLogViewer:Python写的,适合做批量分析
  • MAVExplorer:命令行工具,适合脚本处理

我个人偏爱用MAVExplorer做深度分析,因为它可以写脚本批量提取数据。比如我想看所有电机输出异常的时刻,一行命令就搞定了。

注意:不同固件版本的日志格式可能有细微差别。比如ArduPilot 4.0之后,某些数据帧的字段顺序变了。如果你用旧版工具解析新版日志,可能会得到错误的结果。我建议每次更新固件后,也同步更新解析工具。

知识体系总览

下面这张图帮你理清日志文件结构的全貌:

无人机日志文件结构知识体系 文件格式 数据帧类型 关键字段 .bin 二进制 .log 文本 .tlog 遥测 MSG 消息帧 ATT 姿态帧 GPS 定位帧 MOT 电机帧 IMU 传感器 TimeUS 时间 Roll/Pitch 姿态 Alt 高度 Vcc/Curr 电源 NSats/HDop GPS 核心思路:从文件格式 → 数据帧类型 → 关键字段,逐层深入定位问题 炸机分析 = 找对格式 + 看懂帧类型 + 抓住关键字段

说实话,日志分析这件事,刚开始会觉得眼花缭乱。但只要你掌握了文件结构,知道每种数据帧记录了什么,再配合关键字段去定位,炸机原因其实就藏在这些数字里。我见过太多人一上来就盯着姿态数据看半天,结果发现是电池电压先出了问题——所以我的建议是,按顺序来,别跳步。


专注资料整理