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 协议),但上层逻辑完全不同。我画了一张图帮你理解:

ArduPilot 固件架构全景图 ArduPilot 固件架构 共享底层库 EKF · PID · MAVLink · 参数系统 · 日志 · 传感器驱动 Copter Plane Rover Sub Antenna
Tracker 多旋翼控制 悬停 · 航线 · 返航 光流 · 避障 固定翼控制 巡航 · 盘旋 · 着陆 空速 · 襟翼 地面车控制 阿克曼 · 差速 路径跟踪 水下控制 深度保持 · 航向 ROV 模式 天线 跟踪 指向 核心特点 同一套代码库,不同编译目标 · 共享 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 就能在终端里看简易地图。