.. _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官方文档 `__