1. ArduPilot 生态全景:从历史到选型
各位同学,欢迎来到这门课的第一章。在正式开始讲航线规划之前,我觉得有必要先把 ArduPilot 这个生态系统的全貌给大家捋一遍。说白了,你得知道自己手里拿的到底是什么工具,它从哪来,能装在哪,又该怎么跟它对话。
我最早接触 ArduPilot 是在 2014 年,那时候还在用 APM 2.6 飞控板,代码库远没有现在这么庞大。嗯,一晃十年过去,ArduPilot 已经成了开源无人机领域最成熟的固件之一。今天我们就从四个维度来拆解这个生态:历史与社区、硬件平台、固件架构、地面站选型。
一句话总结:ArduPilot 是一个支持多平台(旋翼、固定翼、车、船、水下、天线跟踪)的开源自动驾驶仪固件,由全球社区维护,兼容 Pixhawk/Cube 等主流硬件。
1.1 历史与社区:一个开源项目的十年进化
ArduPilot 的前身是 2009 年由 DIY Drones 社区发起的 APM(ArduPilot Mega)项目。最初它只是基于 Arduino 的简单飞控,能做的事情很有限。我记得当时调个 PID 参数都得反复试飞,哪像现在有自动调参。
到了 2013 年,3DR 公司接手了 APM 的商业化推广,推出了 Pixhawk 硬件。但后来 3DR 转型做整机,ArduPilot 代码就由社区完全接管了。现在项目的核心维护者大概有 20 多人,来自全球各地,包括一些我认识的资深工程师。
社区有几个关键资源,我建议你收藏:
- 官方文档:ardupilot.org —— 所有参数、模式、硬件兼容性都在这里
- 讨论论坛:discuss.ardupilot.org —— 遇到问题先搜这里,90% 的坑都有人踩过
- GitHub:github.com/ArduPilot/ardupilot —— 源码和 issue 跟踪
我的建议:刚入门时别急着看源码,先把官方 wiki 的 "Getting Started" 部分通读一遍。我曾经带过一个新人,上来就改代码,结果把 EKF 参数调乱了,炸了一台六轴。先理解,再动手。
1.2 支持的硬件平台:Pixhawk / Cube / Here+
ArduPilot 支持的硬件非常多,但主流就几个系列。我按实际项目经验给你排个序:
| 硬件平台 | 处理器 | 适用场景 | 我的评价 |
|---|---|---|---|
| Pixhawk 1 (FMUv2) | STM32F427 | 入门、教学、轻型无人机 | 够用,但内存小,别挂太多传感器 |
| Pixhawk 4 (FMUv5) | STM32F765 | 中型多旋翼、固定翼 | 性价比高,我目前的主力板 |
| Cube Orange+ (FMUv6) | STM32H753 | 工业级、冗余系统、大型无人机 | 稳定,双 IMU 冗余,适合高可靠性项目 |
| Here+ GPS | u-blox M8P | RTK 高精度定位 | 配合 Cube 用,厘米级精度,植保测绘必备 |
选硬件时有个原则:别为了省钱买太老的板子。我曾经见过有人还在用 FMUv2 跑 Copter-4.0,结果内存不够,日志都存不全。现在 FMUv5 以上是主流,v6 开始支持更高级的 EKF 和冗余架构。
避坑指南:买 Pixhawk 时注意区分正版和山寨。山寨版可能用劣质晶振,导致 GPS 丢星。我曾经在项目里吃过这个亏,后来全部换成 Cube 系列,再没出过类似问题。
1.3 固件架构:APM:Copter / Plane / Rover / Sub / AntennaTracker
ArduPilot 的固件按载具类型分为多个版本。它们共享底层库(如 EKF、PID、MAVLink 协议),但上层逻辑完全不同。我画了一张图帮你理解:
你想想看,一个代码库要同时支持天上飞的、地上跑的、水里游的,这架构设计得多巧妙。核心思想就是分层:底层驱动和算法库是通用的,上层按载具类型实现不同的控制逻辑。
举个例子,Copter 和 Plane 都用同一个 EKF 做姿态估计,但 Copter 的 PID 输出是电机混控,Plane 的 PID 输出是舵面和油门。你如果从 Copter 转到 Plane,很多参数概念是相通的,但调参思路完全不同。
1.4 地面站对比与选择:Mission Planner / QGroundControl / MAVProxy
地面站就是你和飞控之间的桥梁。我三个都用过,各有各的脾气。直接上对比表:
| 地面站 | 平台 | 核心优势 | 主要短板 | 我推荐谁用 |
|---|---|---|---|---|
| Mission Planner | Windows | 功能最全,参数配置、日志分析、固件刷写一站式 | 界面老旧,仅 Windows | 初学者、调试阶段、地面站重度用户 |
| QGroundControl | Win/Mac/Linux/iOS/Android | 跨平台,UI 现代,触屏友好 | 部分高级功能不如 MP 深入 | 野外作业、平板操控、跨平台团队 |
| MAVProxy | Linux/macOS (命令行) | 轻量、可脚本化、适合自动化 | 学习曲线陡,无图形界面 | 开发者、自动化测试、树莓派集成 |
我个人习惯是:调试和参数配置用 Mission Planner,因为它对 ArduPilot 的支持最完整。野外飞行时用 QGroundControl,装在平板上方便。如果要做自动化测试或者远程控制,我会写 MAVProxy 脚本。
我的经验:别只用一个地面站。Mission Planner 的日志分析功能(尤其是 "Graph" 界面)是调试神器。QGroundControl 的 "Plan" 视图做航线规划更直观。MAVProxy 的 module load 命令可以动态加载功能,比如 module load map 就能在终端里看简易地图。