1、课程导论与日志基础:无人机日志是什么?为什么重要?日志文件的常见格式(BIN、LOG、CSV)

1.1 无人机日志到底是什么?

说白了,无人机日志就是飞控系统在飞行过程中记下的一本「流水账」。它把传感器读数、电机转速、遥控器信号、GPS坐标、飞行模式切换……所有你能想到的关键数据,按时间顺序一条条写进文件里。

我经常跟学员打一个比方:日志就是黑匣子。飞机坠了、炸了、飞丢了,你找回来第一件事不是拆电机,而是读日志。为什么?因为日志不会撒谎。它忠实地记录了每一毫秒发生了什么。

我个人习惯把日志分成两类:

  • 实时日志:飞控在运行过程中实时写入的数据流。掉电就停,但数据量极大。
  • 事后日志:飞行结束后从飞控存储介质(SD卡、内部Flash)导出的完整文件。我们做故障诊断主要看这个。

核心观点:没有日志的无人机,就像没有仪表盘的飞机。你只能凭感觉猜问题,而感觉往往是错的。

1.2 为什么日志对故障诊断如此重要?

我在项目中遇到过不少这样的场景:用户说「飞机突然掉下来了」,但问他当时什么模式、电压多少、有没有报错,一概不知。这时候日志就是唯一的突破口。

日志的价值体现在三个层面:

  1. 还原现场:精确到毫秒的时间戳,能告诉你故障发生前0.5秒发生了什么。是电机停了?还是GPS丢星了?一看便知。
  2. 量化分析:感觉「飞机抖得厉害」和实测「振动值达到30G」是两回事。日志给出的是数字,不是感觉。
  3. 对比验证:修完飞机再飞一次,对比两次日志的差异,就能确认问题是否真的解决了。

我的经验:拿到一台炸过的飞机,我第一件事不是通电,而是先拔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 本章知识体系总览

下面这张图帮你理清本章的核心逻辑:

无人机日志知识体系 无人机日志 是什么 飞控的「黑匣子」 为什么重要 还原现场·量化分析·对比验证 常见格式 BIN / LOG / CSV BIN 二进制 LOG 文本标签 CSV 纯文本 💡 选型建议 日常诊断用 LOG 深度分析转 CSV

1.6 本章小结

这一章我们讲了三件事:

  • 日志是什么:飞控的「黑匣子」,记录一切飞行数据。
  • 为什么重要:没有日志,故障诊断就是盲人摸象。
  • 三种格式:BIN(体积小、需解析)、LOG(可读性中等、ArduPilot 标配)、CSV(通用但体积大)。