1. ArduPilot与MAVLink概述
各位同学,欢迎来到这门实战课。我是你们的讲师,一个在无人机行业摸爬滚打了十来年的老工程师。今天咱们先不急着飞,先把地基打牢。
ArduPilot、MAVLink、Mission Planner——这三个词,说白了就是你玩转开源无人机的三把钥匙。缺一把,你都玩不转。我见过太多人一上来就装软件、连飞控,结果连日志都读不懂,出了故障只能干瞪眼。嗯,咱们今天就把这三样东西彻底讲透。
本章核心目标:理解ArduPilot的来龙去脉、掌握MAVLink的基本通信模型、完成Mission Planner的安装与初始配置。学完这章,你就能让你的电脑和飞控“对上话”。
1.1 ArduPilot的前世今生
ArduPilot的历史,其实挺有意思的。最早可以追溯到2007年,一群DIY爱好者想给航模加上自动驾驶功能。那时候没有现成的开源飞控,大家全靠手搓代码。
我记得2010年我刚入行时,ArduPilot还只能跑在Arduino Mega板上,代码量也就几万行。现在呢?它已经支持固定翼、多旋翼、直升机、无人车、无人船,甚至潜艇。代码量超过百万行。为什么会这样?因为社区的力量太强大了。
我个人习惯把ArduPilot的发展分为三个阶段:
| 阶段 | 时间 | 关键事件 |
|---|---|---|
| 萌芽期 | 2007-2012 | 基于Arduino,支持基本GPS导航 |
| 成长期 | 2013-2018 | 迁移到STM32,支持Pixhawk硬件,加入MAVLink v2 |
| 成熟期 | 2019至今 | 支持多传感器融合、EKF3、高级避障、协同编队 |
说白了,ArduPilot能活到今天,靠的是两样东西:一是完全开源,二是MAVLink协议。没有MAVLink,地面站和飞控就是两个孤岛。
1.2 MAVLink协议——无人机的“普通话”
MAVLink是什么?我打个比方。你想想看,飞控是中国人,地面站是美国人,它们要聊天,总得有个共同语言吧?MAVLink就是这个共同语言。
MAVLink全称是Micro Air Vehicle Link,2009年由苏黎世联邦理工学院的Lorenz Meier开发。它本质上是一个轻量级的消息协议,专门为无人机这种资源受限的嵌入式系统设计。
它的核心特点就三个:
- 轻量:一个消息包最小只有8字节,适合串口、数传等低带宽链路
- 可扩展:你可以自定义消息,社区已经定义了超过200种标准消息
- 双向:飞控可以发数据给地面站,地面站也可以发指令给飞控
目前主流的是MAVLink v2版本。v1和v2有什么区别?我直接给你列个表:
| 特性 | MAVLink v1 | MAVLink v2 |
|---|---|---|
| 消息ID范围 | 0-255 | 0-16777215 |
| 有效载荷 | 最大255字节 | 最大255字节 |
| 签名 | 不支持 | 支持(防篡改) |
| 兼容性 | 基础 | 向后兼容v1 |
我在项目中遇到过一个问题:用v1协议时,飞控被恶意干扰,地面站收到了伪造的“降落”指令。后来升级到v2,开启签名验证,问题就解决了。所以,新项目我建议直接用v2。
小提示:MAVLink v2的签名功能需要飞控和地面站同时支持,并且要预先配置密钥。Mission Planner默认开启v2,但签名默认是关闭的,需要手动启用。
下面这张图,是我自己画的MAVLink通信框架。你看一眼,就能明白整个数据流是怎么走的。
1.3 Mission Planner——你的无人机指挥中心
Mission Planner,简称MP,是ArduPilot官方最成熟的地面站软件。它由Michael Oborne开发,用C#写的,只支持Windows。不过别担心,Linux和Mac用户可以用QGroundControl,功能类似。
MP能干什么?我简单列一下:
- 刷写固件:给飞控板烧录ArduPilot
- 配置参数:调整PID、传感器校准、飞行模式
- 规划任务:在地图上设置航点、动作
- 实时监控:查看姿态、GPS、电池、遥测数据
- 日志分析:下载并分析飞行日志,排查故障
安装其实很简单。我带你走一遍流程:
- 下载:去ArduPilot官网的Mission Planner页面,下载最新版安装包。或者直接用GitHub的Release页面。
- 安装:双击运行,一路Next。注意,安装路径不要有中文,否则可能出奇怪的问题。我曾经因为路径带了个“飞”字,结果日志导出失败,折腾了半天。
- 首次启动:打开MP,它会自动检查更新。建议保持联网,因为固件和参数库经常更新。
- 连接飞控:用USB线连接飞控和电脑。在MP右上角选择COM口和波特率(一般Pixhawk是115200),点击Connect。
注意:连接飞控前,确保飞控已经上电(USB供电或电池供电)。如果飞控没有独立供电,仅靠USB口供电可能不稳定,尤其是接了GPS、接收机等外设时。我建议用电池供电,USB只做数据通信。
连接成功后,你会看到MP的主界面。左边是仪表盘,显示姿态、高度、速度等数据;中间是地图;右边是状态栏。如果一切正常,你会看到HEARTBEAT图标变绿,表示飞控和地面站正在“聊天”。
1.4 初始配置——让飞控认识你的飞机
连接只是第一步。要让飞控真正飞起来,还得做初始配置。我个人习惯按这个顺序来:
| 步骤 | 操作 | 说明 |
|---|---|---|
| 1 | 选择机架类型 | 在“初始设置”页面选择你的机型(四旋翼、固定翼等) |
| 2 | 加速度计校准 | 将飞控平放、左侧、右侧、机头向下、机头向上,各点一次 |
| 3 | 罗盘校准 | 拿着飞机绕三个轴各转一圈,直到校准完成 |
| 4 | 遥控器校准 | 在MP里点击“校准遥控器”,然后拨动摇杆到最大行程 |
| 5 | 电调校准 | 如果使用PWM电调,需要做行程校准(非必须,但推荐) |
这里有个坑,我必须要说。罗盘校准的时候,很多人随便转两下就完事了。结果飞出去以后,飞机疯狂画圈,最后炸机。为什么?因为罗盘数据不准,飞控的航向角是错的。
我曾经在项目里遇到过一架六旋翼,起飞后总是往右偏。查了半天,发现是罗盘校准的时候,飞机旁边放了个金属工具箱。你想想看,磁场被干扰了,校准结果能对吗?所以,校准罗盘时,远离金属物体、高压线、钢筋混凝土建筑。
避坑指南:校准完成后,在MP的“飞行数据”页面查看HUD上的航向角。用手转动飞机,看航向是否跟着变。如果数值跳动超过5度,或者明显滞后,说明校准有问题,重新来一遍。