3. 日志分析工具链:从原始数据到故障真相
做飞控日志分析,工具选对了,效率翻倍。选错了,你可能在数据海洋里淹死。
我见过不少新手,拿到一个炸机日志,直接打开文本编辑器看 .ulg 文件。嗯,那里面全是二进制乱码,看一天也看不出名堂。今天我把 PX4 和 ArduPilot 两大生态里最趁手的工具捋一遍,都是我自己项目里反复用过的。
核心观点:没有万能工具。每个工具都有自己的「最佳战场」。你需要的不是学会所有工具,而是知道什么场景该掏出哪一把刀。
3.1 PX4 生态:ulog2csv 与 FlightPlot
PX4 的日志格式是 .ulg(ULog)。这个格式设计得很紧凑,但人眼没法直接读。所以第一步永远是转换。
3.4.1 ulog2csv:最朴素的转换器
这是 PX4 官方提供的命令行工具。说白了,就是把二进制 .ulg 文件拆成一堆 .csv 表格。
用法极其简单:
ulog2csv log001.ulg -o ./output_folder
跑完之后,你会看到每个话题(topic)都生成一个独立的 CSV 文件。比如 vehicle_attitude_0.csv、vehicle_gps_position_0.csv。
我的习惯:我会在输出文件夹里建一个 raw 子目录,把原始 CSV 扔进去。然后用 Python 或 Excel 做二次处理时,不会污染原始数据。这个小习惯帮我避免过好几次「数据被误改」的尴尬。
ulog2csv 的优势是轻量、无依赖。你甚至可以在嵌入式板子上直接跑。但缺点也很明显——没有可视化,你得自己处理数据。
3.4.2 FlightPlot:PX4 的官方可视化利器
FlightPlot 是 PX4 团队开发的 Java 桌面应用。我个人觉得,它是目前 PX4 生态里最直观的日志查看器。
它能做什么?
- 多曲线叠加:把姿态、高度、油门画在同一张图上,一眼看出关联性。
- 3D 轨迹回放:把飞行路径在三维空间里重放,配合姿态数据,能还原炸机前的每一秒。
- 数据导出:支持导出为 CSV、MAT 格式,方便做进一步分析。
我记得有一次,一个客户说飞机在空中突然翻滚。用 FlightPlot 打开日志,把 roll 和 yaw 曲线叠在一起,发现 yaw 指令发出后 roll 有 200ms 的异常抖动。最后定位是方向舵舵机齿轮打滑。如果没有这种可视化叠加,光看数字根本发现不了。
注意:FlightPlot 需要 Java 运行环境。如果你用的是 macOS 最新版,可能需要手动安装 JDK 11 以上版本。我第一次装的时候被这个坑了半小时。
3.2 ArduPilot 生态:Mission Planner 日志分析器
ArduPilot 的日志格式是 .bin 或 .log。Mission Planner 自带的日志分析器是我用过最「一站式」的工具。
打开 Mission Planner,点击 Flight Data 标签,然后 Log → Download 或 Load。加载完成后,你会看到:
- Graph 面板:自由选择参数,绘制曲线。支持缩放、测量、标注。
- Status 面板:显示当前帧的飞行状态、模式、传感器数据。
- Map 面板:在地图上显示飞行轨迹,配合高度色标。
我最常用的是它的 Auto Analysis 功能。点一下,它会自动扫描日志,标记出异常事件,比如 GPS 丢失、电池电压骤降、EKF 警告等。对于快速排查,这个功能能省下 80% 的时间。
避坑指南:我曾经遇到过一个情况——Auto Analysis 报告说「GPS 健康度正常」,但飞机就是飘。后来我手动查看 GPS 的 numSats 和 hdop 曲线,发现虽然卫星数量够,但 HDOP 在某个区域突然跳变。自动分析没抓到这种「量变到质变」的细节。所以,自动分析只是起点,不是终点。
3.3 跨平台利器:MAVExplorer 与 PlotJuggler
这两个工具不挑飞控,PX4 和 ArduPilot 都能用。我强烈建议你至少掌握其中一个。
3.3.1 MAVExplorer:命令行里的瑞士军刀
MAVExplorer 是 ArduPilot 团队开发的命令行工具,但它的能力远超「命令行」三个字。
它能做什么?
- 实时过滤:比如只提取 GPS 丢失前后的 10 秒数据。
- 数学运算:直接在命令行里计算两个参数的差值、比值、积分。
- 生成报告:一键输出 HTML 格式的分析报告。
举个例子,你想看「油门和高度变化率的关系」:
mavexplorer log.bin --plot "CTUN.ThrOut, GPS.Alt" --diff
它会直接画出一张对比图。嗯,就是这么粗暴。
我的建议:如果你习惯用终端,MAVExplorer 是你的不二之选。它特别适合批量处理——比如一次分析 50 个日志,找出所有「GPS 丢失」事件。用 GUI 工具一个个点,手会断的。
3.3.2 PlotJuggler:数据可视化的终极形态
PlotJuggler 不是飞控专用工具,但它被飞控社区「捧红」了。因为它太适合处理时序数据了。
它的核心优势:
- 拖拽式操作:把参数从列表拖到画布上,自动生成曲线。
- 自定义公式:支持 JavaScript 表达式,可以实时计算衍生数据。
- 布局保存:你可以保存一个「标准分析布局」,每次加载日志后自动套用。
我自己保存了一个布局,叫 standard_analysis.xml。里面包含了:姿态角、高度、空速、电池电压、GPS 状态。每次拿到新日志,直接加载这个布局,5 秒钟就能看到所有关键数据。
注意:PlotJuggler 默认不支持 .ulg 和 .bin 格式。你需要安装插件。PX4 用户装 ulog_reader 插件,ArduPilot 用户装 bin_reader 插件。别搞反了,我第一次就装错了,折腾了一下午。
3.4 工具选型对比
为了让你快速决策,我整理了一张对比表。你想想看,什么场景下该用什么工具:
| 工具 | 适用飞控 | 核心优势 | 最佳场景 | 学习曲线 |
|---|---|---|---|---|
| ulog2csv | PX4 | 轻量、无依赖 | 批量转换、脚本处理 | 低 |
| FlightPlot | PX4 | 可视化直观、3D回放 | 单日志深度分析 | 中 |
| Mission Planner | ArduPilot | 一站式、自动分析 | 快速排查、现场调试 | 低 |
| MAVExplorer | 通用 | 命令行、批量处理 | 批量分析、自动化 | 高 |
| PlotJuggler | 通用 | 灵活、可定制 | 复杂数据对比、自定义分析 | 中高 |
3.5 工具链工作流
说了这么多,这些工具到底怎么配合?我画了一张流程图,展示我日常的分析流水线:
这个流程我用了三年,基本没变过。核心思路是:先快速可视化,找到可疑区域;再深度分析,定位根因。不要一上来就钻到数据细节里,你会迷失的。
3.6 我的工具包推荐
如果你问我,作为一个飞控工程师,电脑里必须装哪几个工具?我的答案是:
- PlotJuggler —— 通用性最强,PX4 和 ArduPilot 通吃。
- Mission Planner —— 如果你主要做 ArduPilot,这个绕不开。
- MAVExplorer —— 批量处理时,命令行比 GUI 快 10 倍。
- ulog2csv —— 轻量级,放在 U 盘里随身带。
最后一个小建议:别贪多。先精通一个工具,比如 PlotJuggler。把它用透了,再学其他的。我见过太多人每个工具都只会皮毛,遇到真问题的时候,哪个都用不好。