PX4 自动驾驶仪软件
PX4、MAVLink 与 QGroundControl 的协同工作原理
解释 PX4 固件、MAVLink 遥测协议和 QGroundControl 地面站如何在网络中交互的架构指南。
architecture 审查于 8/12/2026
问题定义
集成无人机软件栈的工程师需要了解固件状态、通信协议和地面站如何跨物理网络和仿真网络边界交换遥测、参数配置和任务指令。
步骤({count})
- 映射固件协议接口
检查 PX4 mavlink 模块配置。PX4 内部状态基于 uORB 发布-订阅总线运行。mavlink 模块订阅 uORB 主题(如 vehicle_attitude 或 vehicle_global_position)并将它们序列化为标准 MAVLink 数据包。
- 配置传输与 UDP/串口端口绑定
确认传输端点。SITL 默认设置:UDP 14550 预留给地面控制站 (QGroundControl),UDP 14540 预留给机载 API (MAVSDK/DroneKit),UART/串口用于硬件遥测数传电台。
- 检查协议方言与版本帧格式
验证协议版本协商。PX4 默认使用 MAVLink v2.0 帧格式。确保中间数传链路和地面站不会将数据包降级为缺少数据包签名和扩展 ID 的 MAVLink v1.0。
- 与地面站建立双向会话
启动 QGroundControl。QGroundControl 监听端口 14550。一旦接收到第一个 HEARTBEAT 数据包(消息 ID #0),它会发出请求以获取固件参数列表 (PARAM_REQUEST_LIST) 和任务协议项。
指南
架构概览
PX4 固件将内部 uORB 主题暴露给 MAVLink 模块,后者将遥测和参数流打包并通过 UDP/串口链路发送至 QGroundControl。
判断标准
- QGroundControl 显示实时连接遥测,并在启动后 5 秒内完成参数下载。
- 双向 MAVLink 2 帧通过,控制台中无帧错误或丢包警告。
常见风险
- 在端口 14550 上同时运行多个 SDK 实例或地面站会话会导致套接字绑定失败。
- 使用高频 MAVLink 流重载低带宽串口数传链路 (57600 bps) 会导致缓冲区溢出。
- 在 PX4 固件中添加自定义 uORB 主题但未将其连接到 mavlink_messages.cpp 会阻止无线传输。
检查表({count})
相关技术资源
无人机通信与封送处理库。
跨平台无人机地面站(Android、iOS、Mac OS、Linux、Windows)