2、日志系统入门:飞控日志文件结构、如何导出日志、日志查看工具介绍
做电调校准,最怕什么?
怕炸机?怕烧电调?其实都不是。我最怕的是——出了问题,手里没有日志。
你想想看,没有日志,就像医生没有化验单,全靠猜。我见过太多人在群里问“为什么我电机转不起来”,然后一群人猜了半小时,最后发现是日志里早就记录了一个“ESC calibration timeout”。
所以这一章,咱们先把日志系统搞明白。说白了,就是教会你三件事:日志长什么样、怎么把它弄出来、用什么工具看。
2.1 飞控日志文件结构
先说说日志文件本身。不同飞控固件,日志格式不一样。我主要用 ArduPilot 和 PX4,咱们就聊这两个。
2.1.1 ArduPilot 的 .bin 日志
ArduPilot 的日志是二进制文件,后缀是 .bin。别被“二进制”三个字吓到,它其实就是一种紧凑的存储方式,省空间、写入快。
一个典型的 .bin 日志,内部结构是这样的:
日志内部结构(简化版)
- 文件头(Header):包含固件版本、硬件类型、参数哈希值。
- 参数块(Parameter Block):记录飞控所有参数,相当于飞行器的“出厂设置快照”。
- 消息流(Message Stream):按时间顺序排列的各类数据消息,比如 GPS、IMU、RC 输入、电调反馈等。
- 文件尾(Footer):包含日志结束标记和校验和。
每个消息都有固定的格式。比如电调相关的消息,通常以 ESC 开头。我记得有一次排查一个电调不响应的问题,就是在日志里搜 ESC,发现有一行写着 ESC_STATUS,里面的温度值直接飙到了 110°C——嗯,物理过热保护了。
2.1.2 PX4 的 .ulog 日志
PX4 用的是 .ulog 格式,全称是“微对象日志”。它比 .bin 更灵活,支持嵌套和可变长度数据。
| 特性 | ArduPilot .bin | PX4 .ulog |
|---|---|---|
| 文件后缀 | .bin | .ulog |
| 存储方式 | 二进制,紧凑 | 二进制,带类型定义 |
| 是否自描述 | 否(需匹配固件版本解析) | 是(文件内包含数据结构定义) |
| 电调相关消息 | ESC_STATUS, ESC_RPM, ESC_TELEM | actuator_outputs, esc_status, battery_status |
| 典型大小(10分钟飞行) | 约 5-15 MB | 约 10-30 MB |
我个人习惯用 PX4 做开发时,会特意把日志记录频率调高一点。虽然文件会大一些,但电调校准那几秒钟的数据,细节越多越好。
2.2 如何导出日志
日志存在飞控的 SD 卡或内部 Flash 里。怎么把它弄到电脑上?分两种情况。
2.2.1 通过 USB 连接导出
这是最常用的方法。飞控连上电脑后,它会像一个 U 盘一样出现。
- 用 USB 线连接飞控和电脑。
- 飞控上电(有些飞控需要单独供电)。
- 电脑上会出现一个名为
APM或PX4的移动磁盘。 - 进入
LOGS或log文件夹。 - 把
.bin或.ulog文件复制出来。
小技巧: 我习惯在复制前先看一眼文件修改时间。有一次我复制了半天,结果发现是三天前的旧日志,白忙活。所以,养成习惯:先确认日志时间戳,再复制。
2.2.2 通过地面站软件导出
如果你不想手动翻文件夹,地面站软件也提供了导出功能。
- Mission Planner(ArduPilot):点击菜单栏的“Flight Data”,然后点“Download Log”。它会列出所有日志,你可以按时间筛选,一键下载。
- QGroundControl(PX4):进入“Analyze View”,选择“Log Download”,同样可以批量导出。
这里有个坑,我曾经踩过:地面站导出时,有时会因为 USB 带宽不足导致日志损坏。所以导出后,我建议你检查一下文件大小——如果明显偏小,大概率是没导全。
警告: 千万不要在飞控还在写日志时直接拔 SD 卡!这会导致日志文件损坏,整段数据都读不出来。正确做法是:先断开飞控电源,再取卡。
2.3 日志查看工具介绍
日志拿到手了,用什么看?
工欲善其事,必先利其器。我这些年试过不下十种工具,最后常用的就这几个。
2.3.1 Mission Planner 的日志分析器
这是 ArduPilot 用户的首选。打开 Mission Planner,点“Flight Data”,然后点“Log Browse”。
它能做什么?
- 以图表形式展示所有数据曲线。
- 支持多通道叠加显示(比如把油门和电机转速放一起看)。
- 内置了“电调校准检测”功能——它会自动标记出校准过程中可能的问题点。
我记得有一次,一个用户说他的电调校准后电机抖动。我用 Mission Planner 打开日志,把 ESC_RPM 和 RC_Throttle 叠在一起看,发现油门在 1500 时,RPM 曲线有一个明显的“台阶”——那是电调内部 PWM 解析出现了非线性。嗯,换了个电调固件版本就解决了。
2.3.2 PX4 的 FlightPlot
PX4 官方推荐的日志查看器。界面比 Mission Planner 简洁,但功能一点不弱。
- 支持 .ulog 格式直接拖拽打开。
- 可以导出图表为图片,方便写报告。
- 内置了“电调校准分析”插件,能自动计算校准过程中的油门-转速对应关系。
2.3.3 命令行工具:pyulog 和 mavlogdump
有时候 GUI 工具不够灵活,我就用命令行。比如我想快速提取日志里所有电调相关的数据:
# 对于 PX4 的 .ulog 文件
pyulog info flight.ulog # 查看日志包含哪些消息类型
pyulog extract esc_status flight.ulog -o esc_data.csv
# 对于 ArduPilot 的 .bin 文件
mavlogdump.py --types ESC flight.bin --output esc_data.csv
这两行命令,就能把电调数据导出成 CSV。然后用 Excel 或者 Python 做进一步分析。我经常这么干,因为有些细节在 GUI 里看不清楚,但用数据一算就明白了。
2.3.4 工具对比
| 工具名称 | 适用固件 | 优点 | 缺点 |
|---|---|---|---|
| Mission Planner | ArduPilot | 功能全面,社区支持好 | 界面稍显臃肿 |
| FlightPlot | PX4 | 轻量,专为 .ulog 优化 | 不支持 .bin 格式 |
| pyulog | PX4 | 可编程,适合批量处理 | 需要 Python 基础 |
| mavlogdump | ArduPilot | 灵活,可输出多种格式 | 命令行操作,不够直观 |
我个人建议:新手先用 Mission Planner 或 FlightPlot,把曲线看熟了。等遇到复杂问题时,再上命令行工具。别一上来就搞脚本,容易把自己绕晕。
2.4 本章知识体系
下面这张图,帮你把日志系统的整体脉络理清楚。从日志产生,到导出,再到分析工具,是一条完整的链路。
这张图从左到右,从上到下,就是日志系统的完整工作流。你每次做电调校准,都应该走一遍这个流程:飞控产生日志 → 选择合适格式 → 导出到电脑 → 用工具分析。
少一步,都可能漏掉关键信息。
核心要点回顾:
- ArduPilot 用 .bin,PX4 用 .ulog,两者结构不同,但都包含电调相关消息。
- 导出日志优先用 USB 直连,注意检查文件完整性和时间戳。
- 查看工具:新手用 Mission Planner / FlightPlot,进阶用命令行。
- 日志是电调校准故障排查的第一手证据——没有日志,一切分析都是猜测。