写在前面
前面的笔记一直在用 ROS2 和 MuJoCo 理解四旋翼动力学与最小控制闭环。现在我买了一块 Pixhawk 6C,准备把仿真里的认识逐步迁移到真实飞控上。
但拿到板子之后,最容易混淆的几个词马上就出现了:Pixhawk、PX4、ArduPilot、QGroundControl、MAVLink、ROS2,它们到底是什么关系?我要安装哪些软件?是不是还要像普通 STM32 开发板一样先装 Keil、CubeMX,然后自己点灯?
这篇先不接电机,也不追求让飞机起飞,只完成一件更重要的事:
把 Pixhawk 6C 的硬件、固件、上位机和开发环境分清楚,并建立一条安全、可重复的入门路线。
这篇完成后的第一个里程碑也很简单:电脑能够识别 Pixhawk 6C,QGroundControl 能读到飞控信息,拿起板子倾斜时姿态仪会跟着变化。
Pixhawk 6C 到底是什么
Pixhawk 6C 不是一块需要从空白工程开始点灯的普通单片机开发板,而是一块完整的自动驾驶仪硬件,也就是常说的飞控。
它把无人机需要的主控、传感器、接口、电源监测和安全机制集中在了一块板子上。根据 PX4 官方资料,Pixhawk 6C 的主要硬件包括:
| 部分 | Pixhawk 6C 配置 | 用途 |
|---|---|---|
| FMU 主处理器 | STM32H743,Cortex-M7,最高 480 MHz | 运行姿态估计、控制器、任务和通信等飞控逻辑 |
| IO 处理器 | STM32F103 | 管理部分输入输出,并提供更独立的安全保障 |
| 加速度计/陀螺仪 | ICM-42688-P、BMI055 | 测量加速度与角速度,双 IMU 可用于冗余 |
| 磁力计 | IST8310 | 提供航向参考 |
| 气压计 | MS5611 | 估计相对高度 |
| 电机/舵机输出 | 16 路 PWM | 连接电调或舵机 |
| 通信接口 | TELEM、GPS、I2C、CAN 等 | 连接数传、GPS、外部传感器和 DroneCAN 设备 |
官方硬件说明:https://docs.px4.io/main/en/flight_controller/pixhawk6c
Pixhawk 6C 适合实时、可靠地完成飞行控制,但它不是用来运行视觉模型、SLAM 或大型神经网络的通用计算机。如果以后需要相机、视觉定位或复杂规划,通常会增加树莓派、Jetson 等伴随计算机,再通过 MAVLink、ROS2、串口或网络与飞控通信。
先把几个角色分清楚
可以先记住下面这条关系:
Pixhawk 6C 硬件 |
Pixhawk 6C:硬件
它是真实的飞控板,负责读取 IMU、运行控制器并输出电机或舵机指令。
PX4 / ArduPilot:飞控固件
它们是运行在 Pixhawk 6C 里面的两套开源飞控软件。两者都很成熟,但配置方式、参数体系和开发生态不同。
刚开始不要在两套固件之间来回切换,否则教程、参数名和故障排查会混在一起。这一系列暂定走 PX4,因为后面还要继续接 Gazebo、ROS2 和自己的控制实验。
QGroundControl:上位机/地面站
QGroundControl,简称 QGC,是电脑或移动设备上的地面站软件。它可以:
- 给 Pixhawk 安装 PX4 或 ArduPilot 固件。
- 选择机架并配置电机输出。
- 校准陀螺仪、加速度计、磁力计和遥控器。
- 查看姿态、位置、电池、GPS 和飞行状态。
- 修改参数、规划航点、下载日志。
- 查看 MAVLink 消息和 PX4 控制台。
QGroundControl 是配置和观察飞控的工具,不是编写 PX4 源码的 IDE。
官方使用手册:https://docs.qgroundcontrol.com/en/
MAVLink:通信协议
MAVLink 可以理解为飞控与地面站、伴随计算机之间共同使用的消息格式。姿态、位置、电量、任务、参数和控制指令,都可以通过 MAVLink 传输。
VS Code:以后修改源码时使用的 IDE
等进入 PX4 源码学习后,再使用 VS Code 查看、修改和调试代码。Windows 下官方推荐使用 WSL2 中的 Ubuntu 作为 PX4 开发环境,再让 Windows 版 VS Code 通过 Remote - WSL 连接进去。
PX4 还是 ArduPilot
Pixhawk 6C 是硬件,并不强制只能运行某一种飞控固件。开始之前要先选路线。
| 路线 | 推荐上位机 | 特点 | 是否作为本系列主线 |
|---|---|---|---|
| PX4 | QGroundControl | 架构清晰,官方仿真与开发资料完整,适合继续学习 ROS2 和飞控源码 | 是 |
| ArduPilot | Mission Planner | 机型和功能丰富,工程参数很多,Mission Planner 在 Windows 上功能完整 | 暂不作为主线 |
QGroundControl 也能连接和配置 ArduPilot,但如果以后决定系统学习 ArduPilot,通常会把 Mission Planner 作为主要工具。
Mission Planner 官方说明:https://ardupilot.org/planner/docs/mission-planner-overview.html
现在需要安装哪些软件
不需要第一天把所有工具都装完。按照使用阶段分层,会清楚很多。
第一阶段:连接和认识飞控
现在真正必需的只有:
| 软件 | 是否必需 | 用途 |
|---|---|---|
| QGroundControl 稳定版 | 必需 | 识别飞控、查看状态、安装固件、校准和配置 |
| Windows USB/串口驱动 | 通常自动完成 | 让系统识别 Pixhawk 的 USB 设备和串口 |
| 浏览器 | 必需 | 查阅 PX4、QGC 和 Holybro 官方文档 |
QGroundControl 官方下载:https://docs.qgroundcontrol.com/Stable_V5.0/en/qgc-user-guide/getting_started/download_and_install.html
目前的准备状态:
- [x] 已从 QGroundControl 官方地址下载 Windows x64 安装包。
- [x] 安装并启动 QGroundControl 5.0.8。
- [x] 用 USB 数据线连接 Pixhawk 6C,Windows 识别为 COM4。
- [x] 记录当前飞控固件和版本:PX4 Pro 1.16.0。
- [x] Windows USB 总线将板卡识别为 PX4 FMU v6C.x,MAVLink Console 确认为 PX4_FMU_V6C。
- [x] 确认约 4 GB microSD 正常挂载到
/fs/microsd。 - [x] 完成第一次姿态数据观察。
如果 Windows 弹出 SmartScreen 提示,不要去不明网盘或软件下载站重新寻找安装包,应回到 QGroundControl 官方文档核对下载来源。
第二阶段:仿真和 PX4 源码
确认硬件和 QGroundControl 都正常后,再准备开发环境:
| 软件 | 用途 |
|---|---|
| WSL2 + Ubuntu 22.04/24.04 | 在 Windows 上提供官方支持的 PX4 Linux 开发环境 |
| Git | 下载和管理 PX4-Autopilot 源码及其子模块 |
| VS Code + Remote - WSL | 阅读、修改、编译和调试 PX4 源码 |
| PX4 开发工具链 | 编译 NuttX 固件和运行 SITL 仿真 |
| Gazebo | PX4 官方生态中常用的飞行动力学仿真环境 |
Windows/WSL2 官方环境说明:https://docs.px4.io/main/en/dev_setup/dev_env_windows_wsl
VS Code 官方配置说明:https://docs.px4.io/main/en/dev_setup/vscode
Pixhawk 6C 对应的 PX4 编译目标是:
make px4_fmu-v6c_default |
这条命令是后面的目标,不是第一次连接飞控时就必须执行的操作。
第三阶段:ROS2 和自主控制
等 PX4 SITL、QGroundControl 和真实飞控的基本操作都熟悉后,再增加:
- ROS2:组织感知、规划、控制和机器人系统节点。
- PX4 ROS 2 接口:在 PX4 与 ROS2 之间传递状态和控制消息。
- MAVSDK:通过 MAVLink 编写任务、控制和状态读取程序。
- PlotJuggler / Flight Review:查看曲线和分析飞行日志。
- MuJoCo:继续用于理解动力学和自己实现控制器,再考虑与 PX4 链路衔接。
暂时不需要安装的软件
以下工具以后可能有用,但第一次使用 Pixhawk 6C 时不必安装:
- Keil、STM32CubeIDE、STM32CubeMX:PX4 已经提供完整板级支持和构建系统,不从空白 STM32 工程开始。
- STM32CubeProgrammer:通常只在特殊烧录、DFU 或 Bootloader 恢复场景使用。
- J-Link、ST-Link 配套工具:只有进入 SWD 硬件调试时才需要。
- Mission Planner:当前选择 PX4 + QGroundControl 路线时不是必需项。
手边需要准备哪些硬件
我实际购买的硬件

这张照片先作为本系列的第一张实物记录。目前可以明确确认的有:
- Pixhawk 6C 飞控主体,外壳上已经标出 POWER、GPS、TELEM、CAN、USB、PWM 等接口。
- 随附的多组连接线束,后续接电源模块、GPS、数传和其他外设时使用。
- 一个标有 PWM 接口编号的转接件。
- 一个仍在防静电袋中的配套板卡;由于包装反光且看不到完整型号,暂时不强行判断具体用途,拆封后再根据正反面丝印和购买清单确认。
现在先不要凭插头外形尝试接线。下一步拆封时,应分别补拍每个部件的正面、背面、接口标签和型号,再建立一份“实物—接口—用途”对照表。
第一次连接就需要
- Pixhawk 6C 飞控。
- 一根确定支持数据传输的 USB 线;有些充电线只能供电,不能通信。
- Windows 10/11 x64 电脑。
- microSD 卡,建议装入飞控,用于日志、任务和部分外设功能。
组装飞机前需要
- 与机型匹配的机架。
- 电机、电调和螺旋桨。
- 电池与合适的平衡充电器。
- 电源模块,负责给飞控供电并测量电池电压、电流。
- GPS/外置磁力计模块。
- 遥控器与接收机,或者后续经过充分验证的其他控制链路。
- 可选的数传电台,用于飞行时连接地面站。
Pixhawk 6C 官方接线入门:https://docs.px4.io/main/en/assembly/quick_start_pixhawk6c
开发调试阶段才需要
- FMU Debug 对应的调试线。
- J-Link、ST-Link 或其他兼容 SWD 调试器。
- 树莓派、Jetson 等伴随计算机,只有需要视觉、SLAM 或更复杂的 ROS2 程序时再增加。
第一次连接的安全准备
第一次实验只让飞控通过 USB 与电脑通信,不接电机动力。
- 拆下全部螺旋桨。 后续任何电机测试也要先拆桨。
- 先不要连接动力电池。 第一次识别飞控时使用 USB 供电即可。
- 不要把电池直接接到飞控普通接口。 真机供电应使用正确的电源模块和 POWER 接口。
- 如果卖家已经配置过飞控,先备份参数。 不要一连接就刷固件。
- 只使用稳定版固件。 Daily/Main 构建适合开发测试,不适合作为第一次上手的基线。
- 切换 PX4 与 ArduPilot 前再次确认。 更换飞控栈会改变参数体系和配置方式。
第一次打开 QGroundControl 要做什么
1. 不连接飞控,先启动软件
先确认 QGroundControl 能正常打开,并记录软件版本。如果普通快捷方式出现界面黑屏或渲染异常,再尝试安装程序创建的 GPU Compatibility Mode 或 GPU Safe Mode 快捷方式。
2. 用 USB 数据线连接 Pixhawk 6C
尽量直接连接电脑的 USB 接口,不通过廉价 USB Hub。等待 Windows 完成设备识别,QGroundControl 通常会自动连接飞控。
如果只能亮灯但软件没有反应,优先检查:
- USB 线是否支持数据传输。
- 换一个电脑 USB 接口。
- Windows 设备管理器中是否出现新的串口或 Pixhawk 设备。
- 是否有其他地面站或串口软件占用了同一个端口。
3. 先记录,不急着修改
连接成功后,先在 QGroundControl 中记录下面这些信息:
| 记录项 | 实际结果 |
|---|---|
| QGroundControl 版本 | 5.0.8 |
| 飞控识别名称 | Generic Quadcopter X,系统 ID 1 |
| 当前固件 | PX4 Pro |
| 固件版本 | 1.16.0 |
| FMU/板卡版本 | Windows 报告 PX4 FMU v6C.x;PX4 报告 PX4_FMU_V6C、V6C000002 |
| Windows 设备/COM 端口 | USB 串行设备(COM4),VID_3185&PID_0038 |
| 是否装有 microSD | 是,约 4 GB,已挂载到 /fs/microsd |
| QGC 是否出现传感器或预检告警 | 传感器就绪;遥控器、飞行模式、电源和执行器待配置 |
同时保存三张截图:
- QGroundControl 的飞控概要页。
- Windows 设备管理器中的设备或串口。
- Fly 页面中的姿态仪和告警信息。
4. 做第一个无风险实验
保持飞控只连接 USB,拿起 Pixhawk 6C,缓慢进行前倾、后仰和左右倾斜。
观察 QGroundControl 的姿态仪是否同步变化。这个小实验已经验证了不少环节:
板载 IMU 正在采样 |
暂时不追求所有预检项目都变绿。没有 GPS、遥控器、电源模块或机架配置时出现告警很正常,下一步应该逐条理解告警,而不是直接关闭安全检查。
什么时候才需要刷 PX4 固件
先确认当前固件。如果飞控来自完整套装或卖家已经完成配置,应先导出参数并记录现状。
如果确认要从头建立 PX4 环境,再使用 QGroundControl 桌面版的 Firmware 页面安装 PX4 Stable Release。进入固件更新流程前,应断开动力电池和其他不必要连接,先进入 Firmware 页面,再按界面提示连接飞控。官方刷写说明:
https://docs.qgroundcontrol.com/master/en/qgc-user-guide/setup_view/firmware.html
这一阶段不要选择:
- Daily Build。
- Beta/Release Candidate。
- 来源不明的自定义
.px4文件。 - 与
px4_fmu-v6c不匹配的本地构建。
这一系列准备怎么学
后面的硬件学习路线暂定如下:
- 00:认识 Pixhawk 6C、PX4 和 QGroundControl。
- 01:第一次连接,记录固件、板卡与传感器状态。
- 02:理解 IMU、坐标系、姿态显示和传感器校准。
- 03:连接电源模块、GPS、遥控器与数传。
- 04:理解机架、执行器映射和无桨电机测试。
- 05:运行 PX4 SITL,并让 QGroundControl 连接仿真飞行器。
- 06:阅读 PX4 模块、uORB 消息与控制器结构。
- 07:编译
px4_fmu-v6c_default,生成自己的固件。 - 08:连接 ROS2/MAVSDK,把仿真控制实验逐步迁移到真机。
这条路线会和已有的 MuJoCo 控制学习并行:
- MuJoCo 路线回答“飞行器为什么能被控制”。
- Pixhawk/PX4 路线回答“真实飞控系统如何把估计、控制、通信和安全组织起来”。
已有笔记:
- Pixhawk 6C 飞控学习 01:安装 QGroundControl 与第一次连接
- ROS2 + MuJoCo 飞控学习 00:为什么先从仿真开始
- ROS2 + MuJoCo 飞控学习 01:先跑通一个最小飞控闭环
本篇检查清单
在进入下一篇之前,至少应该能回答:
- [ ] Pixhawk 6C、PX4、QGroundControl 分别是什么?
- [ ] 当前为什么选择 PX4,而不是同时学习两套飞控栈?
- [ ] QGroundControl 与 VS Code 的职责有什么不同?
- [ ] 第一次连接为什么不能带螺旋桨?
- [x] 电脑是否识别了飞控?是,USB 串行设备(COM4)。
- [x] 当前飞控运行的是什么固件和版本?PX4 Pro 1.16.0。
- [x] 倾斜飞控时,QGroundControl 姿态仪是否同步变化?是,横滚、俯仰和航向均连续响应。
- [ ] 是否保存了概要页、设备管理器和姿态仪截图?
完成这些以后,再开始传感器校准和硬件接线。对第一次接触飞控来说,能够可靠地观察系统,比急着让电机转起来更重要。