.. _sec_control_system:
控制系统:“神经中枢”——飞行控制器(Pixhawk)
===========================================
**学习目标**
- 理解飞行控制器在无人机系统中的核心作用
- 掌握Pixhawk飞控的硬件架构与内部组成
- 了解开源飞控与闭源飞控的区别
- 认识飞控的实时操作系统
在人体中,神经中枢位于脊髓和脑干,负责协调各种反射活动,维持身体的基本姿态平衡。当你站立时,即使不刻意控制,神经中枢也会自动调节肌肉张力,保持身体直立。\ *飞行控制器*\ (Flight
Controller,简称”飞控”)在无人机中正是扮演着”神经中枢”的角色:它实时读取IMU等传感器数据,通过控制算法计算出电机转速指令,使无人机保持稳定的飞行姿态。
.. _sec_why_flight_controller:
为什么需要飞行控制器?
----------------------
多旋翼的本质:不稳定系统
~~~~~~~~~~~~~~~~~~~~~~~~
与固定翼飞机不同,多旋翼无人机是一个\ **本质不稳定**\ 的系统。如果没有主动控制,四旋翼会在几百毫秒内失去平衡并坠落。这是因为:
1. **静态不稳定**\ :多旋翼没有固定翼的气动稳定性,任何姿态偏差都会持续放大
2. **强耦合性**\ :姿态的改变直接影响位置,位置的控制依赖姿态调节
3. **高频干扰**\ :气流扰动、电机振动等因素持续影响飞行稳定性
因此,多旋翼必须依靠飞控进行连续、高频的主动控制。典型的飞控控制频率为250-1000Hz,即每秒执行250-1000次控制计算。
.. _fig_control_loop:
飞控的核心任务
~~~~~~~~~~~~~~
飞控的核心任务可以概括为”感知-计算-执行”的闭环控制:
**感知**\ :通过板载传感器(IMU、气压计、磁力计)获取飞行器当前状态
.. math:: \text{状态向量} = \begin{bmatrix} \phi & \theta & \psi & p & q & r & a_x & a_y & a_z \end{bmatrix}^\top.
:label: eq_state_vector
其中 :math:`\phi, \theta, \psi`
分别是横滚角、俯仰角、偏航角,\ :math:`p, q, r`
是对应的角速度,\ :math:`a_x, a_y, a_z` 是三轴加速度。
**计算**\ :根据期望状态和当前状态的偏差,通过控制算法(如PID)计算控制量
.. math:: u = K_p \cdot e + K_i \cdot \int e \, dt + K_d \cdot \frac{de}{dt}.
:label: eq_pid_control
其中 :math:`e` 是误差,\ :math:`K_p, K_i, K_d` 是PID控制参数。
**执行**\ :将控制量转换为电机PWM信号,驱动电机调整转速
::
期望状态 → 误差计算 → 控制器 → 控制分配 → PWM输出 → 电机转速 → 实际状态
↑ │
└──────────────────── 状态估计 ←── 传感器 ←────────────────────┘
.. _sec_fc_obc_boundary:
飞控与机载计算机的职责边界
--------------------------
理解飞控与机载计算机的分工,是系统设计的关键。
硬件层面的差异
~~~~~~~~~~~~~~
+-----------------------+-----------------------+------------------------+
| 维度 | 飞行控制器(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、目标检测、路径规划 |
+-----------------------+-------------------------------+--------------------------+
| **可靠性要求** | 极高(飞行安全) | 高(任务完成) |
+-----------------------+-------------------------------+--------------------------+
.. _fig_layered_arch:
通信与协作
~~~~~~~~~~
飞控与机载计算机通过\ **MAVLink协议**\ 进行通信,形成”决策层+执行层”的分层架构:
::
┌─────────────────────────────────────────────────────────────┐
│ 机载计算机 (决策层) │
│ ┌──────────┐ ┌──────────┐ ┌──────────┐ ┌──────────┐ │
│ │ 感知算法 │ │ 定位算法 │ │ 规划算法 │ │ 任务管理 │ │
│ └──────────┘ └──────────┘ └──────────┘ └──────────┘ │
│ ↓ │
│ 位置/速度/姿态 期望值 │
└──────────────────────────────┬───────────────────────────────┘
│ MAVLink (UART 921600bps)
┌──────────────────────────────┼───────────────────────────────┐
│ ↓ │
│ ┌──────────┐ ┌──────────┐ ┌──────────┐ ┌──────────┐ │
│ │ 状态估计 │ │ 姿态控制 │ │ 位置控制 │ │ 电机混控 │ │
│ └──────────┘ └──────────┘ └──────────┘ └──────────┘ │
│ 飞行控制器 (执行层) │
└─────────────────────────────────────────────────────────────┘
**工程理解**
飞控像”脊髓”,负责快速的反射控制;机载计算机像”大脑”,负责高级的认知决策。这种分层设计既保证了底层控制的实时性和可靠性,又为上层智能应用提供了灵活性。
.. _sec_pixhawk_hardware:
Pixhawk飞控硬件架构详解
-----------------------
*Pixhawk*\ 是目前最主流的开源飞控硬件平台,遵循Pixhawk标准(FMU标准),由Holybro、CUAV等多家厂商生产。本节以Pixhawk
6C为例,详细介绍飞控的内部硬件组成。
.. _fig_pixhawk_arch:
整体架构
~~~~~~~~
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
====== ====== ============ ==================
气压高度计算公式:
.. math:: h = \frac{T_0}{L} \left[ 1 - \left( \frac{P}{P_0} \right)^{\frac{R \cdot L}{g \cdot M}} \right].
:label: eq_barometer_height
其中 :math:`P` 是测量气压,\ :math:`P_0` 是海平面标准气压,\ :math:`T_0`
是标准温度,\ :math:`L` 是温度递减率。
**磁力计(外置)**
Pixhawk 6C的磁力计通常外置于GPS模块中,通过I2C连接。
================ ======================== ============
传感器 功能 说明
================ ======================== ============
IST8310/QMC5883L 测量地磁场,提供航向参考 需远离干扰源
================ ======================== ============
.. _fig_pixhawk_interface:
接口资源
~~~~~~~~
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在独立的电源和总线上,避免相互干扰
.. _sec_opensource_vs_closesource:
开源飞控 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优化
======== ============== ========================
.. _sec_rtos:
飞控的实时操作系统
------------------
飞控需要在严格的时间约束下完成传感器读取和控制输出,这要求底层操作系统具有\ **实时性**\ 。
为什么需要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的软件架构和开发方法。
.. _sec_pixhawk_selection:
Pixhawk系列型号与选型
---------------------
Pixhawk标准定义了多个版本(FMUv2至FMUv6),不同版本在处理器、传感器配置上有所差异。
主要型号对比
~~~~~~~~~~~~
+------------+---------+-----------+---------+------------------+------------------+
| 型号 | FMU版本 | 处理器 | IMU数量 | 特点 | 推荐场景 |
+============+=========+===========+=========+==================+==================+
| Pixhawk | FMUv2 | STM32F427 | 2 | 经典款,资料丰富 | 入门学习 |
| 2.4.8 | | | | | |
+------------+---------+-----------+---------+------------------+------------------+
| Pixhawk 4 | FMUv5 | STM32F765 | 2 | 模块化设计 | 科研开发 |
+------------+---------+-----------+---------+------------------+------------------+
| Pixhawk 6C | FMUv6C | STM32H743 | 2 | 性价比高 | 科研教学(推荐) |
+------------+---------+-----------+---------+------------------+------------------+
| Pixhawk 6X | FMUv6X | STM32H753 | 3 | 三冗余,以太网 | 商业应用 |
+------------+---------+-----------+---------+------------------+------------------+
| Cube | 自定义 | STM32H757 | 3 | 高可靠性 | 工业级应用 |
| Orange | | | | | |
+------------+---------+-----------+---------+------------------+------------------+
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 - 三冗余设计,可靠性高 -
通过更严格的测试验证
.. _sec_fc_practice:
动手实践:飞控硬件认知
----------------------
实践1:认识Pixhawk 6C的接口
~~~~~~~~~~~~~~~~~~~~~~~~~~~
**目标**\ :熟悉飞控板上各接口的位置和功能
**步骤**\ :
1. 观察Pixhawk 6C飞控板,找到以下接口:
============ ============== =================
接口名称 位置 连接设备
============ ============== =================
USB \_\_\_\_\_\_\_ 电脑(配置/调试)
TELEM1 \_\_\_\_\_\_\_ 数传模块
TELEM2 \_\_\_\_\_\_\_ 机载计算机
GPS \_\_\_\_\_\_\_ GPS模块
POWER1 \_\_\_\_\_\_\_ 电源模块
RC IN \_\_\_\_\_\_\_ 遥控器接收机
MAIN OUT 1-8 \_\_\_\_\_\_\_ 电机/电调
============ ============== =================
2. 记录每个接口的线序定义(参考官方文档)
实践2:连接地面站软件
~~~~~~~~~~~~~~~~~~~~~
**目标**\ :通过QGroundControl连接飞控,查看硬件信息
**步骤**\ :
1. 下载并安装QGroundControl
.. raw:: latex
\diilbookstyleinputcell
.. code:: bash
# Ubuntu下安装
sudo usermod -a -G dialout $USER
# 下载AppImage并运行
chmod +x QGroundControl.AppImage
./QGroundControl.AppImage
2. 用USB线连接Pixhawk到电脑
3. 在QGroundControl中查看以下信息:
======== ============= ==============
信息项 查看路径 您的飞控值
======== ============= ==============
固件版本 设置 → 固件 \_\_\_\_\_\_\_
硬件版本 设置 → 机架 \_\_\_\_\_\_\_
IMU状态 设置 → 传感器 \_\_\_\_\_\_\_
电池电压 首页 \_\_\_\_\_\_\_
======== ============= ==============
实践3:传感器数据查看
~~~~~~~~~~~~~~~~~~~~~
**目标**\ :实时查看飞控传感器数据
**步骤**\ :
1. 在QGroundControl中,进入”分析工具 → MAVLink检查器”
2. 观察以下传感器数据:
=============== ======================== =================
消息类型 数据内容 更新频率
=============== ======================== =================
ATTITUDE 姿态角(roll, pitch, yaw) \_\_\_\_\_\_\_ Hz
RAW_IMU 原始IMU数据 \_\_\_\_\_\_\_ Hz
SCALED_PRESSURE 气压/温度 \_\_\_\_\_\_\_ Hz
=============== ======================== =================
3. 轻轻倾斜飞控板,观察姿态角的变化
.. _fig_sitl_arch:
实践4:了解仿真中的飞控模拟
~~~~~~~~~~~~~~~~~~~~~~~~~~~
**目标**\ :理解Gazebo仿真中飞控是如何被模拟的
**步骤**\ :
1. 启动仿真环境
.. raw:: latex
\diilbookstyleinputcell
.. code:: bash
roslaunch prometheus_gazebo sitl_indoor_1uav_P450.launch
2. 在仿真中,PX4 SITL(Software In The Loop)模拟了真实飞控的行为
.. raw:: latex
\diilbookstyleinputcell
.. code:: bash
# 查看SITL进程
ps aux | grep px4
3. 理解SITL的工作原理:
::
┌─────────────────┐ UDP ┌─────────────────┐
│ Gazebo仿真 │ ←─────────→ │ PX4 SITL │
│ (物理模拟) │ 传感器数据 │ (飞控软件) │
│ │ 控制指令 │ │
└─────────────────┘ └─────────────────┘
4. 查看SITL输出的话题
.. raw:: latex
\diilbookstyleinputcell
.. code:: bash
# 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接口通常用于连接什么设备?使用什么通信协议?
进阶练习
~~~~~~~~
4. **对比分析**\ :列举3条Pixhawk开源飞控相比大疆闭源飞控的优势和劣势。
5. **系统设计**\ :如果你需要设计一个高可靠性的工业级无人机,会选择Pixhawk
6C还是6X?请说明理由。
6. **操作系统理解**\ :为什么飞控需要使用实时操作系统(RTOS)?通用Linux系统为什么不适合直接用于飞控?
思考题
~~~~~~
7. **冗余设计**\ :Pixhawk
6X采用三IMU冗余设计,请分析这种设计如何提高系统可靠性?三个IMU的数据如何融合使用?
8. **硬件选型**\ :某项目需要在室内环境(无GPS)实现无人机自主飞行,从硬件角度,飞控需要支持哪些外部传感器接口?
延伸阅读
--------
- `PX4官方文档 `__
- `Pixhawk硬件标准 `__
- `NuttX官方文档 `__