日志查看工具:FlightPlot、PlotJuggler 与 pyulog
做 PX4 日志分析,说白了就是跟数据打交道。你手里有 ulg 文件,但光看二进制码可不行——得把它变成能看懂的曲线和数字。这一章我带你认识三样趁手的工具:FlightPlot、PlotJuggler,还有 Python 库 pyulog。
我个人习惯是三个工具混着用。FlightPlot 适合快速扫一眼,PlotJuggler 适合深度折腾,pyulog 嘛……适合写脚本批量处理。咱们一个一个来。
FlightPlot:官方出品,简单直接
FlightPlot 是 PX4 官方维护的桌面工具,用 Java 写的。跨平台,Windows、macOS、Linux 都能跑。
安装
去 PX4 的 GitHub Releases 页面下载最新 jar 包就行。我建议你直接下载带 JRE 的版本,省得自己配 Java 环境。
# 如果你在 Linux 上,也可以从终端启动
java -jar flightplot.jar
嗯,这里要注意:如果你的系统 Java 版本太老,可能打不开。我遇到过一回,折腾了半天才发现是 Java 8 的问题,换成 11 就好了。
界面速览
打开 FlightPlot,你会看到左右两栏:
- 左侧:数据树,按模块分组(sensor、estimator、actuator 等)
- 右侧:绘图区,选中的变量会在这里画曲线
操作很简单:点左侧的变量名,右侧就出图。想对比多个变量?按住 Ctrl 多选就行。
PlotJuggler:曲线调优利器
PlotJuggler 是我最常用的工具。为什么?因为它能让你像玩调音台一样操作曲线——缩放、平移、叠加、做数学运算,样样都行。
安装
PlotJuggler 官方提供了各平台的安装包。我个人推荐用 conda 装,干净利落:
conda install -c conda-forge plotjuggler
或者直接下载 AppImage(Linux)或 exe(Windows)。
界面布局
PlotJuggler 的界面分三块:
| 区域 | 功能 |
|---|---|
| 左侧数据面板 | 显示所有可用的 topic 和变量,支持搜索过滤 |
| 中央绘图区 | 曲线展示区,支持多标签页 |
| 底部时间轴 | 拖动选择时间范围,支持缩放 |
我第一次用 PlotJuggler 时,最惊艳的是它的 拖拽式操作:从左侧拖一个变量到绘图区,曲线就出来了。再拖一个,两条曲线叠在一起,对比一目了然。
加载 ulg 文件
PlotJuggler 原生支持 ulg 格式。点 "Load Data",选你的日志文件,几秒钟就能看到所有数据。我遇到过文件特别大的情况(飞了俩小时),PlotJuggler 也能扛住,就是加载慢点。
pyulog:脚本党的最爱
有时候你不想点鼠标,想写脚本批量处理日志——比如把 100 个日志的振动指标算出来。这时候 pyulog 就派上用场了。
安装
pip install pyulog
就一行命令,没什么坑。我建议你在虚拟环境里装,别污染全局 Python。
基础用法
pyulog 的核心是 ULog 类。看个例子:
from pyulog import ULog
# 加载日志
ulog = ULog('flight_01.ulg')
# 获取所有 topic 名称
topics = ulog.get_topic_list()
for t in topics:
print(t.name)
# 读取某个 topic 的数据
data = ulog.get_dataset('sensor_accel')
print(data.data['x']) # 加速度 X 轴数据
这段代码能帮你快速摸清日志里有什么数据。我在项目里经常用它做自动化检查——比如判断起飞前 GPS 锁星数是否达标。
数据导出
想把数据导出成 CSV 给同事?一行代码搞定:
ulog.to_csv('sensor_accel', 'accel_data.csv')
ULog(..., mode='lazy') 延迟加载,只读需要的部分。
工具对比:什么时候用哪个?
| 场景 | 推荐工具 | 理由 |
|---|---|---|
| 快速查看单次飞行 | FlightPlot | 启动快,操作简单 |
| 深度分析、多曲线对比 | PlotJuggler | 交互强,支持公式运算 |
| 批量处理、自动化检查 | pyulog | 可编程,适合重复劳动 |
| 给非技术人员看数据 | FlightPlot | 界面清爽,不容易误操作 |
说白了,这三个工具不是替代关系,是互补关系。我自己的流程是:先用 pyulog 跑一遍批量检查,发现异常再用 PlotJuggler 细看,最后用 FlightPlot 截图发报告。
知识体系总览
下面这张图帮你理清本章的核心脉络:
看到这张图你应该明白了:三个工具各有侧重,但组合起来就是一套完整的日志分析流水线。我个人建议你先从 PlotJuggler 入手,因为它最直观,也最能帮你建立对数据的直觉。等用熟了,再回头学 pyulog 的批处理能力——那时候你会发现自己已经离不开它了。