PX4 自动驾驶仪是一款开源飞行控制软件栈,专为无人机、探测车、船舶和航天器等自动驾驶飞行器而设计。本文档详细介绍了 PX4 代码库架构及其核心子系统。
什么是 PX4 自动驾驶仪
PX4 自动驾驶仪是一套完整的飞行控制解决方案,提供驱动程序、中间件、控制算法、状态估计和通信协议,以实现各种飞行器类型的自主运行。
主要特点:
- 多平台:支持 NuttX RTOS、Linux 和 macOS
- 多飞行器:支持多旋翼飞行器、固定翼飞机、垂直起降飞机、漫游车、船只和实验车辆类型
- 模块化架构:基于组件的设计,具有明确定义的接口
- 实时能力:专为硬实时飞行控制应用而设计
支持的车辆类型:
车辆类型 | 描述 | 控制方法 |
---|---|---|
多旋翼飞行器 | 多旋翼旋翼机 | 推力矢量位置/姿态控制 |
固定翼 | 传统飞机配置 | 基于能量的控制面 |
垂直起降 | 垂直起降飞机 | 具有模式转换的混合控制 |
罗孚 | 地面车辆 | 差速转向和速度控制 |
实验 | 船只、潜艇、宇宙飞船等 | 特定车辆的控制策略 |
系统架构
PX4 系统采用分层架构,硬件抽象、核心控制逻辑和外部接口之间清晰分离。中央通信主干是 uORB(微对象请求代理)消息总线,它实现了系统组件之间的松散耦合。
高级系统架构

关键子系统
模块组织
PX4 模块组织在src/modules
目录下,每个模块实现飞行控制系统的一个特定方面。构建系统会根据目标配置自动发现并编译模块。
模块类别 | 关键模块 | 目的 |
---|---|---|
状态估计 | ekf2 ,attitude_estimator_q |
传感器融合和车辆状态估计 |
飞行控制 | commander ,,navigator flight_mode_manager |
高级控制逻辑和任务管理 |
车辆控制 | mc_pos_control ,,fw_pos_control vtol_att_control |
特定车辆的控制算法 |
沟通 | mavlink ,rc_update |
外部通信和远程控制 |
模拟 | simulator ,gazebo |
软件在环测试 |
数据流架构

构建系统和配置
PX4 使用基于 CMake 的构建系统,并使用 Kconfig 进行配置管理。这种方法允许跨不同的硬件平台和操作系统进行灵活的目标配置。
构建配置结构

关键构建系统组件:
成分 | 文件位置 | 目的 |
---|---|---|
内核配置 | [配置:1-219] | 主配置定义系统 |
CMake 根目录 | [CMakeLists.txt:102-497] | 主要构建配置和模块编排 |
生成文件 | [Makefile:1-588] | 用户友好的构建目标界面 |
平台配置 | platforms/${PX4_PLATFORM}/cmake/ |
特定于平台的构建设置 |
主板配置 | boards/*/default.px4board |
特定于板的配置 |
系统启动过程

开发和测试基础设施
PX4 包括用于开发、测试和持续集成的综合工具。
开发工具:
- Python集成 :CMakeLists.txt175-188- 构建工具和测试需要 Python 3
- 代码覆盖率 :CMakeLists.txt184-188- Python组件的覆盖率分析
- 外部模块 :CMakeLists.txt211-216- 支持树外开发
- 测试框架 :CMakeLists.txt394-427- CTest 与自定义测试目标集成
模拟支持:
- SITL(软件在环):Gazebo 集成,实现逼真的车辆模拟
- 锁步调度程序 :CMakeLists.txt203-209- 确定性模拟时间
- 硬件在环:支持使用模拟传感器进行硬件测试