控制系统:“神经中枢”——飞行控制器(Pixhawk)¶
学习目标
理解飞行控制器在无人机系统中的核心作用
掌握Pixhawk飞控的硬件架构与内部组成
了解开源飞控与闭源飞控的区别
认识飞控的实时操作系统
在人体中,神经中枢位于脊髓和脑干,负责协调各种反射活动,维持身体的基本姿态平衡。当你站立时,即使不刻意控制,神经中枢也会自动调节肌肉张力,保持身体直立。飞行控制器(Flight Controller,简称”飞控”)在无人机中正是扮演着”神经中枢”的角色:它实时读取IMU等传感器数据,通过控制算法计算出电机转速指令,使无人机保持稳定的飞行姿态。
为什么需要飞行控制器?¶
多旋翼的本质:不稳定系统¶
与固定翼飞机不同,多旋翼无人机是一个本质不稳定的系统。如果没有主动控制,四旋翼会在几百毫秒内失去平衡并坠落。这是因为:
静态不稳定:多旋翼没有固定翼的气动稳定性,任何姿态偏差都会持续放大
强耦合性:姿态的改变直接影响位置,位置的控制依赖姿态调节
高频干扰:气流扰动、电机振动等因素持续影响飞行稳定性
因此,多旋翼必须依靠飞控进行连续、高频的主动控制。典型的飞控控制频率为250-1000Hz,即每秒执行250-1000次控制计算。
飞控的核心任务¶
飞控的核心任务可以概括为”感知-计算-执行”的闭环控制:
感知:通过板载传感器(IMU、气压计、磁力计)获取飞行器当前状态
其中 \(\phi, \theta, \psi\) 分别是横滚角、俯仰角、偏航角,\(p, q, r\) 是对应的角速度,\(a_x, a_y, a_z\) 是三轴加速度。
计算:根据期望状态和当前状态的偏差,通过控制算法(如PID)计算控制量
其中 \(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 |
气压高度计算公式:
其中 \(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采用以下隔振措施:
软件滤波:低通滤波器滤除高频噪声
硬件隔振:IMU安装在隔振海绵上
传感器分区:不同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 |
开源飞控的优势¶
完全可控:源代码公开,可以理解每一行控制逻辑
深度定制:可以修改控制算法、添加新功能
学术研究:适合论文发表,便于算法对比
成本优势:多厂商竞争,价格透明
社区支持:全球开发者社区,问题易于解决
闭源飞控的优势¶
开箱即用:经过充分测试,稳定性高
技术支持:官方技术支持,响应及时
集成度高:与配套设备(图传、云台)无缝配合
调参简单:参数经过优化,调试工作量小
商业可靠:适合商业产品快速落地
选择建议¶
应用场景 |
推荐选择 |
原因 |
|---|---|---|
科研教学 |
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的关键能力
优先级抢占调度:高优先级任务可以抢占低优先级任务
确定性中断延迟:中断响应时间可预测
POSIX兼容:便于移植Linux应用
文件系统支持:支持FAT、SD卡等,用于日志存储
网络协议栈:支持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的接口¶
目标:熟悉飞控板上各接口的位置和功能
步骤:
观察Pixhawk 6C飞控板,找到以下接口:
接口名称 |
位置 |
连接设备 |
|---|---|---|
USB |
_______ |
电脑(配置/调试) |
TELEM1 |
_______ |
数传模块 |
TELEM2 |
_______ |
机载计算机 |
GPS |
_______ |
GPS模块 |
POWER1 |
_______ |
电源模块 |
RC IN |
_______ |
遥控器接收机 |
MAIN OUT 1-8 |
_______ |
电机/电调 |
记录每个接口的线序定义(参考官方文档)
实践2:连接地面站软件¶
目标:通过QGroundControl连接飞控,查看硬件信息
步骤:
下载并安装QGroundControl
# Ubuntu下安装
sudo usermod -a -G dialout $USER
# 下载AppImage并运行
chmod +x QGroundControl.AppImage
./QGroundControl.AppImage
用USB线连接Pixhawk到电脑
在QGroundControl中查看以下信息:
信息项 |
查看路径 |
您的飞控值 |
|---|---|---|
固件版本 |
设置 → 固件 |
_______ |
硬件版本 |
设置 → 机架 |
_______ |
IMU状态 |
设置 → 传感器 |
_______ |
电池电压 |
首页 |
_______ |
实践3:传感器数据查看¶
目标:实时查看飞控传感器数据
步骤:
在QGroundControl中,进入”分析工具 → MAVLink检查器”
观察以下传感器数据:
消息类型 |
数据内容 |
更新频率 |
|---|---|---|
ATTITUDE |
姿态角(roll, pitch, yaw) |
_______ Hz |
RAW_IMU |
原始IMU数据 |
_______ Hz |
SCALED_PRESSURE |
气压/温度 |
_______ Hz |
轻轻倾斜飞控板,观察姿态角的变化
实践4:了解仿真中的飞控模拟¶
目标:理解Gazebo仿真中飞控是如何被模拟的
步骤:
启动仿真环境
roslaunch prometheus_gazebo sitl_indoor_1uav_P450.launch
在仿真中,PX4 SITL(Software In The Loop)模拟了真实飞控的行为
# 查看SITL进程
ps aux | grep px4
理解SITL的工作原理:
┌─────────────────┐ UDP ┌─────────────────┐
│ Gazebo仿真 │ ←─────────→ │ PX4 SITL │
│ (物理模拟) │ 传感器数据 │ (飞控软件) │
│ │ 控制指令 │ │
└─────────────────┘ └─────────────────┘
查看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章详述)
练习题¶
基础练习¶
概念辨析:请说明飞控使用MCU而非高性能SoC的原因。
硬件识别:Pixhawk 6C的主处理器是什么型号?内置了几个IMU?
接口理解:飞控的TELEM2接口通常用于连接什么设备?使用什么通信协议?
进阶练习¶
对比分析:列举3条Pixhawk开源飞控相比大疆闭源飞控的优势和劣势。
系统设计:如果你需要设计一个高可靠性的工业级无人机,会选择Pixhawk 6C还是6X?请说明理由。
操作系统理解:为什么飞控需要使用实时操作系统(RTOS)?通用Linux系统为什么不适合直接用于飞控?
思考题¶
冗余设计:Pixhawk 6X采用三IMU冗余设计,请分析这种设计如何提高系统可靠性?三个IMU的数据如何融合使用?
硬件选型:某项目需要在室内环境(无GPS)实现无人机自主飞行,从硬件角度,飞控需要支持哪些外部传感器接口?