日志获取与准备:从飞控下载日志、文件管理与分析工具
拿到一台无人机,第一件事是什么?不是飞,而是搞清楚怎么把飞控里的日志拽出来。我见过不少新手,飞完直接拔电池,结果日志没保存,白忙一场。今天咱们就聊聊日志获取、文件管理,还有三个我用得最多的分析工具。
从飞控下载日志
不同飞控的日志下载方式不太一样。我主要接触PX4和ArduPilot,它们的流程其实大同小异。
| 飞控固件 | 日志存储位置 | 下载方式 |
|---|---|---|
| PX4 | SD卡 /log/ 目录 | USB连接QGroundControl,或直接拔卡 |
| ArduPilot | SD卡 /APM/LOGS/ 目录 | USB连接Mission Planner,或拔卡 |
| Betaflight | 板载Flash | CLI命令或Blackbox工具 |
我个人习惯用USB直连。原因很简单——不用拆机。插上线,打开地面站,找到日志管理页面,勾选需要的文件,点下载就行。
日志文件管理
日志多了以后,管理是个大问题。我刚开始做飞控测试时,一个月攒了200多个.ulg文件,找起来简直崩溃。后来我养成了几个习惯:
- 按日期+任务命名:比如
2024-03-15_loiter_test.ulg,一看就知道是什么时候、什么场景飞的。 - 建立目录结构:根目录按项目分,子目录按日期分。别把所有日志扔一个文件夹里。
- 及时清理:飞控的SD卡空间有限,飞完一次就把日志拷出来,然后删掉飞控上的旧文件。
常用日志分析工具介绍
工具不在多,顺手就行。我主要用三个:FlightPlot、PlotJuggler、pyulog。它们各有侧重,下面详细说说。
FlightPlot
这是PX4官方推荐的桌面工具,Java写的,跨平台。界面比较传统,但胜在稳定。
- 支持.ulg和.px4log格式
- 可以同时绘制多条曲线
- 支持数据导出为CSV
- 内置了一些常用分析模板(比如姿态、GPS、电池)
我记得有一次,飞控在悬停时突然偏航,用FlightPlot把偏航角、电机转速、磁力计数据叠在一起看,很快就发现是磁力计受到了电机干扰。嗯,这种多曲线对比的功能,FlightPlot做得最顺手。
PlotJuggler
这个工具我强烈推荐。它原本是ROS社区的,后来支持了.ulg格式。界面比FlightPlot现代得多,交互也灵活。
- 拖拽式操作,想画什么曲线直接拖
- 支持数据变换(比如求差值、滤波、自定义公式)
- 可以保存布局,下次直接加载
- 支持实时数据流(配合ROS或UDP)
说白了,PlotJuggler就是日志分析里的瑞士军刀。我经常用它做快速排查——把可疑的几个参数拖出来,几秒钟就能看出问题。
pyulog
这是Python库,适合批量处理和自动化分析。如果你需要写脚本处理大量日志,pyulog是首选。
# 用pyulog读取.ulg文件并提取数据
from pyulog import ULog
log = ULog('flight_001.ulg')
data = log.get_dataset('vehicle_attitude')
print(data.data['roll']) # 输出滚转角数据
我写过一个脚本,用pyulog批量检查100份日志,自动标记出GPS丢星、振动超标、电池压降过大的情况。你想想看,要是手动一个个看,得看到什么时候?
工具对比
| 工具 | 适用场景 | 上手难度 | 我最常用的功能 |
|---|---|---|---|
| FlightPlot | 单次详细分析 | 低 | 多曲线对比、模板分析 |
| PlotJuggler | 快速排查、交互式探索 | 中 | 拖拽绘图、数据变换 |
| pyulog | 批量处理、自动化 | 高(需编程) | 脚本批量分析 |
本章知识体系
下面这张图总结了日志获取与准备的核心流程,以及三个工具在其中的定位。
这张图把整个流程串起来了。从飞控里把日志弄出来,做好文件管理,然后根据需求选工具。我个人觉得,工具只是手段,关键是你对日志里每个参数的理解。后面几章,咱们会深入每个参数的含义和常见故障模式。