3、日志获取方式:从SD卡读取日志、通过MAVLink实时下载日志、云端日志管理平台
做无人机飞控这么多年,我越来越觉得——日志就是飞行器的「黑匣子」。没有日志,你连飞机为什么炸机都说不清楚。今天咱们就聊聊日志怎么拿到手。说白了,就三种路子:从SD卡里扒、通过MAVLink实时拽、或者上云端直接调。
这三种方式各有各的脾气。我建议你根据场景来选,别一根筋。
3.1 从SD卡读取日志
这是最传统、也最靠谱的方式。飞控板上插一张MicroSD卡,飞完拔下来,插电脑上读。嗯,就这么简单。
但这里头有几个坑,我踩过不止一次。
日志文件一般长这样:
2024-03-15 14-32-10.log
2024-03-15 15-10-05.log
2024-03-16 09-22-33.log
文件名里带了时间戳,方便你按时间找。我个人习惯是每次飞行前格式化一次SD卡,避免旧日志把空间占满。
读取步骤:
- 断电后拔出SD卡
- 用读卡器连电脑
- 找到
/APM/LOGS/或/logs/目录 - 把 .log 或 .bin 文件拷贝出来
- 用 Mission Planner 或 QGroundControl 打开分析
APM/LOGS/ 下。但有些固件版本会存在 logs/ 里。找不到的时候,两个目录都翻翻。
SD卡读取的好处是数据完整,不受通信干扰。坏处是你得落地才能看,不能实时监控。我在项目里遇到过飞控在空中SD卡写满的情况,结果日志后半段全丢了。后来我养成了习惯——每次起飞前检查剩余空间。
3.2 通过MAVLink实时下载日志
这个方式就高级一点了。飞机还在天上飞,你就能通过数传电台或者4G模块,把日志一段一段拽下来。
MAVLink协议里专门有个命令叫 MAV_CMD_LOG_REQUEST_DATA。你想想看,地面站发一个请求,飞控就把指定地址的日志数据包发回来。说白了就是远程扒数据。
常用流程:
- 地面站发送
LOG_REQUEST_LIST获取日志列表 - 选择要下载的日志序号
- 发送
LOG_REQUEST_DATA逐块下载 - 接收并拼接数据包
- 保存为本地文件
代码示例(伪代码,实际用MAVLink SDK):
// 请求日志列表
mavlink_msg_log_request_list_send(
MAVLINK_COMM_0,
target_system,
target_component,
0, // 起始序号
0xFFFF, // 结束序号
);
// 收到日志条目后,请求具体数据
mavlink_msg_log_request_data_send(
MAVLINK_COMM_0,
target_system,
target_component,
log_id, // 日志ID
0, // 偏移地址
0xFFFFFFFF // 数据长度
);
实时下载的好处是你能在飞行中发现问题。比如某个传感器数据异常,你当场就能看到日志里的原始值。坏处是——通信不稳定的话,下载会中断,日志文件就坏了。
3.3 云端日志管理平台
这个是我最近几年用得越来越多的方式。飞控通过4G模块或者Wi-Fi,把日志自动上传到云端。你坐在办公室,打开浏览器就能看。
市面上主流的平台有:
| 平台名称 | 特点 | 适用场景 |
|---|---|---|
| ArduPilot Cloud | 免费,与Mission Planner集成 | 个人开发者、小团队 |
| DroneLogbook | 支持多机管理,有分析工具 | 商业运营、巡检 |
| FlytBase | 企业级,支持API | 大规模机群管理 |
| 自建平台 | 灵活,数据私有 | 军工、保密项目 |
云端平台的核心逻辑其实不复杂:
飞控 → 4G模块 → MQTT/HTTP → 云服务器 → 数据库 → Web前端
我参与过一个农业植保项目,20架无人机同时作业。每架飞机每10分钟上传一次日志片段。云端平台自动分析,发现哪架飞机的电机温度异常,直接弹窗报警。你想想看,要是靠人工去读SD卡,20架飞机得读到什么时候?
但云端方式也有短板。网络覆盖不到的地方(比如深山、海上),日志就传不上来。我建议你做个混合方案:SD卡做本地备份,云端做远程监控。两套都跑,谁也不耽误谁。
三种方式对比
| 特性 | SD卡读取 | MAVLink实时下载 | 云端平台 |
|---|---|---|---|
| 实时性 | 低(落地后) | 中(飞行中) | 高(自动上传) |
| 数据完整性 | 高 | 中(受通信影响) | 中(受网络影响) |
| 操作复杂度 | 低 | 中 | 高(需配置网络) |
| 适用规模 | 单机 | 单机/小规模 | 大规模机群 |
| 成本 | 低(仅需SD卡) | 中(需数传模块) | 高(需4G/云服务) |
我个人习惯是:日常调试用SD卡,飞行测试用MAVLink实时看关键参数,正式运营上云端。三种方式互补,别死磕一种。