1. ArduPilot 与 QGC 生态概述

大家好,我是你们的嵌入式飞控工程师朋友。今天咱们正式开课,聊聊 ArduPilot 和 QGC 这套组合拳。

说实话,我最早接触飞控时也踩过不少坑。那时候文档少,论坛里大家各说各的。现在好了,生态成熟多了。但很多新手一上来就被各种概念搞晕——ArduPilot、PX4、QGC、Mission Planner……到底谁是谁?

这一章,咱们先把这些概念理清楚。你想想看,盖房子得先看图纸,调飞控也得先懂生态。

ArduPilot 固件架构:一个老牌开源飞控的骨架

ArduPilot 是什么?说白了,它是一个功能极其丰富的开源自动驾驶仪固件。支持多旋翼、固定翼、直升机、地面车辆、水下航行器……几乎你能想到的载具类型,它都能搞定。

它的架构分三层:

  • 硬件抽象层(HAL):负责跟具体的硬件打交道。不管你是用 Pixhawk 还是 Cube,或者自己画的板子,只要 HAL 层适配了,上层代码基本不用动。我个人习惯把 HAL 理解成「万能转接头」。
  • 核心库(AP_Library):数学运算、滤波器、坐标系转换、EKF 算法……这些通用模块都在这里。嗯,这里面的代码质量很高,我经常翻出来当参考。
  • 载具类型层(Vehicle Type):Copter、Plane、Rover、Sub……每种载具的逻辑都封装成独立的目录。这样改多旋翼的参数不会影响固定翼,互不干扰。

核心要点:ArduPilot 的模块化设计非常彻底。你调参时改的每一个参数,最终都会落到某个具体的模块里。理解这个架构,能帮你快速定位问题。

我在项目中遇到过一件事:有次客户说飞机悬停时老往一边偏。我排查了半天,最后发现是 HAL 层里某个传感器的方向装反了。你看,不懂架构的话,这种问题能查一整天。

QGC 地面站功能:你的飞控遥控器

QGC(QGroundControl)是目前最流行的跨平台地面站之一。它支持 Windows、macOS、iOS、Android,甚至还能跑在 Linux 上。

它的核心功能包括:

  • 实时数据显示:高度、速度、姿态、电池电压、GPS 状态……所有传感器数据一目了然。
  • 参数调优:在线修改 PID、滤波器、限幅等参数,实时观察飞行器响应。
  • 任务规划:在地图上点几个航点,设置动作,就能生成一条完整的航线。
  • 日志分析:飞行结束后下载 .bin 或 .log 文件,回放分析。
  • 固件升级:一键刷写 ArduPilot 或 PX4 固件。

我个人觉得,QGC 最大的优势是界面清爽,操作逻辑很符合工程师的习惯。不像某些地面站,按钮堆得跟飞机驾驶舱似的。

小技巧:QGC 的「参数编辑器」支持搜索和分组。你输入 "pid" 就能过滤出所有 PID 相关参数,不用翻几百个列表。

PX4 与 ArduPilot 的区别:两个流派,一个目标

很多新手会问:到底学 ArduPilot 还是 PX4?我的回答是:看你的场景。

它们俩的区别,我用一张表给你说清楚:

对比维度 ArduPilot PX4
诞生时间 2009 年(APM 项目) 2014 年(从 PIXHAWK 分离)
代码语言 C++(Arduino 风格早期) C++(现代 C++ 风格)
架构风格 单体式 + 载具类型分离 微服务式(uORB 消息总线)
载具支持 极广(多旋翼、固定翼、直升机、车、船、潜艇) 广(多旋翼、固定翼、VTOL、车)
调参复杂度 中等(参数多但文档全) 中等偏上(需要理解 uORB 和模块)
社区生态 非常成熟(论坛、Wiki、视频教程丰富) 活跃(偏向学术和工业应用)
QGC 支持 完全支持 完全支持

为什么会这样?我个人的理解是:ArduPilot 更偏向「实战派」,它从 APM 时代一路走过来,积累了大量的实际飞行案例。PX4 则更「学院派」,架构更现代,适合做二次开发和学术研究。

我曾经在两个项目里分别用过它们。做农业植保机时,我选了 ArduPilot,因为它的喷洒逻辑和航点动作非常成熟。做科研用的 VTOL 验证机时,我选了 PX4,因为它的模块化架构方便我替换自己的控制算法。

避坑指南:千万不要在同一个项目里混用 ArduPilot 和 PX4 的参数。它们的 PID 命名规则、坐标系定义、参数范围都不一样。我曾经见过有人把 ArduPilot 的 PID 值直接填进 PX4 里,结果飞机一离地就翻了个跟头。

课程目标与前置知识

这门课的目标很明确:让你能独立完成 ArduPilot 固件在 QGC 中的调参与部署。

具体来说,学完这门课,你应该能做到:

  • 熟练使用 QGC 连接飞控、查看实时数据、修改参数
  • 理解 PID 调参的底层逻辑,能独立完成多旋翼的悬停调参
  • 掌握传感器校准、EKF 配置、故障保护设置等关键操作
  • 能通过日志分析定位常见的飞行问题
  • 完成从仿真到实飞的全流程部署

前置知识方面,我建议你具备:

  • 基本的无人机飞行原理(知道什么是俯仰、横滚、偏航)
  • 简单的 C/C++ 阅读能力(至少能看懂参数定义)
  • 会用电脑,能安装软件(这个应该没问题吧?)

如果你完全零基础,也别慌。我会在每章开头补充必要的背景知识。你只要跟着一步步操作,很快就能上手。

本章知识体系总览

下面这张图,把咱们这一章的核心逻辑串起来了。你可以把它当作整个课程的「导航地图」:

ArduPilot 与 QGC 生态概述 ArduPilot 与 QGC 生态概述 ArduPilot 固件架构 QGC 地面站 PX4 对比 HAL 硬件抽象 AP_Library 核心库 载具类型层 实时数据显示 参数调优 任务规划 日志分析 微服务架构(uORB) 现代 C++ 风格 课程目标:独立完成 ArduPilot 在 QGC 中的调参与部署 前置知识:飞行原理基础 + 简单 C/C++ 阅读能力 + 基本电脑操作

这张图把咱们这一章的核心内容串成了三条主线:ArduPilot 固件架构、QGC 地面站功能、PX4 对比。最终都指向同一个目标——让你能独立完成调参与部署。