一、ArduPilot日志系统概述:日志的作用、日志类型与存储介质

各位同学,大家好。我是老张,搞了七八年飞控,踩过的坑比你们飞过的起落还多(笑)。今天咱们正式开始聊 ArduPilot 日志系统。说实话,这玩意儿是飞控调试里最容易被忽视、但关键时刻能救命的东西。

我刚开始带团队那会儿,有个兄弟飞丢了一架六轴,黑匣子都没开。回来跟我汇报说“不知道咋炸的”。我问他日志呢?他说“啊?还要开日志?”——嗯,从那以后,我要求所有新来的工程师,第一课就是学会跟日志做朋友。

1.1 日志的作用:不只是“黑匣子”

说白了,日志就是飞控的“飞行记录仪”。但它能干的远不止记录坠机原因。我个人习惯把日志的作用归纳为三点:

  • 故障复盘:飞机炸了,是电机堵转?GPS 丢星?还是震动过大?日志里一清二楚。
  • 性能调优:PID 参数调得对不对?姿态跟踪有没有延迟?看日志曲线比看飞机飞还直观。
  • 合规取证:有些行业应用(比如测绘、安防),客户要求提供飞行数据报告。日志就是你的“清白证明”。

我遇到过最离谱的一次:一架植保机在作业时突然偏航,炸到了田埂上。用户说是飞控 bug。我拉出日志一看,发现是遥控器第 5 通道在飞行中误触发了“紧急降落”模式。嗯,最后用户自己默默换了遥控器。

1.2 日志类型:DataFlash 与 Telemetry

ArduPilot 的日志分两大类。你想想看,一个是在飞机上本地存着,一个是实时往下传。用途完全不同。

1.2.1 DataFlash 日志(本地日志)

这是最核心的日志。它记录的是飞控内部最原始、最完整的数据。说白了,就是飞控的“全量快照”。

  • 记录内容:姿态、位置、速度、加速度、陀螺仪、电机输出、GPS 原始数据、RC 输入、电池电压电流……几乎你能想到的所有传感器和执行器数据。
  • 采样率:很高。比如 IMU 数据通常是 400Hz 或 1000Hz。这意味着你能看到毫秒级的细节。
  • 文件格式:.bin 或 .log 文件。需要用 Mission Planner 或专门的解析工具打开。

我的习惯:每次飞行前,我都会确认 SD 卡已插入,并且 DataFlash 日志开关是打开的。别问我为什么强调这个——问就是吃过亏。

1.2.2 Telemetry 日志(遥测日志)

这个是通过数传电台实时下传到地面站的日志。它跟 DataFlash 最大的区别是:数据是经过降采样和筛选的

  • 为什么降采样? 因为数传带宽有限。400Hz 的 IMU 数据全往下传,信道早堵死了。所以地面站收到的通常是 10Hz 或 25Hz 的降采样数据。
  • 用途:实时监控飞行状态、在线调参、事后快速回顾。但做深度故障分析,还是得靠 DataFlash。
  • 文件格式:地面站(如 Mission Planner)会自动保存为 .tlog 文件。

注意:Telemetry 日志不能替代 DataFlash!我曾经见过有人只靠遥测日志分析炸机原因,结果因为数据太稀疏,根本看不到电机堵转瞬间的电流尖峰。嗯,最后结论只能是“不明原因炸机”。

1.3 日志存储介质:SD 卡 vs 内部 Flash

数据存哪儿?这是个好问题。ArduPilot 支持两种存储介质,各有各的脾气。

特性 SD 卡 内部 Flash
容量 大(4GB~32GB 常见) 小(通常 2MB~16MB)
写入速度 快(Class 10 以上) 慢(受 Flash 擦写限制)
可靠性 中等(可能因震动接触不良) 高(焊接在板子上)
典型用途 长时间飞行、高采样率日志 短时间调试、紧急备份
是否可热插拔 否(飞行中拔出会丢数据) 不适用

1.3.1 SD 卡:主力存储

绝大多数飞控板(如 Pixhawk 系列)都带 SD 卡槽。我个人强烈建议使用 Class 10 或 UHS-I 级别 的 SD 卡,容量 8GB~32GB 就够用。为什么?因为日志文件是循环覆盖的,飞控写满后会删最早的。你插个 128GB 的卡,反而可能因为文件系统碎片导致写入不稳定。

避坑指南:我曾经遇到过一架四轴,飞行中偶尔出现“日志写入错误”。排查了半天,最后发现是 SD 卡座在震动下接触不良。解决方案?在 SD 卡背面贴一层电工胶带,增加摩擦力。嗯,土办法但管用。

1.3.2 内部 Flash:保底方案

有些飞控板(比如 Pixhawk 1 的早期版本)板载了一颗 2MB 的 Flash 芯片。它的写入速度慢,容量也小,但胜在稳定——不受震动影响,也不怕接触不良。

内部 Flash 通常用于记录 最后几次飞行的关键数据。如果 SD 卡突然挂了,至少 Flash 里还有一份“救命数据”。

我的建议:在飞控参数里,把 LOG_BACKEND_TYPE 设置为 3(同时启用 SD 卡和 Flash)。这样两份日志都存,双保险。代价是 Flash 会很快写满,但至少能覆盖最近几次飞行。

1.4 知识体系总览

下面这张图,是我自己画的日志系统结构图。你把它理解成“日志从产生到存储的完整链路”。

ArduPilot 日志系统知识结构 飞控内部数据源 DataFlash 日志 Telemetry 日志 SD 卡 内部 Flash 地面站 PC .bin / .log 文件 .bin 文件(Flash) .tlog 文件 Mission Planner / MAVExplorer / pyulog

这张图你看懂了吗?从上到下,数据从飞控内部产生,分流成 DataFlash 和 Telemetry 两条路,分别存到 SD 卡、Flash 或地面站,最后都变成我们能分析的日志文件。嗯,这就是整个日志系统的骨架。

1.5 小结

这一章我们聊了日志的三大作用、两种类型、两种存储介质。说白了,日志就是你跟飞控对话的语言。你不懂它,它就跟你装死;你懂了它,它就把所有秘密都告诉你。

我个人觉得,学日志分析最忌讳的就是“急”。别指望看两眼就能找到炸机原因。慢慢来,先搞清楚数据是怎么来的、存哪了、怎么读。后面几章,我会带你们一行一行地啃日志,把那些藏在二进制里的“鬼”都揪出来。

最后说一句:下次飞行前,记得检查 SD 卡。别问我为什么强调——问就是血泪史。

专注资料整理