日志查看工具:从安装到实战
做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后,你会看到三个主要区域:
- 左侧面板:日志参数树,按模块分组(如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复杂,但核心逻辑就四个字:拖、选、放、调。
- 拖入日志:把.ulg文件直接拖到窗口中央
- 选择参数:左侧搜索框输入关键词(比如“roll”),勾选你要看的参数
- 拖到绘图区:把选中的参数从左侧拖到右侧空白区域
- 调整样式:双击曲线可以改颜色、线宽、是否显示数据点
我个人最常用的是它的“时间范围选择”功能。按住鼠标左键在图上拖一个矩形,就能放大到那个时间段。这在分析炸机瞬间时特别好用——你想想看,整个日志可能10分钟,但炸机就发生在0.5秒内,不放大根本看不清。
FlightPlot vs PlotJuggler:怎么选?
| 对比项 | FlightPlot | 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做主力,pyulog做辅助,FlightPlot和在线平台做备胎。这样无论遇到什么情况,你都有办法把日志里的信息挖出来。