跳到主要内容

PX4

PX4飞控架构详解

PX4(Pixhawk Autopilot)是一款开源的无人机飞控系统,广泛应用于多旋翼、固定翼、垂直起降(VTOL)等无人机平台。其架构设计遵循模块化、实时性和可扩展性原则,支持从消费级到工业级的多种应用场景。以下从架构分层、核心组件、数据流程等方面详细解析:

一、整体架构概述

PX4 采用分层架构设计,将系统功能划分为不同层次,各层通过标准化接口交互,确保模块解耦和可复用性。核心架构分为:

  1. 硬件抽象层(HAL)
  2. 中间件层(Middleware)
  3. 应用层(Applications)
  4. 外围工具与接口

二、核心架构组件解析

1. 硬件抽象层(Hardware Abstraction Layer, HAL)

  • 功能:屏蔽底层硬件差异,为上层提供统一接口,支持不同硬件平台(如 Pixhawk 系列、Holybro Kakute 等)。
  • 关键模块
    • 传感器驱动:支持陀螺仪、加速度计、磁力计、气压计等惯性测量单元(IMU),以及 GPS、视觉传感器等。
    • 执行器驱动:控制电机、舵机、电调(ESC)等输出设备,支持 PWM、DShot 等通信协议。
    • 通信接口:UART、I2C、SPI、CAN 等硬件通信协议的抽象接口。
    • 电源管理:电池电压监测、电源状态管理。

2. 中间件层(Middleware)

中间件层是 PX4 架构的核心,负责实时任务调度、数据处理和模块间通信,包含以下关键组件:

(1)实时操作系统(RTOS)
  • 基于NuttX RTOS(或 Zephyr RTOS),提供任务调度、内存管理、中断处理等实时性支持。
  • 支持多线程并行处理(如传感器读取、控制算法、通信任务分离),确保高优先级任务(如姿态控制)的实时响应。
(2)数据分发与通信(uORB)
  • uORB(微对象请求代理):PX4 自研的轻量级消息总线,用于模块间数据共享。
  • 特点
    • 发布 / 订阅模式:模块可发布数据(如传感器读数)或订阅数据(如控制指令),解耦模块间依赖。
    • 实时性保障:消息队列优先级管理,确保关键数据(如姿态信息)优先传输。
    • 典型消息示例:sensor_combined(传感器融合数据)、vehicle_attitude(飞行器姿态)、actuator_controls(执行器控制指令)。
(3)控制算法核心
  • 姿态控制模块(Attitude Control)
    • 基于 PID、互补滤波等算法,处理 IMU 数据,计算飞行器姿态(滚转、俯仰、偏航),并输出电机 / 舵机控制量。
  • 位置与导航控制(Position & Navigation)
    • 融合 GPS、视觉定位(如光流)、气压计数据,实现定点悬停、轨迹跟踪等功能。
  • 路径规划与任务管理(Mission & Path Planning)
    • 支持通过 MAVLink 协议接收任务指令(如航点飞行),或本地执行预设任务脚本(.mission 文件)。
(4)硬件接口与驱动中间件
  • 封装底层硬件驱动,向上层提供标准化接口(如device drivers模块管理传感器设备)。

3. 应用层(Applications)

应用层包含用户可直接调用的功能模块和命令行工具,实现具体飞行模式和任务:

  • 飞行模式
    • 手动模式(Manual)、稳定模式(Stabilized)、定点模式(Position)、自动模式(Auto,航点飞行)、返航模式(Return to Launch, RTL)等。
  • 实用工具
    • commander:接收并执行飞行指令(如起飞、降落)。
    • mavlink:处理 MAVLink 通信协议,与地面站(如 QGroundControl)交互。
    • px4ctl:系统配置与控制命令(如参数调整、日志管理)。
  • 扩展应用
    • 支持自定义应用开发(如视觉避障、农业喷洒控制),通过 CMake 编译集成到系统中。

4. 外围工具与接口

  • 地面站接口:通过 MAVLink 协议与 QGroundControl、Mission Planner 等地面站软件通信,实现参数配置、实时监控和任务规划。
  • 开发工具链
    • 基于 GCC 的交叉编译工具,支持在 Linux、Windows、macOS 上开发。
    • 仿真环境:通过 Gazebo、JSBSim 等工具实现软件在环(SIL)和硬件在环(HIL)仿真测试。
  • 通信协议:支持 MAVLink、ROS/ROS 2、UDP/TCP 等协议,便于与其他系统集成(如机器人操作系统、云平台)。

三、数据流程与控制环路

1. 传感器数据处理流程

  1. 数据采集:HAL 层驱动读取传感器原始数据(如 IMU 的角速度、加速度)。
  2. 预处理:通过滤波算法(如互补滤波、卡尔曼滤波)去除噪声,校准传感器偏差。
  3. 数据发布:通过 uORB 发布到消息总线,供姿态控制模块订阅。

2. 控制环路(以姿态控制为例)

  1. 外环(位置 / 速度控制):根据目标位置(如 GPS 航点)计算期望姿态(角度)。
  2. 内环(姿态控制):对比当前姿态与期望姿态,通过 PID 算法生成电机控制量。
  3. 输出执行:控制量通过 HAL 层驱动发送至电调 / 舵机,调整飞行器姿态。

3. 任务与通信流程

  • 地面站通过 MAVLink 发送任务指令(如 “前往坐标 (10,20,30)”),经mavlink模块解析后,由commander模块转换为飞行控制指令,通过控制环路执行。

四、架构优势与设计原则

  1. 模块化设计:各功能模块独立开发、测试,便于维护和扩展(如添加新传感器或飞行模式)。
  2. 实时性保障:基于 RTOS 和 uORB 消息优先级机制,确保控制环路(通常 100-1000Hz)的实时响应。
  3. 跨平台兼容性:通过 HAL 层抽象,支持多种硬件平台(如 Pixhawk 2、FMUv5)和 RTOS(NuttX/Zephyr)。
  4. 开源生态:依托 PX4 开源社区,支持全球开发者贡献代码,集成先进算法(如视觉 SLAM、自主避障)。

五、典型应用场景

  • 消费级无人机:如大疆开源平台、穿越机控制。
  • 工业级应用:农业植保、物流配送、电力巡检、测绘航拍。
  • 科研与教育:高校无人机研究、自动驾驶算法验证(如 MIT 的 AeroAstro 实验室项目)。
  • 特殊场景:军事侦察、灾后救援、地质勘探等对可靠性要求高的领域。

六、开发与扩展方式

  • 源码结构:PX4 源码基于 CMake 组织,目录结构清晰(如src/lib为库文件,src/modules为功能模块)。
  • 自定义开发:通过创建新模块(如src/modules/my_application)实现特定功能,利用 uORB 接口与其他模块交互。
  • 仿真测试:使用 Gazebo 模拟飞行器和环境,无需硬件即可验证算法(如make px4_sitl gazebo启动仿真)。

总结

PX4 飞控架构通过分层设计、模块化组件和实时通信机制,实现了无人机控制的高效性与灵活性。从底层硬件驱动到上层应用功能,各层通过标准化接口协同工作,既满足了工业级无人机的可靠性需求,又为开发者提供了开放的扩展空间。无论是消费级无人机的快速开发,还是复杂场景下的自主控制,PX4 架构都展现了强大的适应性和可扩展性。

Pixhawk、FMU、PX4 、FC概念的区别

在无人机飞控领域,Pixhawk、FMU、PX4、FC 是几个紧密相关但含义不同的概念,它们分别对应硬件、核心模块、软件系统和功能类别。以下是具体区别和联系的详细说明:

1. FC(Flight Controller,飞控)

  • 定义:FC 是 “飞控” 的统称,指负责无人机姿态控制、导航、任务执行等核心功能的硬件设备,是无人机的 “大脑”。
  • 作用:通过传感器(陀螺仪、加速度计、GPS 等)获取无人机状态,计算控制指令,驱动电机或舵机调整飞行姿态,同时处理地面站指令、执行自主任务等。
  • 范围:所有无人机的飞行控制硬件都可称为 FC,例如 Pixhawk、APM(ArduPilot Mega)、大疆的 N3/M6 等,都属于 FC 的具体产品。

2. Pixhawk

  • 定义:Pixhawk 是具体的飞控硬件系列,由开源无人机社区(如 PX4 项目)推动开发,最初基于 3DRobotics 公司的设计,现已成为开源飞控的标杆。
  • 特点
    • 开源硬件:设计图纸和规格公开,支持二次开发。
    • 兼容性强:适配多种无人机类型(多旋翼、固定翼、直升机等)。
    • 迭代版本多:如 Pixhawk 1(FMUv2)、Pixhawk 2.1(FMUv3)、Pixhawk 4(FMUv5)等,性能随版本提升(算力、传感器精度等)。
  • 与 FC 的关系:Pixhawk 是 FC 的一种具体实现,是最知名的开源 FC 产品之一。

3. FMU(Flight Management Unit,飞行管理单元)

  • 定义:FMU 是 Pixhawk 硬件中的核心计算模块,相当于飞控的 “主芯片”,负责运行飞行控制算法、处理传感器数据和执行控制逻辑。
  • 组成:通常包含微处理器(如 STM32 系列)、内存、电源管理电路等,是 Pixhawk 硬件的核心组件。
  • 版本对应:不同 Pixhawk 型号对应不同版本的 FMU,例如:
    • Pixhawk 1 搭载 FMUv2
    • Pixhawk 4 搭载 FMUv5
    • 版本升级通常意味着更强的算力、更多接口和更好的稳定性。
  • 与 Pixhawk 的关系:FMU 是 Pixhawk 硬件的一部分,是其实现飞行控制功能的核心单元。

4. PX4

  • 定义:PX4 是开源飞行控制软件系统,运行在飞控硬件(如 Pixhawk)上,负责实现无人机的自主飞行逻辑(姿态控制、路径规划、任务调度等)。
  • 功能
    • 提供底层控制算法(如 PID 控制、LQR 控制)。
    • 支持多种传感器和外设(GPS、气压计、避障雷达等)。
    • 兼容地面站软件(如 QGroundControl),支持手动 / 自动飞行模式切换。
  • 与硬件的关系:PX4 是软件,需运行在特定硬件上,最典型的适配硬件就是 Pixhawk,但也可移植到其他 FC(如大疆 N3 部分支持 PX4)。
  • 与 ArduPilot 的区别:PX4 和 ArduPilot 是两大主流开源飞控软件,PX4 更侧重模块化设计和实时性,ArduPilot 则以功能丰富、易用性强著称,两者均可在 Pixhawk 上运行。

总结:四者的关系

概念类型核心作用举例 / 对应关系
FC功能类别无人机的 “大脑”(硬件统称)Pixhawk、大疆 N3 等都是 FC
Pixhawk硬件产品开源飞控的具体型号属于 FC 的一种,搭载 FMU 模块
FMU硬件模块Pixhawk 的核心计算单元是 Pixhawk 的一部分(如 FMUv5)
PX4软件系统运行在 FC 上的飞行控制算法最适配 Pixhawk,也可用于其他 FC

简单来说:FC 是飞控的统称,Pixhawk 是一种开源 FC 硬件,FMU 是 Pixhawk 的核心模块,PX4 是运行在 Pixhawk 等 FC 上的控制软件

PX4 中的Offboard 模式和Onboard 模式介绍

PX4 中的Offboard 模式Onboard 模式(通常指自主模式,如 Auto、Mission 等,需注意 “Onboard” 并非 PX4 官方定义的标准模式名称,更多是相对 Offboard 的概念)是两种不同的控制方式,核心区别在于控制指令的来源自主性程度,具体如下:

1. Offboard 模式(外部控制模式)

Offboard 模式是 PX4 专门为外部设备(如地面站、机载计算机、ROS 节点等)控制无人机设计的模式。在该模式下,无人机的核心控制指令(如位置、速度、姿态、油门等)完全由外部系统通过特定协议发送给飞控,飞控仅负责执行指令并提供基础的稳定性控制(如保持姿态平稳)。

关键特点

  • 控制源在外部:指令必须由外部设备(如机载电脑运行的算法、地面站软件)通过 Mavlink 协议实时发送(通常频率≥2Hz),否则飞控会在超时后自动切换到安全模式(如 Altitude 或 Position 模式),防止失控。
  • 灵活性高:适合自定义控制逻辑,例如科研中实现轨迹跟踪、避障算法、SLAM 导航等,用户可通过编程生成复杂运动指令。
  • 依赖外部系统:外部设备故障或通信中断会直接影响无人机安全,因此通常需要冗余设计或紧急切换机制。
  • 典型应用
    • 基于 ROS 的自主导航算法测试。
    • 地面站手动发送自定义轨迹点。
    • 机载计算机通过视觉传感器实现自主避障。

2. Onboard 模式(自主模式,如 Auto/Mission)

PX4 的 “Onboard 模式” 更多是指飞控自主决策并生成控制指令的模式,官方标准模式中最典型的是Auto 模式(任务模式),此外还包括 Mission、Hold、Return 等。在这类模式下,控制逻辑和指令生成完全在飞控内部完成,无需外部干预。

关键特点

  • 控制源在飞控内部:飞控根据预定义任务(如航点列表)、传感器数据(如 GPS、IMU)和内置算法(如 PID 控制器)自主生成控制指令,无需外部输入。
  • 自主性强:无需持续外部通信,飞控可独立完成起飞、航点飞行、降落等任务。
  • 标准化流程:依赖飞控内置的成熟控制逻辑,用户只需通过地面站规划任务(如设置航点、高度、速度),无需编写复杂控制算法。
  • 典型应用
    • 按预设航点自动巡检。
    • 执行重复的测绘任务。
    • 紧急情况下自动返航(Return 模式)。

核心区别对比表

维度Offboard 模式Onboard 模式(如 Auto)
控制指令来源外部设备(机载计算机、地面站等)飞控内部(预定义任务、内置算法)
自主性依赖外部系统,飞控仅执行指令完全自主,无需外部干预
通信要求需实时发送指令(≥2Hz),否则触发安全模式无需持续通信,仅需任务规划阶段配置
灵活性高,支持自定义控制算法低,依赖飞控内置逻辑,仅可配置参数 / 航点
典型用途科研、自定义算法测试(如轨迹跟踪、避障)常规任务执行(巡检、测绘、自动返航)
安全机制依赖外部系统的冗余设计飞控内置安全逻辑(如低电量返航、故障保护)

总结

  • 如果你需要用自己的算法控制无人机(如实现特定轨迹、避障逻辑),选择Offboard 模式,需确保外部指令的实时性和可靠性。
  • 如果你只需无人机按预设流程自主完成任务(如按航点飞行),选择Auto 等自主模式,飞控会处理大部分底层控制,更简单稳定。

实际应用中,两种模式可结合使用(如 Offboard 模式执行复杂任务,触发紧急情况时切换到 Auto 模式的返航功能)。

PX4飞行模式详解

PX4 有多种飞行模式,可分为手动模式、辅助模式和自动模式等,以下是具体介绍3:

  • 手动模式
    • Manual(手动模式):控制源是遥控器,杆量转换为期望的姿态。用户通过遥控器直接控制飞行器,飞控不进行位置控制,位置可能会因风而漂移。
    • Acro(特技模式):适合穿越机,新手慎用。遥控器杆量转换为期望的角速率,飞控控制角速度,但不控制姿态,飞行器可做出复杂特技动作,操作难度较高。
  • 辅助模式
    • Altitude(定高模式):油门中立时飞行高度保持不变,适合新手飞行。飞行器可保持高度稳定,但无法保持位置定点,受风影响可能会在水平方向漂移。
    • Position(定点模式):杆量转换为三轴期望的速度,杆量中立时飞行速度为 0,位置不变并保持悬停。该模式下飞行器能抵抗风力,保持在固定位置,是新手较为安全的选择。
  • 自动模式
    • Takeoff(一键起飞):切换到此模式时,飞行器自动起飞,垂直向上飞行到设定高度后保持悬停,不接受摇杆控制。
    • Land(一键降落):飞行器按照参数设定的速度垂直下降,落地后保持参数时间的怠速后进行上锁。
    • Return(一键返航):飞行器先向上飞行到一定高度,然后根据参数进行直线或者原路返航到 HOME 点上方,再以降落模式缓缓下降落地。
    • Mission(任务模式):需先通过地面站进行航点规划并上传到飞机。切换到该模式后,无人机在位置控制环和姿态控制环串级控制下,会按照规划的航点和速度进行飞行。
    • Offboard(离线模式):飞机接收并响应通过 MAVLink 外部传输的控制数据,多作为承接外部控制数据的接口。使用时需要相关的辅助信息进行周期的沟通维护,否则会跳出该模式。