一、日志分析概述:无人机日志的价值、常见格式与工具链
各位同学好,我是老张。干无人机系统这行十几年了,今天咱们聊聊日志分析。
说实话,刚入行那会儿我也不太重视日志。飞机能飞就行,看什么日志?直到有一次,一架六旋翼在农田里突然掉高,差点砸到人。事后翻出 BIN 文件一查,发现电调过温已经持续了 30 秒,飞控一直在降功率——但地面站上啥告警都没有。嗯,从那以后,我养成了一个习惯:每次飞行结束,第一件事就是导出日志。
1.1 无人机日志到底值钱在哪儿?
日志不是给飞机看的,是给我们看的。说白了,它是飞控系统在飞行过程中记录下来的“黑匣子”。
我个人觉得,日志的价值可以归纳为三点:
- 故障定位:飞机炸了、飘了、抖了,日志能告诉你“哪一秒、哪个传感器、什么参数”出了问题。我在项目里遇到过一架飞机总是偏航,查了三天机械结构,最后日志显示磁罗盘校准参数超限——两分钟搞定。
- 性能调优:PID 参数合不合理?电池放电曲线平不平?电机响应有没有滞后?日志里全都有。我建议每个飞手至少学会看“期望值 vs 实际值”的对比曲线。
- 合规与复现:有些行业应用(比如植保、巡检)要求飞行数据可追溯。日志就是你的证据。另外,复现异常场景时,日志比任何口头描述都靠谱。
一句话总结:没有日志的飞行,等于闭着眼睛开车。你永远不知道下一秒会发生什么。
1.2 常见日志格式:ULog、BIN、CSV
目前主流的飞控系统,日志格式就那么几种。我按使用频率排个序:
| 格式 | 来源飞控 | 特点 | 我的使用建议 |
|---|---|---|---|
| ULog | PX4(主力) | 二进制,体积小,带时间戳,支持嵌套数据结构 | 日常分析首选,工具链最成熟 |
| BIN | ArduPilot | 二进制,按消息 ID 存储,解析依赖参数文件 | 老项目还在用,新项目建议转 ulog |
| CSV | 部分商业飞控 / 自研飞控 | 纯文本,可读性好,但文件大、精度有限 | 适合快速查看,不适合深度分析 |
你可能会问:为什么不用 CSV 一统天下?原因很简单——无人机每秒记录几百个数据点,CSV 写几十分钟,文件能上 GB,而且浮点数精度还会丢。ULog 和 BIN 都是二进制格式,压缩率高,解析快。
小技巧:如果你手头只有 CSV 日志,可以用 Python 的 pandas 库先做一次重采样,把 200Hz 的数据降到 50Hz,文件能缩小 4 倍,关键特征基本保留。
1.3 日志分析工具链概览
工具链这件事,我踩过不少坑。早期我用 Excel 打开 CSV,手动画图——那叫一个痛苦。后来慢慢摸索出一套趁手的组合,分享给你:
1.3.1 图形化工具(适合快速查看)
- Flight Review(PX4 官方):网页版,拖入 ULog 就能看。姿态、位置、电池、电机四个核心面板,一目了然。我一般先用它扫一遍,看有没有明显异常。
- Mission Planner(ArduPilot):自带日志分析模块,支持 BIN 格式。功能很全,但界面有点老派。
- QGroundControl:也能看日志,但功能偏弱,适合现场快速确认。
1.3.2 命令行 / 脚本工具(适合批量处理)
- pyulog:Python 库,专门解析 ULog。我写自动化脚本时必用。
- ulog2csv:把 ULog 转成 CSV,方便导入其他工具。
- MAVLink Inspector:实时抓取 MAVLink 消息,适合调试阶段。
1.3.3 我的个人工作流
嗯,这里给你看看我平时怎么干的:
- 飞行结束后,从 SD 卡拷贝 ULog 文件。
- 用 Flight Review 快速浏览,截图异常段。
- 用 pyulog 提取关键话题(比如电池电压、电机转速、GPS 状态)。
- 用 Matplotlib 画对比曲线,定位问题区间。
- 如果问题复杂,导出 CSV 给团队用 MATLAB 做频谱分析。
注意:不要一上来就全量分析。先问自己三个问题:这次飞行出了什么问题?哪个传感器最可疑?哪个时间段最值得看?带着问题去翻日志,效率能翻倍。
1.4 本章知识体系总览
下面这张图,是我自己梳理的日志分析知识框架。你把它存下来,后面每学一章,都可以回来对照一下,看看自己处在哪个位置。
这张图把整个知识体系分成了五层:日志来源 → 格式 → 工具链 → 分析目标 → 输出方案。你会发现,每一层都依赖下一层。没有正确的格式解析,工具链就白搭;没有清晰的分析目标,再好的工具也出不来方案。