2. ArduPilot日志系统概述

日志这东西,说白了就是飞控的「黑匣子」。飞机在天上干了什么、传感器数据正不正常、PID调得对不对,全得靠它说话。但很多新手一上来就开默认配置,结果要么日志太多把SD卡撑爆,要么关键数据没录上,排查问题时两眼一抹黑。

这一章,我就带你把这套流程捋清楚。从LOG_BITMASK怎么配,到日志怎么取出来,再到文件怎么管,一条龙讲透。

LOG_BITMASK:你的日志开关面板

LOG_BITMASK是个32位的位掩码参数。每一位代表一个日志组,置1就录,置0就不录。我刚开始接触时也觉得这东西有点抽象,后来把它想象成一个「开关面板」——每个开关控制一类数据,就简单多了。

位十六进制值日志组说明
00x01ATTITUDE姿态数据(欧拉角、四元数)
10x02GPSGPS位置、速度、星数
20x04RCIN遥控器输入通道
30x08RCOUT电机/舵机输出
40x10IMU加速度计、陀螺仪原始数据
50x20MOTORS电机混控输出
60x40BARO气压计数据
70x80CTUN控制回路调谐数据
80x100NTUN导航调谐数据
90x200PM电源管理数据

常用配置参考:

  • 日常飞行调试:0x1F(位0-4全开)——姿态、GPS、遥控、输出、IMU都有了
  • PID调参:0x1FF(位0-8全开)——加上CTUN和NTUN,方便看控制响应
  • 故障排查:0x3FF(位0-9全开)——电源数据也录上,查供电问题
  • 长时间航测:0x03(只开姿态和GPS)——省空间,够用就行

设置方法很简单:LOG_BITMASK = 0x1F,保存重启就行。我个人习惯在Mission Planner的「全部参数表」里直接改,比图形界面快得多。

小技巧:如果你不确定当前配置够不够,先开大一点(比如0x3FF),飞一次看看日志大小,再逐步关掉不需要的组。我一般留个0x1FF作为「标准配置」,大部分场景都够用。

日志记录速率:别让数据打架

LOG_BITMASK决定了「录什么」,而记录速率决定了「多快录一次」。速率太高,CPU忙着写SD卡,飞控响应会变慢;速率太低,关键数据可能漏掉。

ArduPilot里有两个关键参数:

  • LOG_RATE:主循环日志写入速率,默认10Hz。我一般调到25Hz,平衡性和性能都不错。
  • 每个传感器有自己的采样率:比如IMU默认400Hz,但日志里不会每条都记,而是按LOG_RATE降采样。

注意:别把LOG_RATE设得太高。我曾经在测试时设到50Hz,结果飞控在急转弯时出现了短暂的日志写入延迟,导致姿态控制抖动了一下。后来查了半天才发现是SD卡写入占用了太多CPU时间。建议上限25Hz,除非你用高速SD卡且CPU有余量。

还有个容易被忽略的点:日志消息类型。有些消息(比如IMU原始数据)本身就很大,如果再加上高频率写入,SD卡很容易成为瓶颈。我的经验是:先飞一次,看日志文件大小和写入延迟,再微调。

日志获取:SD卡 vs 数传

日志拿到手,才能分析。获取方式主要有两种,各有优劣。

方式优点缺点适用场景
SD卡直读速度快、数据完整、不受信号干扰需要拔卡、插卡,户外操作麻烦研发调试、长时间飞行
数传下载不用碰飞机,远程就能拿数据速度慢(通常115200bps)、可能丢包现场快速查看、短途飞行

SD卡方式:飞机落地后,拔卡插读卡器,在/APM/LOGS/目录下找.BIN或.LOG文件就行。我习惯用Mission Planner → MAV Tuning → DataFlash Logs → Download来下载,但其实直接拷文件更快。

数传方式:在Mission Planner里连接数传,进入「DataFlash Logs」页面,选「Download」。注意:数传带宽有限,大日志文件可能要等很久。我一般只下载最近一次飞行的日志,或者用LOG_FILE_BUFFER参数控制只保留最近几个文件。

避坑指南:数传下载时,千万别断开连接或让飞机断电。我曾经在下载到80%时手贱碰了下电源线,结果日志文件损坏,那次飞行的数据全没了。嗯,从那以后我都是先拔SD卡再分析。

日志文件命名规则与存储管理

ArduPilot的日志文件命名很规律:XX.BIN或XX.LOG,其中XX是两位十六进制数,从00到FF循环。比如0A.BIN、1F.LOG。文件按创建时间顺序编号,满了就覆盖最早的。

但说实话,这个命名方式对人不友好。你飞了10次,看到的全是00.BIN到09.BIN,根本分不清哪次是哪次。我的做法是:

  1. 飞完后立即重命名:比如2024-03-15_测试PID参数.BIN
  2. 用文件夹分类:按日期或项目建文件夹,比如2024-03/、PID调试/
  3. 配合日志备注:在Mission Planner里给每次飞行加备注,下载时备注会一起保存

存储管理方面,SD卡容量有限,建议:

  • 使用Class 10或UHS-I级别的SD卡,写入速度至少10MB/s
  • 定期清理旧日志,保留最近20-30次飞行就够了
  • 重要日志及时备份到电脑或云盘

警告:SD卡写入速度不够,会导致日志丢失甚至飞控卡死。我见过有人用了一张老旧的Class 4卡,结果在高速飞行时日志写入失败,飞控直接重启。别省这点钱,一张好SD卡才几十块。

知识体系总览

下面这张图,把本章的核心逻辑串起来了。你一看就明白:从参数配置到数据落地,每一步都环环相扣。

日志获取与配置知识体系 参数配置 LOG_BITMASK(录什么) LOG_RATE(多快录) SD卡直读 数传下载 文件命名与存储管理 可分析的日志文件 先配参数,再取数据

你看,整个流程其实就三步:先配好LOG_BITMASK和LOG_RATE,然后通过SD卡或数传把日志取出来,最后按规范命名和管理。每一步都有坑,但踩过一次就记住了。