2. 日志查看工具:QGC内置日志查看器、FlightPlot、PlotJuggler、MATLAB/Simulink日志分析

日志拿到手了,一堆 .bin 或 .ulg 文件。怎么打开?怎么看?

说实话,我刚入行那会儿,面对一堆二进制日志也是一脸懵。后来慢慢摸清了门道。今天我把常用的四款工具给你捋一遍。它们各有各的脾气,也各有各的绝活。

核心观点:没有万能工具。QGC 适合快速排查,FlightPlot 适合飞控老手,PlotJuggler 适合深度数据挖掘,MATLAB 适合科研级分析。你得学会根据场景选工具。

2.1 QGC 内置日志查看器:最轻量的快速排查工具

QGC 自带的日志查看器,说白了就是“看一眼”的工具。它不需要额外安装,打开 QGC 就能用。

怎么打开?

  • 菜单栏 → 分析工具 → 日志查看
  • 或者直接拖拽 .bin / .ulg 文件到 QGC 窗口

它能干什么?

  • 快速查看主要的传感器曲线:加速度计、陀螺仪、磁力计、GPS 状态
  • 查看飞行模式切换、遥控器信号、电池电压
  • 查看故障保护触发记录(比如“GPS loss”、“EKF failure”)

注意:QGC 日志查看器只能看,不能做复杂运算。它不会帮你做 FFT 分析,也不会计算振动频谱。如果你发现曲线异常,但 QGC 里看不出原因,就该换工具了。

我的经验:有一次飞机在空中突然偏航,我第一反应就是打开 QGC 日志查看器。一看磁力计曲线,在某个时间段出现了明显的尖峰。嗯,基本确定是电磁干扰。QGC 帮我快速定位了问题区间,省了我不少时间。

2.2 FlightPlot:PX4 生态的“老伙计”

FlightPlot 是 PX4 官方推荐的日志分析工具。它比 QGC 强大,但比 MATLAB 轻量。我个人习惯用它做日常的“深度体检”。

安装方式:

  • Windows / macOS / Linux 都有独立安装包
  • 下载地址:PX4 官网的 Tools 页面

核心功能:

功能模块 说明 我的常用场景
曲线绘制 支持多轴、多曲线叠加对比 对比左右电机的转速曲线,排查动力不平衡
3D 飞行轨迹 在地图上显示飞行路径,带姿态信息 看飞机是不是在某个点突然掉高
消息解析 自动解析 PX4 uORB 消息 查看 actuator_controls 和 actuator_outputs 是否一致
统计面板 自动计算最大值、最小值、均值、标准差 快速评估振动水平:看 accel 的方差

操作小技巧:

  • 按住 Ctrl 可以同时选择多个曲线
  • 右键曲线可以导出 CSV 数据,方便导入其他工具
  • 在 3D 视图里,可以用鼠标拖拽旋转视角

避坑指南:我曾经用 FlightPlot 分析一次炸机日志。一开始只看姿态曲线,没发现问题。后来切换到“电机输出”曲线,才发现有一个电机的输出值在某个时刻突然降为 0。原来是电调过热保护了。所以,别只看姿态,电机输出、电池电流这些“底层”数据往往藏着真相。

2.3 PlotJuggler:数据挖掘的“瑞士军刀”

PlotJuggler 不是飞控专用工具,但它是我见过最灵活的时序数据可视化工具。它支持多种数据源:ROS bag、CSV、ULog、MAT 文件。

为什么我推荐它?

  • 拖拽式操作:从左侧列表拖变量到画布,自动生成曲线
  • 强大的变换功能:可以对曲线做数学运算:加减乘除、FFT、积分、微分
  • 布局保存:你可以把常用的分析布局保存为 .xml 文件,下次直接加载

典型用法:

  1. 打开 PlotJuggler,加载 .ulg 文件
  2. 从左侧拖出 vehicle_acceleration[0] 到画布
  3. 再拖出 vehicle_acceleration[1] 和 vehicle_acceleration[2]
  4. 右键曲线 → 变换 → FFT,查看振动频谱
  5. 如果发现 50Hz 附近有尖峰,大概率是螺旋桨共振

核心优势:PlotJuggler 的 FFT 功能是我排查振动问题的首选。QGC 和 FlightPlot 都没有这么方便的频谱分析能力。

我的经验:有一次飞机在悬停时出现高频抖动。我用 PlotJuggler 对加速度计数据做 FFT,发现 80Hz 处有一个明显的峰值。对照电机转速,发现是电机在 80Hz 附近产生了共振。调整了螺旋桨平衡后,问题解决。没有 PlotJuggler,我可能还在盲目调 PID。

2.4 MATLAB/Simulink:科研级日志分析

如果你要做深度的数据分析,比如系统辨识、控制性能评估、故障诊断,MATLAB 是绕不开的。

怎么用?

  • PX4 官方提供了 px4_log_analysis.m 脚本,可以自动解析 .ulg 文件
  • 也可以自己写脚本,用 ulogreader 函数读取数据

示例代码:

% 读取 ULog 文件
ulog = ulogreader('flight_log.ulg');

% 获取加速度计数据
accel = readTopicMsgs(ulog, 'sensor_accel');
time_us = accel.Time;
accel_x = accel.Data(:,1);
accel_y = accel.Data(:,2);
accel_z = accel.Data(:,3);

% 绘制曲线
plot(time_us/1e6, accel_x);
hold on;
plot(time_us/1e6, accel_y);
plot(time_us/1e6, accel_z);
legend('X', 'Y', 'Z');
xlabel('Time (s)');
ylabel('Acceleration (m/s^2)');
title('Accelerometer Data from ULog');

MATLAB 的优势:

  • 可以做系统辨识:用日志数据辨识飞机的传递函数
  • 可以设计滤波器:根据振动频谱设计陷波滤波器
  • 可以批量处理:一次分析几十个日志,自动生成报告

注意:MATLAB 的学习曲线比较陡。如果你只是偶尔分析一次日志,没必要上 MATLAB。先用 PlotJuggler 和 FlightPlot 就够了。MATLAB 适合做“研究”而不是“排查”。

2.5 工具选择指南

你可能会问:这么多工具,我到底该用哪个?

我根据不同的场景,给你一个参考:

场景 推荐工具 理由
快速查看飞行状态 QGC 日志查看器 打开即用,无需安装
日常飞后检查 FlightPlot 功能全面,操作直观
振动/频谱分析 PlotJuggler FFT 功能强大,操作灵活
科研/系统辨识 MATLAB/Simulink 算法丰富,可定制性强
批量分析/自动报告 MATLAB + 脚本 可以自动化处理大量日志

我的建议:新手先从 QGC 开始,熟悉日志的基本结构。然后切换到 FlightPlot,学会看关键曲线。等你遇到振动、控制这类复杂问题时,再学 PlotJuggler。MATLAB 可以放在最后,按需学习。

2.6 本章知识结构图

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

日志分析工具全景图 日志文件 (.bin/.ulg) QGC 日志查看器 快速排查 FlightPlot 日常深度检查 PlotJuggler 数据挖掘/FFT MATLAB/Simulink 科研/系统辨识 特点 • 无需安装 • 快速查看传感器曲线 • 适合现场排查 特点 • 3D 轨迹回放 • 多曲线对比 • 自动统计面板 特点 • 拖拽式操作 • FFT/数学变换 • 布局可保存 特点 • 系统辨识 • 滤波器设计 • 批量处理 选工具原则:场景决定工具,工具服务于问题

这张图你看懂了吗?核心就一句话:日志文件是源头,工具是手段,解决问题才是目的。