2. PX4日志系统基础

工欲善其事,必先利其器。做飞控日志分析,选对工具能省下一大半力气。我见过不少新手,拿到 .ulog 文件就两眼一抹黑,直接在记事本里打开——那画面,全是二进制乱码,根本没法看。

这一章,我就带你把这几个常用工具装好、跑通。咱们不搞花架子,直接上手。

核心观点: 没有最好的工具,只有最顺手的工具。FlightPlot 适合快速浏览,PlotJuggler 适合深度分析,Web UI 适合应急查看。三个都装上,你才能在不同场景下灵活切换。

2.1 工具概览:它们各自能干什么?

先花一分钟,搞清楚这三个工具的定位。别装了一堆,最后发现用错了地方。

工具名称 核心定位 我的使用场景
FlightPlot PX4 官方配套,轻量级快速查看 飞完一架次,先拖进去扫一眼关键曲线,看有没有明显异常
PlotJuggler 第三方神器,支持多数据源、自定义公式 做深度排查,比如对比两组传感器数据,或者自己写公式算个指标
PX4 日志查看器(Web UI) 浏览器端,无需安装,快速分享 在客户现场,或者同事发来一个日志,我懒得装软件时直接用
我的建议: 别纠结哪个更好。FlightPlot 和 PlotJuggler 都装上,Web UI 记个网址就行。我平时 80% 的时间在用 PlotJuggler,但 FlightPlot 的「一键生成报告」功能偶尔能救命。

2.2 FlightPlot:PX4 官方标配,上手最快

FlightPlot 是 PX4 团队自己开发的,说白了就是亲儿子。它跟 .ulog 格式的兼容性最好,基本不会出现解析失败的情况。

2.2.1 安装步骤

安装其实很简单,但不同系统有点小区别。我踩过坑,给你列清楚。

  • Windows: 去 PX4 官网的 GitHub Release 页面下载最新版 .exe 安装包。双击安装,一路 Next 就行。注意,如果提示缺少 Java 环境,先去装个 JDK 11 或更高版本。
  • macOS: 下载 .dmg 文件,拖到 Applications 文件夹。第一次打开可能会提示「无法验证开发者」,去系统偏好设置 -> 安全性与隐私里允许运行就行。
  • Linux(Ubuntu): 我建议用命令行安装,最稳。
# 确保有 Java 环境
sudo apt update
sudo apt install default-jre

# 下载 FlightPlot(假设你放在 ~/tools 目录)
cd ~/tools
wget https://github.com/PX4/FlightPlot/releases/latest/download/flightplot.jar

# 运行
java -jar flightplot.jar
注意: 我曾经在 Ubuntu 20.04 上直接双击 .jar 文件,结果界面卡死。后来发现是缺少 JavaFX 库。解决办法是用命令行运行,或者装 openjfx:sudo apt install openjfx。

2.2.2 基本使用:三步走

打开 FlightPlot 后,界面很清爽。别被一堆按钮吓到,核心操作就三步。

  1. 加载日志: 点击左上角的「Open Log」按钮,选择你的 .ulog 文件。加载成功后,左侧会列出所有可用的 topic(话题),比如 sensor_accel、vehicle_attitude 等。
  2. 选择曲线: 在左侧找到你想看的数据,比如加速度计的 x 轴数据,双击它。曲线就会出现在右侧绘图区。你可以按住 Ctrl 键多选。
  3. 缩放与浏览: 用鼠标滚轮缩放,按住左键拖拽平移。想看某个时间点的具体数值,鼠标悬停就行。

嗯,这里要注意:FlightPlot 默认会把所有数据加载到内存里。如果日志文件特别大(比如超过 500MB),加载会变慢。我一般会先用 Web UI 看一眼文件大小,太大的话就用 PlotJuggler 分段加载。

2.3 PlotJuggler:数据分析的瑞士军刀

PlotJuggler 不是我吹,它真的是做日志分析的神器。它不仅能看 PX4 的 .ulog,还能看 ROS bag、CSV 文件,甚至支持实时数据流。你想想看,一个工具能打通这么多数据源,多方便。

2.3.1 安装方式

PlotJuggler 的安装方式比较灵活。我个人推荐用包管理器安装,省心。

系统 推荐安装方式 命令 / 步骤
Windows 下载安装包 去 GitHub Releases 下载 .exe 安装包
macOS Homebrew brew install plotjuggler
Ubuntu Snap 或源码编译 sudo snap install plotjuggler(推荐)
避坑指南: 我曾经在 Ubuntu 上用源码编译,折腾了半天,各种依赖冲突。后来换成 Snap 安装,5 分钟搞定。除非你有特殊需求,否则别自己编译。

2.3.2 核心功能:拖拽式操作

PlotJuggler 的操作逻辑跟 FlightPlot 不太一样。它用的是「拖拽 + 订阅」的模式。

  • 加载数据: 启动后,点击「Data」->「Load」,选择 .ulog 文件。左侧会出现一个树形结构,列出了所有 topic 和 field。
  • 拖拽绘图: 从左侧拖拽一个数据项(比如 /sensor_accel/accel_m_s2[0])到右侧的空白区域。松开鼠标,曲线就出来了。
  • 自定义公式: 这是 PlotJuggler 的杀手锏。点击工具栏的「f(x)」按钮,可以输入自定义公式。比如我想算加速度的模长:sqrt(x^2 + y^2 + z^2)。这个功能在分析振动时特别有用。
// 自定义公式示例:计算加速度模长
// 假设你拖入了三个轴的数据,分别命名为 ax, ay, az
// 在公式编辑器中输入:
sqrt(ax^2 + ay^2 + az^2)

2.4 PX4 日志查看器(Web UI):应急利器

这个工具是 PX4 团队开发的在线版本,不需要安装任何软件。你只需要一个浏览器,把 .ulog 文件拖进去就行。

2.4.1 如何使用

打开浏览器,访问 PX4 官方的日志查看器网址(你可以在 PX4 用户指南里找到链接)。界面加载后,直接把 .ulog 文件拖到网页中间的虚线框里。

几秒钟后,页面就会自动生成一份分析报告。它会自动识别出一些关键事件,比如解锁、起飞、降落、报错等。你还可以在左侧选择不同的 topic 来查看曲线。

注意: Web UI 是上传到服务器处理的。如果你的日志包含敏感数据(比如商业项目的飞行参数),建议不要使用在线版。你可以自己部署一个离线版本,或者直接用 FlightPlot 和 PlotJuggler。

2.4.2 什么时候用它?

我个人习惯在三种情况下用 Web UI:

  • 快速排查: 同事发来一个日志,说飞机炸了。我懒得装软件,直接拖到 Web UI 里,先看有没有明显的错误标志。
  • 分享报告: Web UI 可以生成一个分享链接。我把链接发给客户,客户打开就能看到分析结果,不用教他怎么装软件。
  • 验证问题: 有时候我用 PlotJuggler 分析完,会再用 Web UI 看一眼,确认数据解析没有偏差。

2.5 知识体系:工具选择与工作流

为了让你更直观地理解这三个工具在日志分析流程中的位置,我画了一张图。你可以把它当作一个决策树来看。

日志分析工具选择与工作流 获取 .ulog 文件 需要快速浏览还是深度分析? 快速浏览 FlightPlot / Web UI 深度分析 PlotJuggler 定位问题 / 优化参数 提示:三个工具可以组合使用。先用 FlightPlot 扫一遍,再用 PlotJuggler 深挖。

2.6 实战建议:从安装到第一次分析

好了,工具都介绍完了。我给你一个具体的行动清单,照着做就行。

  1. 装好三个工具: 按照上面的步骤,把 FlightPlot、PlotJuggler 和 Web UI 都准备好。别偷懒,每个都试一下。
  2. 找一个示例日志: PX4 官网提供了一些示例 .ulog 文件,你可以下载下来练手。或者用你自己飞的数据。
  3. 完成一次完整分析:
    • 用 FlightPlot 打开日志,找到 vehicle_attitude 话题,看看滚转、俯仰、偏航角的变化。
    • 用 PlotJuggler 打开同一个日志,拖出 sensor_accel 的三个轴,再用公式算一下模长。
    • 用 Web UI 打开日志,看看自动生成的报告里有没有报错信息。
我的经验: 第一次用 PlotJuggler 时,别急着分析复杂问题。先花 10 分钟熟悉它的拖拽操作和缩放功能。你很快就会发现,它比 FlightPlot 灵活得多。