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 盘一样出现。

  1. 用 USB 线连接飞控和电脑。
  2. 飞控上电(有些飞控需要单独供电)。
  3. 电脑上会出现一个名为 APM 或 PX4 的移动磁盘。
  4. 进入 LOGS 或 log 文件夹。
  5. 把 .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 直接导出 地面站导出 SD 卡直读 Mission Planner FlightPlot 命令行工具 核心:日志是电调校准故障排查的第一手证据

这张图从左到右,从上到下,就是日志系统的完整工作流。你每次做电调校准,都应该走一遍这个流程:飞控产生日志 → 选择合适格式 → 导出到电脑 → 用工具分析。

少一步,都可能漏掉关键信息。

核心要点回顾:

  • ArduPilot 用 .bin,PX4 用 .ulog,两者结构不同,但都包含电调相关消息。
  • 导出日志优先用 USB 直连,注意检查文件完整性和时间戳。
  • 查看工具:新手用 Mission Planner / FlightPlot,进阶用命令行。
  • 日志是电调校准故障排查的第一手证据——没有日志,一切分析都是猜测。