1、课程导论与日志基础:无人机日志是什么?为什么重要?日志文件的常见格式(BIN、LOG、CSV)
1.1 无人机日志到底是什么?
说白了,无人机日志就是飞控系统在飞行过程中记下的一本「流水账」。它把传感器读数、电机转速、遥控器信号、GPS坐标、飞行模式切换……所有你能想到的关键数据,按时间顺序一条条写进文件里。
我经常跟学员打一个比方:日志就是黑匣子。飞机坠了、炸了、飞丢了,你找回来第一件事不是拆电机,而是读日志。为什么?因为日志不会撒谎。它忠实地记录了每一毫秒发生了什么。
我个人习惯把日志分成两类:
- 实时日志:飞控在运行过程中实时写入的数据流。掉电就停,但数据量极大。
- 事后日志:飞行结束后从飞控存储介质(SD卡、内部Flash)导出的完整文件。我们做故障诊断主要看这个。
核心观点:没有日志的无人机,就像没有仪表盘的飞机。你只能凭感觉猜问题,而感觉往往是错的。
1.2 为什么日志对故障诊断如此重要?
我在项目中遇到过不少这样的场景:用户说「飞机突然掉下来了」,但问他当时什么模式、电压多少、有没有报错,一概不知。这时候日志就是唯一的突破口。
日志的价值体现在三个层面:
- 还原现场:精确到毫秒的时间戳,能告诉你故障发生前0.5秒发生了什么。是电机停了?还是GPS丢星了?一看便知。
- 量化分析:感觉「飞机抖得厉害」和实测「振动值达到30G」是两回事。日志给出的是数字,不是感觉。
- 对比验证:修完飞机再飞一次,对比两次日志的差异,就能确认问题是否真的解决了。
我的经验:拿到一台炸过的飞机,我第一件事不是通电,而是先拔SD卡读日志。通电可能会让损坏的飞控产生更多错误数据,干扰判断。
你想想看,如果飞机在空中突然切到自稳模式,而你明明没动过遥控器——这大概率是信号丢失或飞控判断出了问题。日志里会清清楚楚记录下模式切换的时刻和触发条件。这就是日志的威力。
1.3 常见的日志文件格式
不同飞控厂商、不同固件版本,日志格式千差万别。但主流就三种:BIN、LOG、CSV。我一个个说。
| 格式 | 扩展名 | 典型来源 | 特点 |
|---|---|---|---|
| BIN | .bin | ArduPilot / PX4 | 二进制,体积小,解析需专用工具 |
| LOG | .log | Pixhawk 原生 / Mission Planner | 文本格式,可读性中等,带时间戳 |
| CSV | .csv | DJI / 部分开源飞控导出 | 纯文本,Excel可直接打开,数据量大 |
1.3.1 BIN 格式
BIN 是二进制文件,说白了就是一堆0和1。人眼直接看是乱码,必须用工具解析。但它的好处是体积小、写入快。飞控的存储空间和写入速度都很有限,BIN 格式能在有限资源下记录更多数据。
我记得有一次帮客户分析一架植保机的坠毁原因。日志文件只有 2MB,但解压后包含了整整 45 分钟的飞行数据。如果是 CSV,这个文件至少 50MB 起步,飞控根本写不完。
注意:BIN 格式的解析依赖飞控固件版本。同一个飞控,固件从 4.0 升到 4.1,BIN 文件内部结构可能就变了。解析工具必须同步更新,否则会报错或解析出错误数据。
1.3.2 LOG 格式
LOG 文件是 ArduPilot 生态中最常见的格式。它本质上是文本文件,但带有一套自己的标记语言。每一行以 MSG、GPS、IMU 等标签开头,后面跟着逗号分隔的数据。
举个例子,一段真实的 LOG 片段长这样:
MSG, 255, 1, ArduCopter V4.0.3
GPS, 10, 3, 22.54321, 114.12345, 50.0, 0.5, 0.3, 12
IMU, 10, 0.01, -0.02, 9.81, 0.5, -0.3, 0.1
MOT, 10, 1100, 1120, 1080, 1090, 0, 0, 0, 0
你看,第一行告诉你固件版本,第二行是GPS数据(经纬度、高度、精度),第三行是IMU加速度和角速度,第四行是四个电机的PWM输出值。结构清晰,但数据量大了之后人工阅读非常痛苦。
我建议初学者先用 Mission Planner 或 MAVExplorer 打开 LOG 文件,图形化查看。等熟悉了数据含义,再尝试直接读文本。
1.3.3 CSV 格式
CSV 是最「亲民」的格式。任何文本编辑器、Excel、WPS 都能打开。每一列有表头,每一行是一条数据。比如:
timestamp, roll, pitch, yaw, alt, vx, vy, vz
0.000, 0.12, -0.05, 1.23, 0.00, 0.00, 0.00, 0.00
0.020, 0.13, -0.04, 1.24, 0.01, 0.05, -0.02, 0.01
0.040, 0.11, -0.06, 1.22, 0.02, 0.08, -0.03, 0.02
CSV 的缺点也很明显:冗余大。每条数据都带时间戳和表头信息,同样的数据量,CSV 文件体积是 BIN 的 10 倍以上。所以飞控很少直接写 CSV,通常是后期用工具把 BIN 或 LOG 转换成 CSV 再分析。
避坑指南:我曾经用 Excel 直接打开一个 200MB 的 CSV 日志,结果电脑卡死了 10 分钟。后来我学乖了,先用 head -n 1000 命令看前 1000 行,确认数据结构没问题,再用 Python 或 MATLAB 做批量分析。
1.4 三种格式的对比与选型建议
为了让你一目了然,我整理了一张对比表:
| 维度 | BIN | LOG | CSV |
|---|---|---|---|
| 可读性 | 差(需工具) | 中(带标签) | 好(Excel可开) |
| 文件体积 | 小 | 中 | 大 |
| 写入速度 | 快 | 中 | 慢 |
| 解析难度 | 高 | 中 | 低 |
| 适用场景 | 飞控原生存储 | ArduPilot 生态 | 后期数据分析 |
我的建议是:日常诊断用 LOG,深度分析转 CSV,归档存储留 BIN。LOG 格式在可读性和数据完整性之间取得了最好的平衡。
1.5 本章知识体系总览
下面这张图帮你理清本章的核心逻辑:
1.6 本章小结
这一章我们讲了三件事:
- 日志是什么:飞控的「黑匣子」,记录一切飞行数据。
- 为什么重要:没有日志,故障诊断就是盲人摸象。
- 三种格式:BIN(体积小、需解析)、LOG(可读性中等、ArduPilot 标配)、CSV(通用但体积大)。