日志查看工具:从安装到实战

做PX4飞控调试,说白了就是跟日志打交道。你想想看,飞机在天上飞了几分钟,下来后你拿什么去分析它到底经历了什么?全靠日志。所以,选对工具、用好工具,是每个飞控工程师的基本功。

这一章,我带你过一遍最常用的几款日志分析工具。不是那种照本宣科的安装教程,而是结合我这些年踩过的坑,告诉你每个工具到底该什么时候用、怎么用。

FlightPlot:老牌工具,稳扎稳打

FlightPlot是PX4官方最早推荐的日志查看器之一。虽然现在用的人少了些,但我个人习惯在快速查看日志时还是会打开它——启动快,界面简洁,不折腾。

安装与启动

FlightPlot基于Java,所以你得先装JDK。我建议用JDK 11以上版本,之前有学员用JDK 8跑新版本FlightPlot,结果图表渲染卡成PPT。

# Ubuntu / Debian
sudo apt install default-jre
wget https://github.com/PX4/FlightPlot/releases/latest/download/flightplot.jar
java -jar flightplot.jar

# macOS
brew install --cask flightplot

# Windows
直接下载exe安装包,双击运行
注意:FlightPlot对中文路径支持不太好。我曾经把日志放在“桌面/测试数据”文件夹下,结果死活打不开。改成英文路径后一切正常。所以,养成好习惯:所有日志文件放在纯英文路径下。

界面速览

打开FlightPlot后,你会看到三个主要区域:

  • 左侧面板:日志参数树,按模块分组(如vehicle_attitude、sensor_combined等)
  • 右侧绘图区:选中的参数会在这里绘制曲线
  • 底部时间轴:可以拖动选择分析的时间窗口

操作很简单:在左侧双击参数名,曲线就出来了。想对比多个参数?按住Ctrl点选就行。

我的习惯:每次打开日志,我第一件事不是看具体参数,而是先看时间轴底部的总时长。如果日志只有几十秒,那大概率是飞控在起飞前就炸了——这种情况我会直接换一份日志。

PlotJuggler:功能更强,曲线更美

PlotJuggler是我现在的主力工具。它不只能看PX4日志,还能看ROS bag、CSV文件,甚至实时订阅数据流。说白了,它是一个通用的时序数据可视化工具,只是被飞控圈用出了名。

安装方式

PlotJuggler的安装比FlightPlot稍微复杂一点,但值得折腾。

# Ubuntu 20.04+
sudo apt install plotjuggler

# 或者用AppImage(推荐,免安装)
wget https://github.com/facontidavide/PlotJuggler/releases/latest/download/PlotJuggler-x86_64.AppImage
chmod +x PlotJuggler-x86_64.AppImage
./PlotJuggler-x86_64.AppImage

# macOS
brew install --cask plotjuggler

关键一步:装完PlotJuggler后,记得安装PX4的ULog解析插件。否则你拖进去一个.ulg文件,它只会显示“Unsupported format”。

插件安装路径:~/.local/share/PlotJuggler/plugins,把编译好的libPlotJugglerULog.so放进去就行。

界面与核心操作

PlotJuggler的界面比FlightPlot复杂,但核心逻辑就四个字:拖、选、放、调。

  1. 拖入日志:把.ulg文件直接拖到窗口中央
  2. 选择参数:左侧搜索框输入关键词(比如“roll”),勾选你要看的参数
  3. 拖到绘图区:把选中的参数从左侧拖到右侧空白区域
  4. 调整样式:双击曲线可以改颜色、线宽、是否显示数据点

我个人最常用的是它的“时间范围选择”功能。按住鼠标左键在图上拖一个矩形,就能放大到那个时间段。这在分析炸机瞬间时特别好用——你想想看,整个日志可能10分钟,但炸机就发生在0.5秒内,不放大根本看不清。

FlightPlot vs PlotJuggler:怎么选?

对比项 FlightPlot PlotJuggler
启动速度 快(秒级) 中等(需加载插件)
曲线渲染 基础,大数据量卡顿 流畅,支持百万级数据点
多参数对比 支持,但操作繁琐 支持拖拽,非常灵活
自定义公式 不支持 支持(比如计算两个参数的差值)
适用场景 快速查看、简单分析 深度分析、炸机复盘
我的建议:两台电脑都装上。日常巡检用FlightPlot,遇到疑难杂症上PlotJuggler。别问为什么,问就是我在一次紧急排故时,FlightPlot打不开一个2GB的日志,而PlotJuggler秒开——从那以后我就学乖了。

pyulog:命令行党的利器

有时候你不想打开图形界面,只想快速提取几个关键数据。或者你想写个脚本批量处理100份日志。这时候,pyulog就是你的好兄弟。

安装

pip install pyulog

就一行命令,没别的依赖。嗯,就是这么干脆。

常用命令

pyulog提供了一组命令行工具,我挑几个最常用的说说:

  • ulog_info:查看日志基本信息(时长、消息数、版本等)
  • ulog_params:导出日志中的参数
  • ulog2csv:把ULog转成CSV,方便用Excel或Python处理
# 查看日志概览
ulog_info flight.ulg

# 输出示例:
# Log file: flight.ulg
# Size: 12.3 MB
# Duration: 342.5 seconds
# Number of messages: 28451
# Number of parameters: 487

# 导出所有参数到CSV
ulog_params flight.ulg -o params.csv

# 把传感器数据转成CSV
ulog2csv flight.ulg -m sensor_combined -o sensor_data.csv
踩坑提醒:我曾经用ulog2csv导出全部数据,结果生成了几十个CSV文件,每个几百MB。后来我才发现,加个-m参数只导出你关心的topic,能省下90%的磁盘空间和后续处理时间。

在线日志分析平台:应急之选

如果你手头没有装任何工具,或者出差在外只有一台平板,怎么办?别慌,PX4社区提供了在线日志分析平台。

地址是:https://logs.px4.io

操作极其简单:打开网页,把.ulg文件拖进去,等几秒钟,就能看到一份自动生成的报告。报告内容包括:

  • 飞行模式切换时间线
  • GPS卫星数和HDOP变化
  • 电池电压和电流曲线
  • 姿态角和角速度
  • RC信号质量
  • 关键警告和错误列表

这个平台的好处是零安装、零配置。坏处是:日志文件不能太大(超过50MB可能会超时),而且数据上传到第三方服务器——如果你在客户现场签了保密协议,那就别用了。

我的用法:在线平台我一般只用来做“快速体检”。比如飞完一个架次,在回办公室的路上用手机打开报告,看看有没有明显的异常。如果有,回去直接上PlotJuggler深挖;如果没有,那就放心下班。

本章知识体系

下面这张图帮你理清四个工具的关系和适用场景:

PX4日志分析工具全景图 ULog日志文件 FlightPlot PlotJuggler pyulog 在线平台 各工具最佳使用场景 • FlightPlot:快速查看、简单分析,适合日常巡检 • PlotJuggler:深度分析、炸机复盘,适合疑难杂症 • pyulog:批量处理、脚本自动化,适合数据挖掘 • 在线平台:零安装应急使用,适合快速体检 建议:日常至少装PlotJuggler + pyulog,在线平台作为备选

四个工具各有侧重,没有哪个是万能的。我的建议是:PlotJuggler做主力,pyulog做辅助,FlightPlot和在线平台做备胎。这样无论遇到什么情况,你都有办法把日志里的信息挖出来。