飞控系统基础:飞控硬件组成、软件架构与基本工作原理

飞控系统是无人机的“大脑”与“小脑”,它负责感知飞行姿态、接收遥控指令、计算控制量并驱动电机响应。无论是多旋翼、固定翼还是垂直起降(VTOL)飞行器,其飞控系统的硬件组成和软件架构都遵循相似的逻辑。本章将拆解飞控硬件的核心传感器与执行单元,梳理PX4与ArduPilot两大主流开源飞控的软件分层,并解释从“传感器数据”到“电机转速”的完整信号链路。理解这一层,是后续进行PID调参、滤波配置和故障排查的基石。

飞控系统硬件-软件-控制链路图 传感器组 (感知) IMU (加速度计+陀螺仪) GPS/北斗 模块 气压计 (高度) 磁力计 (航向) 飞控核心 (计算与决策) MCU (STM32F4/F7/H7) 姿态解算 + 控制律计算 软件架构: PX4 / ArduPilot 调度器 / 模块 / 参数系统 混控器 (Mixer) 将姿态需求映射为电机油门 执行机构 (动作) 电调 ESC (PWM/DShot) 无刷电机 螺旋桨 舵机 (固定翼/倾转) SPI/I2C UART I2C I2C/SPI PWM/DShot PWM 电源系统 电池 → PMU → 5V/3.3V 地面站 (QGC/MP) 遥测/调参/日志分析 闭环控制回路: 期望姿态 → 姿态误差 → PID控制 → 混控输出 → 电机响应 → 实际姿态 (传感器反馈更新率 100Hz - 1kHz, 控制频率 1kHz - 8kHz) 传感器数据 控制信号 电源

2.1 飞控硬件组成:从传感器到执行器

飞控硬件是承载软件算法的物理平台,其选型和布局直接影响飞行稳定性。一套完整的飞控硬件系统通常由传感器组、主控MCU、电源管理模块(PMU)、执行机构驱动接口以及外部通信接口组成。对于初学者而言,最容易混淆的是“飞控板”与“电调”的边界:飞控板负责计算,电调负责驱动电机。

核心传感器及其作用

  • IMU(惯性测量单元):内部集成三轴加速度计和三轴陀螺仪,部分高端IMU还包含磁力计。加速度计测量比力(重力+运动加速度),陀螺仪测量角速度。IMU数据是姿态解算的原始输入,其采样率通常为1kHz-8kHz,经过低通滤波后用于姿态估计。
  • GPS/北斗模块:提供位置、速度(通过多普勒频移)和时间信息。GPS数据更新率较低(5Hz-20Hz),主要用于室外定位、返航和航线飞行。在调参时,GPS的延迟会影响位置控制环的增益上限。
  • 气压计:通过测量大气压力变化推算高度。气压计对气流敏感,在无人机起降或高速飞行时,气压计数据会引入较大噪声,通常需要与IMU的垂直加速度计进行融合(如互补滤波或卡尔曼滤波)。
  • 磁力计:测量地磁场方向,用于修正航向漂移。磁力计极易受电机电流和周围铁磁物质干扰,因此飞控板通常将其单独引出或做软件校准。

主控MCU与接口

主流飞控(如Pixhawk系列)采用STM32F4/F7/H7系列芯片,主频从168MHz到480MHz不等。MCU通过SPI/I2C总线读取IMU和磁力计,通过UART连接GPS和数传模块,通过PWM或DShot协议输出电机控制信号。值得注意的是,MCU的运算能力决定了控制频率的上限。例如,STM32F427在运行PX4姿态控制器时,可轻松达到1kHz控制频率,但若同时运行复杂的光流算法或EKF(扩展卡尔曼滤波),则可能因CPU过载导致控制周期抖动。

硬件选型要点: 对于穿越机(竞速无人机),通常选择F4/F7飞控搭配独立电调,追求低延迟;对于航拍机或行业机,则选择带冗余IMU和双GPS的Pixhawk系列,追求可靠性。调参前务必确认飞控的固件版本与硬件型号匹配,否则传感器校准参数可能异常。

2.2 软件架构:PX4与ArduPilot的模块化设计

PX4和ArduPilot是当前最主流的开源飞控软件,两者均采用模块化架构,但设计哲学略有不同。PX4更强调“发布-订阅”的进程间通信(uORB),而ArduPilot则基于实时操作系统(ChibiOS/FreeRTOS)的线程与共享内存。理解软件架构有助于定位调参问题——例如,当修改一个PID参数后不生效,往往是参数系统未正确加载或模块未重启。

对比维度 PX4 ArduPilot
核心通信机制 uORB(发布/订阅) 共享内存 + 线程锁
参数系统 param(二进制文件存储) AP_Param(EEPROM/闪存)
姿态解算 EKF2(默认) EKF3(默认)
混控器 独立Mixer模块(脚本化) 内置混控逻辑(参数配置)
适用机型 多旋翼、VTOL、固定翼 多旋翼、固定翼、直升机、船

PX4软件分层

PX4的软件架构从上到下分为:应用层(飞行模式与导航)→ 控制器层(姿态/位置控制)→ 状态估计层(EKF2)→ 驱动层(传感器/执行器)。调参时,我们主要修改控制器层的参数(如MC_ROLL_P、MC_VEL_P),而状态估计层的参数(如EKF2_ACC_NOISE)通常保持默认。PX4的混控器是一个独立脚本,它将控制器的输出(如滚转力矩指令)映射到每个电机的油门百分比,对于非对称机架(如V型尾翼),需要自定义混控器文件。

ArduPilot软件分层

ArduPilot的架构更偏向“单体应用”,所有功能编译在一个固件中,通过编译选项裁剪。其参数系统非常庞大(超过2000个参数),但逻辑清晰。ArduPilot的调参入口是Mission Planner地面站,支持实时曲线显示和参数在线修改。对于新手,ArduPilot的自动调参(AUTOTUNE)功能比PX4更成熟,但自动调参结果仍需人工复核。

实战建议: 初学者建议从PX4 + QGroundControl开始,因为PX4的日志系统(ULog)更结构化,便于后续分析。若你使用ArduPilot,务必先熟悉“全部参数表”的搜索功能,避免遗漏关键参数。

2.3 基本工作原理:从传感器数据到电机转速

飞控工作的核心是一个闭环反馈系统。以多旋翼为例,其工作流程可拆解为四个步骤:感知 → 估计 → 控制 → 执行。每一步都有对应的硬件和软件模块,调参的本质是调整“控制”环节的增益,但前提是“估计”环节输出准确。

  1. 感知:IMU以1kHz采样角速度和加速度,GPS以10Hz输出位置和速度,气压计以100Hz输出高度。
  2. 估计:EKF(扩展卡尔曼滤波)融合IMU、GPS、气压计数据,输出姿态四元数、位置、速度的估计值。EKF的调参参数(如噪声方差)决定了融合权重,若GPS噪声设置过小,会导致位置估计震荡。
  3. 控制:控制器分为内环(角速率环)和外环(姿态环/位置环)。内环频率高(1kHz),外环频率低(100Hz-250Hz)。PID参数直接作用于内环,外环输出作为内环的期望输入。
  4. 执行:混控器将控制器的输出(如期望滚转力矩)转换为4个电机的PWM/DShot信号。电调接收信号后驱动电机旋转,产生升力和力矩。

控制频率与延迟的权衡

控制频率越高,系统对扰动的响应越快,但也会放大传感器噪声。例如,将角速率环频率从1kHz提升到4kHz,需要MCU有更强的算力,且IMU的采样噪声必须足够低。在调参时,若发现电机高频抖动(嗡鸣声),往往是因为控制频率过高或PID的D项过大。

常见误区: 很多新手在飞行器振荡时,第一反应是降低PID的P值,但忽略了传感器滤波(IMU低通滤波)的影响。如果陀螺仪数据噪声过大,即使P值很小,系统也会因微分项放大噪声而振荡。正确做法是先检查IMU原始数据曲线,再调整滤波参数。

2.4 案例拆解:一架四旋翼的首次上电调试

以下是一个典型的飞控调试案例,帮助你理解硬件与软件如何协同工作。

背景与约束:一架自组装的450mm轴距四旋翼,使用Pixhawk 6C飞控(STM32H743),Hobbywing XRotor Pro 40A电调,朗宇X2216电机,1045螺旋桨。电池为4S 5200mAh。目标是完成基础调参,实现稳定悬停。

初始现象:上电后,QGroundControl显示传感器正常,但解锁电机后,电机转速不均匀,机身轻微抖动。

分析判断过程:首先检查IMU原始数据,发现陀螺仪Z轴噪声峰峰值达到0.5°/s(正常应小于0.1°/s)。进一步检查发现,飞控板安装时使用了较硬的尼龙柱,且未加减震垫,导致电机高频振动传导至IMU。其次,检查电调校准状态,发现4个电调的油门行程不一致。

实际操作步骤:

  1. 更换飞控减震垫为硅胶材质,并重新安装飞控板,确保方向箭头朝前。
  2. 在QGroundControl中执行“电调校准”流程,确保所有电调识别到相同的油门范围(1000-2000μs)。
  3. 将IMU低通滤波截止频率从默认的80Hz降低到40Hz,观察噪声是否被抑制。
  4. 进行“传感器校准”中的水平校准和磁力计校准。
  5. 解锁电机,在无桨状态下测试油门响应,确认4个电机转速同步。

结果对比:调整后,陀螺仪Z轴噪声降至0.08°/s,解锁后电机转速均匀。进行首次试飞,悬停时姿态波动小于±2°,但存在轻微的低频晃动(约0.5Hz)。

风险与代价:降低滤波截止频率会引入相位延迟,可能导致控制环稳定性下降。因此,后续需要结合PID调参来补偿延迟。

复盘经验:硬件安装的机械共振是飞控调试的第一大敌。在调PID之前,务必先确保传感器数据干净。此外,电调校准是新手最容易忽略的步骤,电调行程不一致会导致混控输出偏差,表现为解锁后机身倾斜或抖动。

2.5 常见误区与总结复盘

  • 误区一:跳过传感器校准直接调PID。加速度计偏置和磁力计干扰会导致姿态估计错误,此时调PID毫无意义。
  • 误区二:混淆“姿态控制”与“位置控制”参数。PX4中MC_ROLL_P是姿态环参数,MC_POS_XY_P是位置环参数,两者作用域不同,调参时需先内环后外环。
  • 误区三:忽视电调协议的一致性。如果混用PWM和DShot协议的电调,会导致信号延迟不一致,引起电机响应不同步。
  • 误区四:认为“自动调参”可以完全替代手动调参。自动调参(如ArduPilot的AUTOTUNE)在风小、无GPS干扰的环境下有效,但无法覆盖所有飞行包线,最终仍需人工微调。