4、ArduPilot日志系统:日志类型、配置与下载

做飞控调试这么多年,我越来越觉得日志系统就是飞行器的「黑匣子」。飞机在天上飞了啥、姿态怎么抖的、传感器有没有抽风,全得靠它说话。今天咱们就好好聊聊ArduPilot的日志系统——说白了,就是怎么让飞机老老实实把飞行数据记下来,再想办法弄出来分析。

4.1 日志类型:LOG、BIN、KMZ

ArduPilot支持三种日志格式,我刚开始接触时也搞混过。其实它们各有各的用处,咱们一个一个说。

4.1.1 LOG格式(.log)

这是最原始的文本格式。说白了就是纯文本,每行一条数据,用逗号分隔。优点是你能用记事本直接打开看,缺点嘛……文件大、解析慢。我早期做原型验证时喜欢用这个,因为调试方便,看一眼就知道数据对不对。

4.1.2 BIN格式(.bin)

这是二进制格式,也是我最常用的。文件小、写入快,对SD卡的压力也小。你想想看,飞控在高速飞行时每秒要记录几百个数据点,如果用文本格式,SD卡根本扛不住。BIN格式压缩率高,一个小时的飞行数据也就几十兆。

我的习惯:量产机型一律用BIN格式。LOG格式只适合实验室环境下的快速验证。

4.1.3 KMZ格式(.kmz)

这个其实是Google Earth用的压缩包。里面包含了飞行轨迹的KML文件和一堆截图。我一般用来做飞行演示或者给客户看航线效果。嗯,这里要注意:KMZ不是原始数据,它只是可视化产物,不能用于深度分析。

格式 扩展名 特点 推荐场景
LOG .log 文本格式,可读性好 调试阶段
BIN .bin 二进制,体积小 量产/正式飞行
KMZ .kmz 可视化压缩包 汇报/演示

4.2 日志参数配置

日志不是你想记就能记的,得先配参数。ArduPilot里跟日志相关的参数主要分三块:开关控制、采样率、消息类型。

4.2.1 核心参数

  • LOG_BACKEND_TYPE:日志存储方式。默认是1(SD卡),也可以设成2(内部闪存)或者3(两者都用)。我建议用SD卡,容量大、好取数据。
  • LOG_BACKEND_RATE:日志写入速率。单位是Hz,默认50。如果你在做高频振动分析,可以调到100甚至200,但要注意SD卡写入速度。
  • LOG_DISARMED:解锁前是否记录日志。默认是0(不记录)。我建议设成1,因为很多故障发生在解锁前——比如传感器预热异常、GPS搜星慢,这些数据丢了很可惜。
我曾经踩过的坑:有一次把LOG_BACKEND_RATE设成了400Hz,结果飞了3分钟SD卡就写满了,后面的数据全丢了。后来我学乖了,先算一下:每秒数据量 = 消息数 × 每条消息大小 × 采样率。一般50Hz足够用了。

4.2.2 消息类型配置

ArduPilot的日志消息是按类型分的。比如ATT(姿态)、GPS(定位)、IMU(惯性测量)。你可以通过LOG_BITMASK参数来控制记录哪些消息。我个人习惯是:

  • 日常飞行:只开ATT、GPS、IMU、RCIN、RCOU
  • 故障排查:全开,包括CTUN(控制)、NTUN(导航)、MAG(磁力计)
  • 传感器标定:只开IMU、MAG、BARO

4.3 日志文件结构

打开一个BIN文件,你看到的不是乱码,而是有规律的数据流。ArduPilot的日志结构其实很简单,就三个层次:

4.3.1 文件头

每个日志文件开头都有一段元数据,记录了飞控固件版本、参数列表、硬件信息。我经常用这个来确认飞机用的是不是最新固件,有没有人偷偷改过参数。

4.3.2 消息体

这是核心部分。每条消息由三部分组成:

  • 时间戳:微秒级,从飞控启动开始算
  • 消息ID:比如ATT是0x01,GPS是0x07
  • 数据负载:具体数值,比如姿态角、位置坐标

举个例子,一条ATT消息大概长这样:

时间戳: 1234567890
消息ID: ATT
Roll: 1.23
Pitch: -0.45
Yaw: 89.12

4.3.3 文件尾

日志结束时会有个结束标记。如果文件突然中断(比如掉电),这个标记就没了。我判断日志是否完整,第一件事就是看有没有文件尾。

核心逻辑图:下面这张图展示了日志从生成到存储的完整流程。
ArduPilot日志系统核心流程 传感器数据 IMU/GPS/磁力计 消息封装 时间戳+ID+数据 缓冲队列 环形缓冲区 SD卡写入 BIN/LOG文件 参数配置 采样率控制 下载方式:SD卡/Mavlink

4.4 日志下载方式

数据记下来了,怎么拿出来?我常用的有三种方式:

4.4.1 SD卡直读

最直接的方法。把SD卡拔出来,插电脑上拷贝。优点是速度快,一个G的数据几秒钟就传完了。缺点嘛……你得拆飞机。我一般只在实验室或者维修时用这个。

4.4.2 Mavlink下载

通过数传或者USB线,用Mission Planner或者QGroundControl下载。操作步骤:

  1. 连接飞控(USB或数传)
  2. 打开Mission Planner的「MAVLink Log Download」页面
  3. 选择要下载的日志文件
  4. 点击下载,等进度条走完

这个方法不用拆飞机,但速度慢。我记得有一次下载一个200MB的日志,用了将近20分钟。嗯,如果你在野外调试,建议用这个。

4.4.3 远程下载(高级玩法)

如果你装了4G模块或者数传电台,可以远程下载日志。我有个项目在山区,每次飞完直接远程拉数据,省得爬山了。不过要注意信号稳定性,断连了得重传。

我的建议:日常调试用Mavlink下载,省事。如果日志文件超过500MB,还是拔SD卡吧,别跟自己过不去。

好了,日志系统这块就聊到这儿。记住一句话:日志是飞控的「黑匣子」,配置好了、下载对了,你才能知道飞机在天上到底经历了什么。

专注资料整理