1. 课程导入

做飞控调试这些年,我见过太多人一上来就问我:“飞机炸了,怎么查原因?”说实话,没有日志,你连猜都没法猜。日志就是飞控的“黑匣子”,记录着每一毫秒发生了什么。

这一章,我们先把这个“黑匣子”拆开看看。

1.1 为什么需要日志系统?

你想想看,飞机在天上飞,你在地上看。出了抖动、偏航、甚至炸机,你靠肉眼能看出啥?

日志系统的作用,说白了就是三个:

  • 故障排查:飞机出问题后,回放日志能还原现场
  • 性能调优:PID参数调得好不好,日志里一清二楚
  • 数据验证:新固件、新硬件靠不靠谱,跑一遍日志分析就知道

核心观点:没有日志的飞行,等于盲飞。我个人的习惯是,每次试飞必开日志,哪怕只是在地面测试。

1.2 日志类型:DATAFLASH vs Telemetry

ArduPilot的日志分两种,很多人搞混过。我刚开始也踩过坑——以为遥测日志就够了,结果炸机后数据不全。

特性 DATAFLASH(板载日志) Telemetry(遥测日志)
存储位置 飞控板载SD卡或内部Flash 地面站电脑(通过数传接收)
数据完整性 完整,不掉帧 受信号质量影响,可能丢包
采样率 最高(可配置,通常50-400Hz) 较低(受数传带宽限制)
适用场景 故障分析、高精度调试 实时监控、常规飞行记录
文件格式 .bin(二进制) .log(文本,TLog格式)

避坑指南:我曾经只依赖Telemetry日志做分析,结果有一次数传在关键阶段断连了,丢失了炸机前最后5秒的数据。从那以后,我强制要求所有飞机必须同时开启DATAFLASH日志。

1.3 日志文件结构:.bin 与 .log

这两种文件,你都得会看。

.bin 文件(DATAFLASH)

二进制格式,体积小、写入快。飞控每毫秒都在往里面塞数据。你直接用记事本打开是乱码,得用专用工具。

内部结构其实很简单——就是一条一条的“消息”串在一起。每条消息有:

  • 头标识:比如 ATT(姿态)、GPS(定位)、IMU(惯性数据)
  • 时间戳:从飞控启动开始的微秒数
  • 数据体:具体数值,比如 Roll/Pitch/Yaw

.log 文件(Telemetry)

文本格式,可读性高。你可以直接用文本编辑器打开看。但文件体积大,长时间飞行可能几百MB。

举个例子,打开一个 .log 文件,你会看到类似这样的内容:

ATT, 154321, 0.01, -0.02, 1.57
GPS, 154322, 31.2304, 121.4737, 50.2, 12
IMU, 154323, 0.98, -0.12, 9.81

每一行就是一条消息,逗号分隔。第一列是消息类型,第二列是时间,后面是具体数据。

个人经验:我习惯用 .bin 做正式分析,用 .log 做快速预览。因为 .bin 数据更全,但 .log 可以直接 grep 关键词,查起来快。

1.4 常用日志查看工具

工具选对了,效率翻倍。我推荐两个:

Mission Planner(MP)

这是最常用的地面站,自带日志分析功能。操作简单,适合新手。

  • 打开方式:菜单栏 → Flight Data → Log → Download/Review
  • 支持 .bin 和 .log 直接拖入
  • 可以回放飞行轨迹、查看曲线、导出CSV

我个人觉得MP的曲线查看功能最实用。选一个参数,比如 Roll,就能看到整段飞行的变化曲线。哪里抖了、哪里超调了,一眼就能看出来。

MAVExplorer

这是命令行工具,功能更强大。适合批量处理、脚本分析。

基本用法:

# 查看日志基本信息
mavlogdump.py --types ATT,GPS flight.bin

# 导出特定参数为CSV
mavlogdump.py --types IMU --format csv flight.bin > imu_data.csv

# 图形化查看
mavgraph.py flight.bin 'ATT.Roll' 'ATT.Pitch'

为什么我推荐MAVExplorer?因为它可以写脚本批量处理。比如你一次试飞了10架次,用MP一个个打开看太慢了。写个脚本,一键生成所有架次的姿态曲线对比图,效率高得多。

我的建议:新手先用Mission Planner上手,熟悉日志结构后,再学MAVExplorer。两条腿走路,走得更稳。

1.5 日志系统整体架构

下面这张图,是我自己总结的日志系统工作流程。你看一遍,就能理解数据从传感器到你电脑屏幕的完整路径。

ArduPilot日志系统架构图 ArduPilot日志系统架构 传感器 IMU/GPS/磁力计 飞控主循环 400Hz 调度 日志缓冲区 环形队列 DATAFLASH SD卡/内部Flash Telemetry 数传/串口 地面站 Mission Planner 分析工具 MAVExplorer 说明: 传感器数据经飞控主循环采集后,写入环形缓冲区。缓冲区同时向DATAFLASH(完整存储)和Telemetry(实时发送)输出。 地面站接收Telemetry数据,分析工具可读取DATAFLASH的.bin文件进行深度分析。

这张图你看懂了吗?核心流程就是:传感器 → 飞控主循环 → 日志缓冲区 → 两种输出路径。嗯,这里要注意,缓冲区是环形队列,满了会覆盖旧数据。所以日志文件大小是固定的,你不用担心SD卡被写爆。

1.6 本章小结

这一章我们讲了日志系统的三个核心点:

  • 两种日志类型:DATAFLASH(完整可靠)和 Telemetry(实时但可能丢包)
  • 两种文件格式:.bin(二进制,专用工具查看)和 .log(文本,可直接打开)
  • 两个常用工具:Mission Planner(图形化,适合新手)和 MAVExplorer(命令行,适合批量处理)