Pixhawk 6C 飞控学习 01:安装 QGroundControl 与第一次连接

这一步要完成什么

上一篇先分清了 Pixhawk 6C、PX4 和 QGroundControl 的关系。这一篇开始接触真实硬件,但目标仍然很克制:

只用 USB 连接飞控,确认 Windows 与 QGroundControl 能识别它,记录原始状态,不刷固件、不改参数,也不连接动力系统。

首次连接看起来只是“插一根线”,实际上已经贯通了下面这条链路:

Pixhawk 6C 硬件
→ PX4 固件启动
→ USB/MAVLink 通信
→ Windows 识别串口
→ QGroundControl 下载参数并显示状态

实际使用的软件与连接结果

本次实际环境如下:

项目 实测结果
操作系统 Windows x64
QGroundControl 5.0.8
连接方式 USB 数据线,未接动力电池
Windows 设备名称 USB 串行设备(COM4)
USB 总线报告名称 PX4 FMU v6C.x
USB 设备标识 VID_3185&PID_0038
飞控固件 PX4 Pro 1.16.0
系统 ID 1
当前机架 Generic Quadcopter X

Windows 出现 COM4,说明 USB 数据线不仅能供电,也能够传输数据。QGroundControl 随后自动连接飞控并读取参数,因此暂时不需要在“通讯连接”中手动创建串口连接。

第一次启动时的“车辆信息”怎么选

QGroundControl 第一次启动会显示“车辆信息”窗口,让用户选择固件和飞机类型。我的实际界面如下:

QGroundControl 首次启动时的车辆信息选择窗口

当前学习路线准备使用 PX4,并最终搭建四旋翼,因此选择:

选项 本次选择 原因
固件 PX4 Pro 后续学习 PX4、Gazebo、ROS2 和 PX4 源码
飞机 Multi-Rotor 目标机型是四旋翼,属于多旋翼

选择后点击 OK 即可。

这里最重要的认识是:这个窗口用于指定未连接飞控时的离线任务规划默认值,并不是固件刷写窗口。 点击 OK 不会把 PX4 写入飞控,也不会修改飞控里的机架、传感器校准或控制参数。真正刷写固件需要主动进入“车辆配置 → 固件”,并完成另一套明确的刷写流程。

如果以后改学固定翼,或者把固件路线切换成 ArduPilot,可以再修改离线车辆信息;它不要求和当前每一块真实飞控永远保持一致。飞控已经连接时,QGroundControl 会从设备读取实际固件和机型信息。

从概况页读到了什么

弹窗背后的“概况”页已经证明 QGroundControl 成功读取了飞控:

  • 飞控运行 PX4 Pro 1.16.0,系统 ID 为 1。
  • 当前机架是 Generic Quadcopter X。
  • 磁罗盘、陀螺仪和加速度计显示为就绪。
  • 遥控器的横滚、俯仰、水平和油门仍显示“需要设置”。
  • 飞行模式 1~6 尚未分配。
  • 电池计数为 0,因为此时只进行了 USB 连接,没有接动力电池与电源模块。
  • 执行器、电源和部分安全项尚未配置,概况页因此仍有红色项目。

这些红色提示在当前阶段是正常的,它们代表“整架飞机还不满足起飞条件”,不代表飞控已经损坏。缺少遥控器、接收机、电源模块、GPS、电调和电机时,不应该为了让界面变绿而关闭安全检查或随意填写参数。

为什么现在不刷固件

飞控已经能够正常启动并报告 PX4 1.16.0。这个阶段直接刷写固件会同时引入版本变化、参数变化和硬件识别三个变量,一旦出现问题,很难判断原因。

更稳妥的顺序是:

  1. 记录当前固件、机架与告警状态。
  2. 导出一份完整参数作为原始备份。
  3. 验证姿态显示能随飞控倾斜而变化。
  4. 确认板卡型号和 microSD 状态。
  5. 再决定是否确有必要刷写 PX4 Stable。

即使以后需要刷写,也应使用 QGroundControl 官方稳定版固件,并确保飞控不接动力电池、不接螺旋桨。

本次操作步骤

  1. 先启动 QGroundControl 5.0.8。
  2. 使用确认支持数据传输的 USB 线连接 Pixhawk 6C。
  3. 不连接动力电池、电机和螺旋桨。
  4. 等待 Windows 出现“USB 串行设备(COM4)”。
  5. 等待 QGroundControl 自动下载参数并进入车辆配置页面。
  6. 在首次车辆信息窗口选择 PX4 ProMulti-Rotor,点击 OK。
  7. 记录概况页,不修改红色项目,不进入固件刷写流程。

原始参数备份结果

在修改任何设置之前,先从“参数 → 工具 → 保存到文件”导出了原始参数:

pixhawk6c_px4_1.16.0_original_2026-08-09.params

验证结果如下:

检查项 结果
文件大小 37,261 字节
参数记录数 1,100
唯一参数名 1,100
载具 ID / 组件 ID 1 / 1
MAV_SYS_ID 1
SYS_AUTOSTART 4001
SYS_AUTOCONFIG 0
SHA-256 FE087AA9EAB65D3EC5415028AFC451D854B7B02EC123EEE7342D1637817456D1

文件中还能读到加速度计、陀螺仪和磁力计的有效设备 ID,说明这不是空文件或只包含少量差异参数的文件。原文件与第二份离线副本的 SHA-256 相同,复制过程中没有发生内容变化。

完整参数文件可能包含具体传感器校准量和硬件配置,因此只保存在本地资料目录,不作为博客附件公开。博客记录文件名、参数数量和哈希值,既能证明备份状态,也可以在以后恢复前核对文件是否被改动。

一次实际的 Comms Lost 与恢复

第二天继续实验时,Pixhawk 已经重新插入电脑,Windows 也仍然显示 COM4,但 Fly 页面顶部出现了红色的 Comms Lost

QGroundControl 显示 Comms Lost

这里需要区分三种状态:

状态 含义
Windows 存在 COM4 操作系统能够识别 USB 串口设备
QGC 不再显示 Comms Lost QGC 正在持续收到飞控的 MAVLink 心跳
QGC 显示 Not Ready 通信正常,但整机预检条件尚未全部满足

这次 QGroundControl 进程从前一天开始一直没有退出,而飞控中途被拔下并在第二天重新接入,旧通信会话没有正常恢复。排查时确认 COM4 状态正常,并从 USB 总线报告中读到了更明确的设备名称 PX4 FMU v6C.x,因此问题不在 USB 驱动或板卡识别。

安全恢复步骤是:

  1. 点击顶部的 Disconnect。
  2. 完全退出 QGroundControl。
  3. 拔下 Pixhawk USB,等待约 5 秒。
  4. 先启动 QGroundControl,再重新插入 Pixhawk。
  5. 等待飞控自动连接和参数加载完成。

恢复连接后,QGC 自动进入车辆配置概况页:

重新连接后自动进入车辆配置概况页

这是正常行为。由于遥控器、飞行模式、电源和执行器还没有配置,QGC 会优先显示带有红色待办项的概况页。红色项目说明当前不具备起飞条件,并不表示通信再次中断。

姿态仪验证

退出车辆配置并返回 Fly 页面后,顶部状态显示为 Not Ready,没有再次出现 Comms Lost

QGroundControl 恢复通信后的 Fly 页面

保持飞控只连接 USB,依次缓慢进行左右横滚、前后俯仰,以及水平状态下的左右转动。实际观察结果是:

  • 姿态仪会连续跟随横滚和俯仰动作变化。
  • 航向显示会随水平转动发生变化。
  • 动作响应连续,没有卡死或突然丢失通信。
  • 飞控重新水平放置后,姿态显示能够稳定下来。

静态截图只能记录当时的连接页面,不能独立证明动态过程,因此这里同时保留实际操作观察结论。这次测试没有执行传感器校准,也没有修改任何飞控参数。

姿态仪能正确响应,说明下面的最小观测链路已经跑通:

IMU 采样
→ PX4 姿态估计
→ MAVLink 数据传输
→ USB 串口通信
→ QGroundControl 姿态显示

用 MAVLink Console 只读确认系统信息

为了进一步确认板卡、固件构建和 microSD 状态,点击 QGroundControl 左上角 Q 图标,进入“分析工具 → MAVLink 控制台”。这个控制台连接的是 PX4 的 NuttShell,可以直接读取飞控系统状态,因此只执行事先确认过的只读命令:

ver all
df
ls /fs/microsd
logger status

实际输出如下:

MAVLink Console 中读取 Pixhawk 6C、PX4 和 microSD 信息

板卡、固件与操作系统

ver all 给出了比 Windows 设备管理器更详细的信息:

项目 实测结果
NuttShell NuttX-11.0.0
硬件架构 PX4_FMU_V6C
硬件类型 V6C000002
硬件版本 / 修订 0x000 / 0x002
PX4 版本 Release 1.16.0(17826047)
PX4 Git 提交 6ea3539157ca358c70a515878b77077af7d4611d
操作系统 NuttX Release 11.0.0(184549631)
OS Git 提交 886acbdb4f061e5c0ce1a76afbcfa7cb7df9849
固件构建时间 2025-08-06 15:07:26
构建变体 default
工具链 GNU GCC 9.3.1 20200408(release)
MCU STM32H7[4|5]xxx,revision V

输出中还包含 PX4GUID。它是设备的唯一标识,没有必要出现在公开文章中,因此只保留在原始截图里,不再转写为正文。

microSD 与日志状态

df 显示 /fs/microsd 已经成功挂载:

项目 实测结果
块大小 32,768 字节
总块数 120,752
已用块数 14
可用块数 120,738
计算容量 3,956,801,536 字节,约 3.69 GiB
挂载点 /fs/microsd

这对应一张标称容量约 4 GB 的 microSD。ls /fs/microsd 能够正常列出 datamanlog/parameters_backup.bsonuavcan.db/ 等内容,进一步证明存储卡不仅存在,而且可以被 PX4 的文件系统访问。

目录中还存在 param_import_fail.bsonparam_import_fail.txt。它们表明过去某次启动或参数导入曾留下失败记录,但仅凭文件名不能判断具体原因;当前 PX4 已正常启动并导出了完整参数,因此先保留原文件,后续只读查看文本内容,不直接删除。

logger status 的结果是:

Running in mode: all
Number of subscriptions: 161 (5152 bytes)
Not logging

这表示日志模块正在运行并已经订阅数据,但当前没有开始写飞行日志。飞控尚未解锁、也没有开始飞行时出现 Not logging 是正常状态。

MAVLink Console 权限很高。当前阶段不执行 param setcommander armreboot 或会写入存储卡的压力测试命令,只把它用作只读观察窗口。

本阶段检查清单

  • [x] 安装并正常启动 QGroundControl 5.0.8。
  • [x] Windows 通过 USB 识别 Pixhawk 6C,并分配 COM4。
  • [x] QGroundControl 自动连接并成功读取参数。
  • [x] 记录 PX4 Pro 1.16.0、系统 ID 1 和 Generic Quadcopter X。
  • [x] 明确首次“车辆信息”弹窗不会刷写固件。
  • [x] 导出并保存飞控的 1,100 项原始参数,并建立第二份校验一致的副本。
  • [x] Windows USB 总线将板卡识别为 PX4 FMU v6C.x。
  • [x] 通过 MAVLink Console 确认硬件架构为 PX4_FMU_V6C、MCU 为 STM32H7。
  • [x] 确认约 4 GB microSD 已挂载到 /fs/microsd,日志模块正常运行。
  • [x] 缓慢倾斜和转动飞控,姿态仪与航向显示连续响应。
  • [ ] 逐项解释当前预检告警,不通过关闭安全检查来消除告警。

下一步

下一步先只读查看 param_import_fail.txt 的历史记录,不对存储卡做清理。确认没有当前故障后,再进入传感器与坐标系笔记,理解陀螺仪、加速度计、磁力计分别测量什么,为什么校准时要按指定方向翻转机体。

参考资料:

3d打印 ai辅助设计 algorithms apriltag axis-angle bang-bang blender bode cadquery calibration camera calibration chrome cmake cmakelists cnn colcon conan control cpp cpu d435i data_struct db design-pattern dots economics eigen factory-pattern fcpx fiducial marker figure finance forge fov freecad gazebo gdb git gnu ibus imu interest isaac gym isaac lab isaaclab kdl latent variable latex launch learning-notes legged locomotion legged robotics legged-robot life linux linux-kernel mac math matlab matrix memory mlp money motion-control motor moveit mpc mujoco network ocs2 ode openscad operator optimal algorithm optimal-control perf performance personal-finance pixhawk 6c ppo privileged learning profiling px4 python qgroundcontrol qos quadrotor realsense reinforcement learning representation learning reward tuning rnn robot robotics ros ros2 rtb security shell sim-to-real simulation socket stairs stl stm32 tcp-ip teacher policy thread tools twist ubuntu uml unitree urdf vae valgrind vcxsrv velocity vim web wifi work wsl 中文输入 交叉编译 依赖管理 分支管理 四足机器人 实验诊断 强化学习 机器人 机器人控制 机器人视觉 构建系统 深度学习 深度相机 点云 版本控制 神经网络 自主回充 视觉定位 训练曲线 输入法 配置类 飞控
知识共享许可协议