日志采集与配置:让飞控开口说话
日志配置这件事,说白了就是告诉飞控:「嘿,把哪些数据记下来,怎么记,记完放哪儿。」
很多新手一上来就急着飞,日志配置随便选个默认值就上了。结果炸机了想分析,发现关键数据没录上,或者日志文件损坏读不出来。我早期就吃过这个亏,后来养成了一个习惯:每次飞前必检查日志配置。
PX4 日志配置:SDLOG_PROFILE 参数
PX4 的日志系统核心参数就一个——SDLOG_PROFILE。它决定了飞控往 SD 卡里写什么数据。
| SDLOG_PROFILE 值 | 含义 | 适用场景 |
|---|---|---|
| 0(默认) | 全量日志:传感器、姿态、位置、RC 输入等 | 日常调试、首次试飞 |
| 1 | 仅传感器原始数据(IMU、磁力计、气压计) | 传感器标定、震动分析 |
| 2 | 仅估计器数据(EKF 内部状态) | 定位漂移、EKF 故障排查 |
| 3 | 高分辨率日志(降低降采样率) | 高频震动、快速动态分析 |
我的习惯:开发阶段用默认值 0,等系统稳定了再根据具体问题切换到对应 profile。比如排查震动,我会切到 profile 1,只看 IMU 原始数据,日志文件小很多,分析起来也快。
还有一个容易被忽略的参数——SDLOG_MODE。它控制日志写入模式:
- 0:写满就停止,适合长时间飞行
- 1:写满后覆盖最旧的日志,适合持续监控
- 2:不自动写日志,需要手动触发
我个人建议日常用模式 0,配合大容量 SD 卡。模式 1 有风险——万一炸机时正好覆盖了关键数据,那就真哭了。
ArduPilot 日志配置:LOG_BACKEND_TYPE 参数
ArduPilot 的日志系统比 PX4 灵活一些,核心参数是 LOG_BACKEND_TYPE。它决定了日志写到哪里去。
| LOG_BACKEND_TYPE 值 | 存储介质 | 特点 |
|---|---|---|
| 0 | 仅 SD 卡 | 最稳定,容量大 |
| 1 | 仅内部闪存 | 容量小(通常 2MB),但不怕 SD 卡松动 |
| 2 | SD 卡 + 闪存同时写 | 冗余备份,但写入压力大 |
| 3 | 仅通过 MAVLink 遥测传输 | 适合地面站实时记录,不依赖板载存储 |
我曾经踩过的坑:有一次用 LOG_BACKEND_TYPE=2,想着双备份更安全。结果 SD 卡写入速度跟不上,导致闪存也写坏了,两路日志全丢。后来我学乖了——除非有特殊需求,否则只用 SD 卡,选一张高速卡(Class 10 以上)。
ArduPilot 还有一个 LOG_DISARMED 参数,控制解锁前是否记录日志。我建议设成 1,这样上电就开始录,能捕捉到解锁前的传感器预热、GPS 搜星等过程。很多奇怪的问题,其实在解锁前就已经有征兆了。
日志触发模式:预触发 vs 后触发
这个功能特别实用。说白了就是:让日志系统在「出事」前后自动保留一段数据。
- 预触发(Pre-trigger):记录触发事件发生前的一段数据。比如你设了 10 秒预触发,飞控检测到「掉高」时,会把掉高前 10 秒的数据也保存下来。
- 后触发(Post-trigger):记录触发事件发生后的一段数据。比如掉高后继续录 5 秒,看看飞控是怎么响应的。
两者结合,就能完整还原事故前后的「故事」。我一般设预触发 15 秒、后触发 10 秒,这样既能看清原因,也能看到后果。
触发条件怎么设?
PX4 用
我个人建议至少设一个「加速度超限」触发——炸机瞬间加速度肯定爆表,这个触发最可靠。
PX4 用
SDLOG_TRIGGER 参数,可以选加速度异常、高度突变、遥控器失控保护等。ArduPilot 则用 LOG_TRIGGER_TYPE 和 LOG_TRIGGER_PIN,支持硬件引脚触发。我个人建议至少设一个「加速度超限」触发——炸机瞬间加速度肯定爆表,这个触发最可靠。
日志存储与导出
日志存好了,还得能读出来。这里有几个要点:
- 文件系统:PX4 用 FAT32,ArduPilot 也是 FAT32。注意单个文件不能超过 4GB,不过飞控日志一般到不了这个量级。
- 文件命名:PX4 的日志文件是
.ulg格式,命名如2025-01-15_14-30-22.ulg。ArduPilot 是.bin或.log,命名如2025-01-15 14-30-22.log。按时间排序,找起来很方便。 - 导出方式:
- 拔 SD 卡,用读卡器拷贝——最直接,也最快
- 通过 MAVLink 下载——适合不想拆机的情况,但速度慢
- 通过 WiFi/蓝牙模块无线传输——方便,但容易断连
一个小技巧:每次飞完后,把日志文件名加上「正常/异常」的标记。比如
2025-01-15_14-30-22_正常.ulg。这样回头翻日志时,一眼就能看出哪些是「好」的,哪些是「坏」的。我坚持这个习惯好几年了,帮自己省了不少时间。
本章知识体系
下面这张图,把日志采集与配置的核心逻辑串起来了。你一看就明白:
嗯,这张图把整个流程串起来了。从飞控平台出发,左边是 PX4 的配置路径,右边是 ArduPilot 的配置路径,中间是触发模式,底部是存储导出。你配置日志时,就按这个逻辑走,不会漏掉任何环节。
一句话总结:日志配置不是「设完就忘」的事。每次换飞控、换传感器、换任务类型,都应该重新审视一遍参数。我见过太多人因为「默认配置够用」这个想法,丢了关键数据。别让这种事发生在你身上。