控制系统:“神经中枢”——飞行控制器(Pixhawk)

学习目标

  • 理解飞行控制器在无人机系统中的核心作用

  • 掌握Pixhawk飞控的硬件架构与内部组成

  • 了解开源飞控与闭源飞控的区别

  • 认识飞控的实时操作系统

在人体中,神经中枢位于脊髓和脑干,负责协调各种反射活动,维持身体的基本姿态平衡。当你站立时,即使不刻意控制,神经中枢也会自动调节肌肉张力,保持身体直立。飞行控制器(Flight Controller,简称”飞控”)在无人机中正是扮演着”神经中枢”的角色:它实时读取IMU等传感器数据,通过控制算法计算出电机转速指令,使无人机保持稳定的飞行姿态。

为什么需要飞行控制器?

多旋翼的本质:不稳定系统

与固定翼飞机不同,多旋翼无人机是一个本质不稳定的系统。如果没有主动控制,四旋翼会在几百毫秒内失去平衡并坠落。这是因为:

  1. 静态不稳定:多旋翼没有固定翼的气动稳定性,任何姿态偏差都会持续放大

  2. 强耦合性:姿态的改变直接影响位置,位置的控制依赖姿态调节

  3. 高频干扰:气流扰动、电机振动等因素持续影响飞行稳定性

因此,多旋翼必须依靠飞控进行连续、高频的主动控制。典型的飞控控制频率为250-1000Hz,即每秒执行250-1000次控制计算。

飞控的核心任务

飞控的核心任务可以概括为”感知-计算-执行”的闭环控制:

感知:通过板载传感器(IMU、气压计、磁力计)获取飞行器当前状态

(19)\[\text{状态向量} = \begin{bmatrix} \phi & \theta & \psi & p & q & r & a_x & a_y & a_z \end{bmatrix}^\top.\]

其中 \(\phi, \theta, \psi\) 分别是横滚角、俯仰角、偏航角,\(p, q, r\) 是对应的角速度,\(a_x, a_y, a_z\) 是三轴加速度。

计算:根据期望状态和当前状态的偏差,通过控制算法(如PID)计算控制量

(20)\[u = K_p \cdot e + K_i \cdot \int e \, dt + K_d \cdot \frac{de}{dt}.\]

其中 \(e\) 是误差,\(K_p, K_i, K_d\) 是PID控制参数。

执行:将控制量转换为电机PWM信号,驱动电机调整转速

期望状态 → 误差计算 → 控制器 → 控制分配 → PWM输出 → 电机转速 → 实际状态
    ↑                                                           │
    └──────────────────── 状态估计 ←── 传感器 ←────────────────────┘

飞控与机载计算机的职责边界

理解飞控与机载计算机的分工,是系统设计的关键。

硬件层面的差异

维度

飞行控制器(Pixhawk)

机载计算机(Jetson等)

处理器类型

MCU(微控制器)

SoC(片上系统)

典型芯片

STM32H743 (Cortex-M7)

Jetson Orin (Cortex-A78 + GPU)

主频

480 MHz

2.0 GHz+

内存

1 MB SRAM

8-64 GB DDR

操作系统

RTOS(NuttX)

通用OS(Ubuntu)

功耗

2-3 W

10-60 W

功能层面的分工

维度

飞行控制器

机载计算机

核心任务

姿态稳定、底层控制

感知、规划、决策

控制频率

250-1000 Hz

10-100 Hz

实时性要求

硬实时(μs级)

软实时(ms级)

典型算法

PID控制、状态估计、传感器融合

SLAM、目标检测、路径规划

可靠性要求

极高(飞行安全)

高(任务完成)

通信与协作

飞控与机载计算机通过MAVLink协议进行通信,形成”决策层+执行层”的分层架构:

┌─────────────────────────────────────────────────────────────┐
│                    机载计算机 (决策层)                        │
│  ┌──────────┐  ┌──────────┐  ┌──────────┐  ┌──────────┐    │
│  │ 感知算法  │  │ 定位算法  │  │ 规划算法  │  │ 任务管理  │    │
│  └──────────┘  └──────────┘  └──────────┘  └──────────┘    │
│                              ↓                               │
│                    位置/速度/姿态 期望值                       │
└──────────────────────────────┬───────────────────────────────┘
                               │ MAVLink (UART 921600bps)
┌──────────────────────────────┼───────────────────────────────┐
│                              ↓                               │
│  ┌──────────┐  ┌──────────┐  ┌──────────┐  ┌──────────┐    │
│  │ 状态估计  │  │ 姿态控制  │  │ 位置控制  │  │ 电机混控  │    │
│  └──────────┘  └──────────┘  └──────────┘  └──────────┘    │
│                    飞行控制器 (执行层)                        │
└─────────────────────────────────────────────────────────────┘


**工程理解**

飞控像”脊髓”,负责快速的反射控制;机载计算机像”大脑”,负责高级的认知决策。这种分层设计既保证了底层控制的实时性和可靠性,又为上层智能应用提供了灵活性。

Pixhawk飞控硬件架构详解

Pixhawk是目前最主流的开源飞控硬件平台,遵循Pixhawk标准(FMU标准),由Holybro、CUAV等多家厂商生产。本节以Pixhawk 6C为例,详细介绍飞控的内部硬件组成。

整体架构

Pixhawk飞控的硬件架构可以分为以下几个核心模块:

┌─────────────────────────────────────────────────────────────┐
│                      Pixhawk 飞控板                          │
│                                                             │
│  ┌─────────────────────────────────────────────────────┐   │
│  │              主控制器 (FMU - Flight Management Unit)  │   │
│  │  ┌─────────────┐                                     │   │
│  │  │ STM32H743   │  ← 主处理器 (Cortex-M7 @ 480MHz)    │   │
│  │  │ 2MB Flash   │                                     │   │
│  │  │ 1MB SRAM    │                                     │   │
│  │  └─────────────┘                                     │   │
│  └─────────────────────────────────────────────────────┘   │
│                                                             │
│  ┌─────────────────────────────────────────────────────┐   │
│  │                    传感器模块                         │   │
│  │  ┌───────────┐  ┌───────────┐  ┌───────────┐       │   │
│  │  │ IMU #1    │  │ IMU #2    │  │ 气压计     │       │   │
│  │  │ICM-42688-P│  │ BMI055    │  │ MS5611    │       │   │
│  │  └───────────┘  └───────────┘  └───────────┘       │   │
│  └─────────────────────────────────────────────────────┘   │
│                                                             │
│  ┌─────────────────────────────────────────────────────┐   │
│  │                    I/O 协处理器                       │   │
│  │  ┌─────────────┐                                     │   │
│  │  │ STM32F103   │  ← 负责PWM输出、RC输入              │   │
│  │  └─────────────┘                                     │   │
│  └─────────────────────────────────────────────────────┘   │
│                                                             │
│  ┌─────────────────────────────────────────────────────┐   │
│  │                    电源管理模块                       │   │
│  │  电压监测 │ 电流监测 │ 多路稳压 │ 冗余供电            │   │
│  └─────────────────────────────────────────────────────┘   │
│                                                             │
└─────────────────────────────────────────────────────────────┘

主控制器(FMU)

FMU(Flight Management Unit)是飞控的核心,负责运行飞控固件和控制算法。

Pixhawk 6C主控规格

参数

规格

说明

主芯片

STM32H743VIH6

意法半导体H7系列

内核

ARM Cortex-M7

高性能32位处理器

主频

480 MHz

支持浮点运算(FPU)

Flash

2 MB

存储固件程序

SRAM

1 MB

运行时数据存储

协处理器

STM32F103

负责I/O处理

为什么选择MCU而非更强大的处理器?

飞控需要的是确定性实时性,而非绝对算力。MCU具有固定的中断延迟、无操作系统调度开销,可以保证控制循环的稳定执行。

板载传感器

传感器是飞控感知飞行状态的”眼睛”,Pixhawk 6C集成了多种传感器实现冗余设计。

IMU(惯性测量单元)

传感器

型号

功能

特点

主IMU

ICM-42688-P

6轴(3轴加速度计+3轴陀螺仪)

低噪声、高精度

冗余IMU

BMI055

6轴(3轴加速度计+3轴陀螺仪)

独立总线,故障隔离

IMU的关键参数:

参数

ICM-42688-P

说明

陀螺仪量程

±2000 °/s

可测量的最大角速度

加速度计量程

±16 g

可测量的最大加速度

陀螺仪噪声密度

2.8 mdps/√Hz

越低越好

采样率

最高32 kHz

数据更新频率

气压计

传感器

型号

功能

精度

气压计

MS5611

气压高度测量

相对高度精度约10cm

气压高度计算公式:

(21)\[h = \frac{T_0}{L} \left[ 1 - \left( \frac{P}{P_0} \right)^{\frac{R \cdot L}{g \cdot M}} \right].\]

其中 \(P\) 是测量气压,\(P_0\) 是海平面标准气压,\(T_0\) 是标准温度,\(L\) 是温度递减率。

磁力计(外置)

Pixhawk 6C的磁力计通常外置于GPS模块中,通过I2C连接。

传感器

功能

说明

IST8310/QMC5883L

测量地磁场,提供航向参考

需远离干扰源

接口资源

Pixhawk 6C提供丰富的接口,支持各种外设扩展。

通信接口

接口类型

数量

用途

协议

UART/TELEM

3

数传、机载计算机、GPS

MAVLink、NMEA

I2C

2

外部传感器(罗盘、测距等)

I2C

CAN

2

CAN总线设备(DroneCAN电调等)

DroneCAN

SPI

1

高速传感器扩展

SPI

USB

1

固件烧录、参数配置

USB 2.0

控制接口

接口类型

数量

用途

说明

PWM输出

8 (主) + 8 (辅)

电机/舵机控制

支持400Hz刷新率

RC输入

1

遥控器接收机

支持SBUS、PPM、DSM

ADC

2

电压/电流监测

用于电池状态监控

接口布局示意

┌─────────────────────────────────────────────────────────────┐
│                     Pixhawk 6C 接口布局                      │
│                                                             │
│  [USB]  [TELEM1]  [TELEM2]  [GPS]  [I2C]  [CAN1]  [CAN2]   │
│                                                             │
│  ┌───────────────────────────────────────────────────────┐ │
│  │                      主控板                            │ │
│  │                                                        │ │
│  │   LED指示灯    蜂鸣器接口    安全开关接口              │ │
│  │                                                        │ │
│  └───────────────────────────────────────────────────────┘ │
│                                                             │
│  [POWER1]  [POWER2]  [RC IN]  [PWM MAIN 1-8]  [AUX 1-8]    │
│                                                             │
└─────────────────────────────────────────────────────────────┘

电源管理

飞控的电源系统设计直接影响飞行安全,Pixhawk支持多路冗余供电。

供电方案

电源输入

电压范围

优先级

说明

POWER1

4.9V - 5.5V

1

主电源(电源模块)

POWER2

4.9V - 5.5V

2

备用电源

USB

5V

3

仅用于配置,不建议飞行

电源模块功能

电源模块(如PM02/PM06)不仅提供稳压输出,还负责电池状态监测:

  • 电池电压测量(通过ADC)

  • 电池电流测量(通过霍尔传感器)

  • 功率计算与剩余电量估计

隔振设计

IMU对振动非常敏感,高频振动会导致姿态估计误差。Pixhawk采用以下隔振措施:

  1. 软件滤波:低通滤波器滤除高频噪声

  2. 硬件隔振:IMU安装在隔振海绵上

  3. 传感器分区:不同IMU在独立的电源和总线上,避免相互干扰

开源飞控 vs 闭源飞控:Pixhawk与大疆的对比

市面上的飞控可分为开源和闭源两大阵营。理解它们的区别,有助于根据项目需求做出合理选择。

代表产品对比

特性

Pixhawk(开源)

大疆A3/N3(闭源)

源代码

完全开源(PX4/ArduPilot)

闭源

硬件设计

开放硬件标准

专有设计

固件定制

可深度定制

仅支持参数调整

SDK支持

MAVROS/MAVSDK

OSDK(有限开放)

生态系统

社区驱动,多厂商

大疆生态闭环

稳定性

需要调试

开箱即用

价格

较低($100-300)

较高($500-2000+)

硬件规格对比

参数

Pixhawk 6C

大疆N3

大疆A3 Pro

处理器

STM32H743

未公开

未公开

IMU冗余

双IMU

单IMU

三IMU

气压计冗余

单气压计

单气压计

双气压计

GPS冗余

可扩展双GPS

可扩展双GPS

支持双GPS

RTK支持

第三方RTK

不支持

支持D-RTK

SDK

MAVLink/ROS

OSDK

OSDK

尺寸

84×44×12mm

45.5×32×18mm

70×54.2×21mm

开源飞控的优势

  1. 完全可控:源代码公开,可以理解每一行控制逻辑

  2. 深度定制:可以修改控制算法、添加新功能

  3. 学术研究:适合论文发表,便于算法对比

  4. 成本优势:多厂商竞争,价格透明

  5. 社区支持:全球开发者社区,问题易于解决

闭源飞控的优势

  1. 开箱即用:经过充分测试,稳定性高

  2. 技术支持:官方技术支持,响应及时

  3. 集成度高:与配套设备(图传、云台)无缝配合

  4. 调参简单:参数经过优化,调试工作量小

  5. 商业可靠:适合商业产品快速落地

选择建议

应用场景

推荐选择

原因

科研教学

Pixhawk

代码可见,便于学习和研究

算法开发

Pixhawk

可深度定制控制算法

快速原型

Pixhawk

成本低,迭代快

商业航拍

大疆

稳定可靠,售后有保障

工业巡检

大疆/Pixhawk

根据定制需求选择

竞速穿越

Betaflight飞控

专为FPV优化

飞控的实时操作系统

飞控需要在严格的时间约束下完成传感器读取和控制输出,这要求底层操作系统具有实时性

为什么需要RTOS?

通用操作系统(如Linux)的任务调度是尽力而为的,无法保证任务在确定时间内完成。而飞控要求:

  • 传感器读取周期稳定(如1ms读取一次IMU)

  • 控制输出延迟可预测(从传感器读取到PWM输出<1ms)

  • 关键任务不可被打断

实时操作系统(RTOS, Real-Time Operating System)通过优先级调度确定性中断响应来满足这些需求。

NuttX:Pixhawk的操作系统

Pixhawk系列飞控使用NuttX作为底层操作系统。NuttX是一个开源的实时操作系统,具有以下特点:

基本特性

特性

说明

类型

实时操作系统(RTOS)

许可证

Apache 2.0(开源)

架构支持

ARM Cortex-M、RISC-V等

内存占用

最小配置约10KB

标准兼容

POSIX兼容

NuttX的关键能力

  1. 优先级抢占调度:高优先级任务可以抢占低优先级任务

  2. 确定性中断延迟:中断响应时间可预测

  3. POSIX兼容:便于移植Linux应用

  4. 文件系统支持:支持FAT、SD卡等,用于日志存储

  5. 网络协议栈:支持TCP/IP(用于以太网接口)

任务优先级示例

在飞控固件中,任务按优先级从高到低排列:

优先级

任务

周期

说明

最高

IMU采样

1ms

传感器数据采集

姿态控制

4ms (250Hz)

姿态环控制

位置控制

20ms (50Hz)

位置环控制

MAVLink通信

20ms

与地面站/机载计算机通信

最低

日志记录

100ms

飞行数据记录

其他飞控RTOS

RTOS

使用飞控

特点

NuttX

Pixhawk/PX4

POSIX兼容,功能丰富

ChibiOS

ArduPilot(部分)

轻量级,实时性好

FreeRTOS

部分开源飞控

最流行的开源RTOS

裸机(无OS)

简单飞控

最低延迟,但功能受限

RTOS与通用OS的对比

特性

RTOS (NuttX)

通用OS (Linux)

调度方式

优先级抢占

时间片轮转

中断延迟

μs级,确定

ms级,不确定

内存管理

静态/简单动态

复杂虚拟内存

启动时间

毫秒级

秒级

内存占用

KB级

MB/GB级

适用场景

控制任务

复杂计算任务

第3章预告

飞控固件(如PX4)运行在NuttX之上,实现了传感器驱动、状态估计、控制算法、通信协议等功能。我们将在第3章详细介绍PX4的软件架构和开发方法。

Pixhawk系列型号与选型

Pixhawk标准定义了多个版本(FMUv2至FMUv6),不同版本在处理器、传感器配置上有所差异。

主要型号对比

型号

FMU版本

处理器

IMU数量

特点

推荐场景

Pixhawk 2.4.8

FMUv2

STM32F427

2

经典款,资料丰富

入门学习

Pixhawk 4

FMUv5

STM32F765

2

模块化设计

科研开发

Pixhawk 6C

FMUv6C

STM32H743

2

性价比高

科研教学(推荐)

Pixhawk 6X

FMUv6X

STM32H753

3

三冗余,以太网

商业应用

Cube Orange

自定义

STM32H757

3

高可靠性

工业级应用

Pixhawk 6C vs 6X详细对比

特性

Pixhawk 6C

Pixhawk 6X

处理器

STM32H743

STM32H753

IMU冗余

双IMU

三IMU(三区域隔离)

气压计冗余

单气压计

双气压计

以太网接口

有(高速通信)

隔振设计

基础

高级(独立隔离区域)

IMU温控

有(更精确)

价格

~$150

~$300

适用场景

科研教学

商业/高可靠性需求

选型建议

初学者/教学:Pixhawk 6C - 性价比高,功能完整 - 社区支持好,资料丰富 - 与Prometheus框架完美配合

科研开发:Pixhawk 6C或Pixhawk 6X - 根据可靠性需求选择 - 6X适合需要以太网接口的场景

商业产品:Pixhawk 6X或Cube Orange - 三冗余设计,可靠性高 - 通过更严格的测试验证

动手实践:飞控硬件认知

实践1:认识Pixhawk 6C的接口

目标:熟悉飞控板上各接口的位置和功能

步骤

  1. 观察Pixhawk 6C飞控板,找到以下接口:

接口名称

位置

连接设备

USB

_______

电脑(配置/调试)

TELEM1

_______

数传模块

TELEM2

_______

机载计算机

GPS

_______

GPS模块

POWER1

_______

电源模块

RC IN

_______

遥控器接收机

MAIN OUT 1-8

_______

电机/电调

  1. 记录每个接口的线序定义(参考官方文档)

实践2:连接地面站软件

目标:通过QGroundControl连接飞控,查看硬件信息

步骤

  1. 下载并安装QGroundControl

# Ubuntu下安装
sudo usermod -a -G dialout $USER
# 下载AppImage并运行
chmod +x QGroundControl.AppImage
./QGroundControl.AppImage
  1. 用USB线连接Pixhawk到电脑

  2. 在QGroundControl中查看以下信息:

信息项

查看路径

您的飞控值

固件版本

设置 → 固件

_______

硬件版本

设置 → 机架

_______

IMU状态

设置 → 传感器

_______

电池电压

首页

_______

实践3:传感器数据查看

目标:实时查看飞控传感器数据

步骤

  1. 在QGroundControl中,进入”分析工具 → MAVLink检查器”

  2. 观察以下传感器数据:

消息类型

数据内容

更新频率

ATTITUDE

姿态角(roll, pitch, yaw)

_______ Hz

RAW_IMU

原始IMU数据

_______ Hz

SCALED_PRESSURE

气压/温度

_______ Hz

  1. 轻轻倾斜飞控板,观察姿态角的变化

实践4:了解仿真中的飞控模拟

目标:理解Gazebo仿真中飞控是如何被模拟的

步骤

  1. 启动仿真环境

roslaunch prometheus_gazebo sitl_indoor_1uav_P450.launch
  1. 在仿真中,PX4 SITL(Software In The Loop)模拟了真实飞控的行为

# 查看SITL进程
ps aux | grep px4
  1. 理解SITL的工作原理:

┌─────────────────┐     UDP      ┌─────────────────┐
│   Gazebo仿真     │ ←─────────→ │   PX4 SITL      │
│  (物理模拟)      │   传感器数据   │  (飞控软件)      │
│                 │   控制指令     │                 │
└─────────────────┘              └─────────────────┘
  1. 查看SITL输出的话题

# SITL通过MAVROS与ROS通信
rostopic list | grep mavros

小结

本节介绍了飞行控制器的硬件原理和系统组成。主要知识点包括:

概念理解

  • 飞控是无人机的”神经中枢”,负责高频率的姿态稳定控制

  • 飞控与机载计算机形成”执行层+决策层”的分层架构

  • MCU的确定性和实时性是飞控选择的关键

硬件组成

模块

功能

典型器件

主控制器

运行固件和控制算法

STM32H743

IMU

测量姿态和加速度

ICM-42688-P、BMI055

气压计

测量气压高度

MS5611

电源管理

供电和电池监测

PM02/PM06

I/O协处理器

PWM输出、RC输入

STM32F103

开源vs闭源

维度

Pixhawk(开源)

大疆(闭源)

定制能力

稳定性

需调试

开箱即用

学习价值

一般

成本

操作系统

  • 飞控使用RTOS(如NuttX)保证实时性

  • RTOS提供优先级调度和确定性中断响应

  • 飞控固件(如PX4)运行在RTOS之上(第3章详述)

练习题

基础练习

  1. 概念辨析:请说明飞控使用MCU而非高性能SoC的原因。

  2. 硬件识别:Pixhawk 6C的主处理器是什么型号?内置了几个IMU?

  3. 接口理解:飞控的TELEM2接口通常用于连接什么设备?使用什么通信协议?

进阶练习

  1. 对比分析:列举3条Pixhawk开源飞控相比大疆闭源飞控的优势和劣势。

  2. 系统设计:如果你需要设计一个高可靠性的工业级无人机,会选择Pixhawk 6C还是6X?请说明理由。

  3. 操作系统理解:为什么飞控需要使用实时操作系统(RTOS)?通用Linux系统为什么不适合直接用于飞控?

思考题

  1. 冗余设计:Pixhawk 6X采用三IMU冗余设计,请分析这种设计如何提高系统可靠性?三个IMU的数据如何融合使用?

  2. 硬件选型:某项目需要在室内环境(无GPS)实现无人机自主飞行,从硬件角度,飞控需要支持哪些外部传感器接口?

延伸阅读