2. 飞控系统基础

嵌入式飞控系统是无人机、机器人等自主运动平台的核心计算与控制单元。理解其硬件架构、姿态解算原理以及控制回路结构,是进行PID调参和代码实现的前提。本章将从物理硬件层、数学表示层和控制逻辑层三个维度,系统梳理飞控系统的基础框架,为后续章节的算法实现与参数整定奠定坚实的工程认知。

嵌入式飞控系统硬件与信号链路架构 传感器组 (IMU) • 三轴加速度计 • 三轴陀螺仪 • 三轴磁力计 接口: SPI/I2C 速率: 1kHz~8kHz 供电: AVDD_2V8 气压计 (MS5611) I2C, 高度估计 GPS/RTK UART, 位置/速度 主控 MCU STM32F405 / F427 • ARM Cortex-M4F @168MHz • 硬件浮点单元 FPU • 定时器: PWM输出 8ch • DMA: 传感器数据搬运 • 供电: DVDD_3V3 执行机构 • 电调 ESC (PWM/DShot) • 无刷电机 (1000~2000KV) • 舵机 (PWM 50Hz) PWM频率: 400Hz~1kHz 供电: 2S~6S LiPo SPI 1kHz I2C 100Hz UART 10Hz PWM/DShot 电源管理 BEC 5V → MCU/传感器 LDO 3.3V → 数字域 遥控接收机 SBUS/PPM 串行 通道数: 8~16ch 姿态解算 (四元数/EKF) → 控制回路 (内环角速率 + 外环姿态) → 混控输出

2.1 嵌入式飞控硬件架构

核心原理:分层模块化设计

飞控硬件架构遵循"感知-决策-执行"的经典控制论闭环。从物理拓扑上看,系统由四个核心功能域构成:传感器域(惯性测量单元IMU、气压计、GPS/RTK、磁力计)、计算域(主控MCU及其外围电路)、执行域(电调ESC、无刷电机、舵机)以及通信域(遥控接收机、数传模块)。各域之间通过标准总线(SPI、I2C、UART、CAN)互联,形成高内聚、低耦合的工程结构。

主控MCU通常选用ARM Cortex-M4F内核的处理器(如STM32F405/F427),其硬件浮点单元(FPU)可显著加速姿态解算中的矩阵运算。传感器数据通过DMA通道直接搬运至内存,避免CPU中断开销,保证1kHz以上的控制频率。电源管理采用分级架构:动力电池(2S-6S LiPo)经BEC降压至5V为MCU和舵机供电,再经LDO稳压至3.3V为数字逻辑和传感器供电,模拟域(如加速度计)独立使用2.8V LDO以降低噪声耦合。

硬件选型与接口设计要点

模块典型器件通信接口采样/更新频率关键设计约束
IMU (6轴)ICM-20602 / BMI088SPI (4线)1kHz~8kHzSPI时钟≤10MHz,中断引脚用于数据就绪同步
磁力计IST8310 / AK8963I2C100Hz需与加速度计联合标定,远离大电流导线
气压计MS5611 / BMP388I2C/SPI50~100Hz需加海绵防光,温度补偿
GPS/RTKu-blox M8N / F9PUART (115200)5~20HzPPS引脚用于时间同步
电调ESCBLHeli_S / DShot600PWM/DShot400Hz~1kHzDShot需DMA+定时器,注意信号电平转换
工程风险提示:IMU的SPI总线应尽量短且等长,避免与电机驱动线平行走线。若使用I2C连接磁力计,需在SDA/SCL上添加上拉电阻(2.2kΩ至3.3V),并注意总线电容不超过400pF。电源域必须严格区分模拟地和数字地,通过0Ω电阻或磁珠单点连接,否则陀螺仪噪声会显著增大,导致姿态解算漂移。

案例拆解:某四轴飞行器硬件调试中的噪声问题

背景与现象:一款自研四轴飞行器在电机怠速时,飞控姿态数据出现周期性跳变,导致悬停时飞机轻微抖动。通过地面站日志发现,陀螺仪Z轴数据在电机启动后出现约±5°/s的噪声波动,频率与电机转速(约200Hz)吻合。

分析过程:首先检查IMU供电,发现AVDD_2V8纹波达120mVpp(正常应<30mVpp)。进一步排查发现,BEC输出的5V直接为舵机供电,而舵机在PWM更新瞬间会产生大电流脉冲,通过地线耦合至IMU模拟电源。同时,SPI数据线(SCK频率10MHz)与电机相线在PCB上平行走线约3cm,形成容性耦合。

解决步骤:① 将IMU模拟电源改为独立LDO(如RT9193-28),输入来自5V,并在输出端并联10μF钽电容+100nF陶瓷电容;② 在SPI总线上串联33Ω电阻以抑制振铃;③ 将电机相线改为双绞线并远离传感器区域;④ 在飞控固件中启用陀螺仪低通滤波(截止频率80Hz)。

结果对比:整改后,陀螺仪噪声降至±0.8°/s以内,悬停抖动消失。该案例说明,硬件架构中的电源完整性和信号完整性设计,直接影响姿态解算的精度,进而影响PID控制效果。

2.2 姿态解算原理:四元数与欧拉角

核心原理:姿态的数学表示

飞行器姿态描述的是机体坐标系(b系)相对于导航坐标系(n系,通常为北东地NED)的旋转关系。常用的表示方法有三种:欧拉角(横滚φ、俯仰θ、偏航ψ)、旋转矩阵(方向余弦矩阵DCM)和四元数(q0+q1i+q2j+q3k)。欧拉角直观但存在万向节锁死问题(当θ=±90°时,φ和ψ无法区分);四元数无奇异性且计算量小,是嵌入式飞控的主流选择。

四元数表示旋转的更新方程为:

q_dot = 0.5 * q ⊗ ω_b

其中ω_b为机体角速度(陀螺仪测量值),⊗表示四元数乘法。实际工程中采用一阶龙格-库塔法进行离散化更新,配合加速度计和磁力计数据通过互补滤波或卡尔曼滤波进行修正,抑制陀螺仪积分漂移。

姿态解算流程与算法选型

  1. 传感器校准:陀螺仪零偏(静态采集1000样本取均值)、加速度计六面标定、磁力计椭球拟合。
  2. 数据预处理:低通滤波(截止频率根据机体振动特性设定,通常40~80Hz),去除高频噪声。
  3. 姿态初始化:利用加速度计计算初始横滚/俯仰,磁力计计算初始偏航,转换为四元数。
  4. 姿态更新:以1kHz频率执行四元数微分方程更新,周期约1ms。
  5. 误差修正:将加速度计测量的重力方向与四元数推算的重力方向叉积作为误差,通过PI控制器修正陀螺仪零偏。
算法选型建议:对于STM32F405级别的MCU,推荐使用Mahony互补滤波(计算量约20μs)或Madgwick滤波(约50μs)。若需更高精度且MCU资源充足(如F427),可选用误差状态卡尔曼滤波(ESKF),但需注意矩阵运算的浮点耗时和内存占用(约4KB RAM)。

案例拆解:四元数与欧拉角转换的精度陷阱

场景:某飞控在高速旋转(偏航角速度达300°/s)时,地面站显示的欧拉角出现跳变。经查,代码中直接使用atan2(2*(q0*q3+q1*q2), 1-2*(q2*q2+q3*q3))计算偏航角,但未对θ接近±90°时的奇异点做保护。

分析:当θ→90°时,cosθ→0,atan2的参数接近0/0,导致数值不稳定。同时,欧拉角在接近±180°时存在±180°跳变,需进行角度归一化处理。

解决方案:① 在姿态解算输出端增加角度限幅与平滑滤波;② 控制回路中直接使用四元数误差(而非欧拉角误差)进行PID计算,避免转换带来的非线性;③ 若必须输出欧拉角,采用atan2的改进公式并添加奇异点检测(当|q2*q2+q3*q3|>0.999时,使用备用公式)。

2.3 控制回路:内环角速率与外环姿态

核心原理:串级PID结构

飞控姿态控制采用经典的串级PID结构,外环为姿态环(控制角度),内环为角速率环(控制角速度)。外环输出作为内环的期望输入,内环输出直接作用于执行机构。这种结构的优势在于:内环能够快速抑制角速度扰动(如阵风、电机振动),外环则保证姿态角跟踪精度。

内环角速率PID的传递函数可简化为:

u = Kp_ω * (ω_ref - ω) + Ki_ω * ∫(ω_ref - ω)dt + Kd_ω * d(ω_ref - ω)/dt

其中ω_ref来自外环PID的输出(期望角速度),ω为陀螺仪测量的实际角速度。内环PID频率通常为1kHz,外环PID频率为200~500Hz(与姿态解算频率匹配)。

控制回路参数整定流程

步骤操作观察指标调整策略
1. 内环P仅启用P项,逐步增大Kp_ω角速度响应是否振荡Kp_ω增大至轻微振荡后回退20%
2. 内环I加入Ki_ω消除稳态误差悬停时角速度零偏Ki_ω从0.01开始,逐步增大至零偏消除
3. 内环D加入Kd_ω抑制超调阶跃响应超调量Kd_ω从0.001开始,观察噪声放大情况
4. 外环P固定内环参数,调整Kp_θ姿态角跟踪误差Kp_θ增大至出现低频振荡后回退
5. 外环I消除稳态姿态误差长时间悬停姿态漂移Ki_θ设为Kp_θ的1/10~1/5
经验值参考:对于250mm轴距、总重约1kg的四轴飞行器,内环Kp_ω通常在0.05~0.15(单位:输出/PWM百分比),Ki_ω为0.01~0.03,Kd_ω为0.001~0.005。外环Kp_θ为4~8(单位:期望角速度/角度误差),Ki_θ为0.2~0.5。实际值需根据机体惯量和电机响应速度调整。

案例拆解:穿越机翻滚后恢复缓慢的调参实战

背景:一架5寸穿越机在完成快速翻滚动作后,姿态恢复存在约200ms的延迟,导致后续动作衔接不流畅。日志显示翻滚后横滚角误差峰值达15°,恢复时间约0.4s。

分析:通过日志对比发现,内环角速率响应存在明显滞后——期望角速度从0阶跃至400°/s时,实际角速度上升时间约80ms,且超调达20%。这表明内环Kp_ω偏小,Kd_ω过大(阻尼过强)。同时,外环Kp_θ为6,在角速度饱和(限幅500°/s)时,角度误差积分项累积过慢。

调参步骤:① 将内环Kp_ω从0.08增大至0.12,Kd_ω从0.004减小至0.002,使角速度上升时间缩短至40ms,超调降至5%;② 将内环积分限幅从20%提高至30%,防止积分饱和;③ 外环Kp_θ从6提高至8,同时将外环输出限幅从300°/s提高至400°/s,以充分利用内环能力。

结果:调整后,翻滚恢复时间缩短至150ms,动作连贯性显著改善。该案例表明,串级PID调参应遵循"先内后外、先P后I再D"的顺序,且需关注各环节的限幅值是否成为瓶颈。

常见误区与总结复盘

  • 误区一:直接使用欧拉角进行PID计算。欧拉角在接近±90°时存在奇异性,且角度变化率与角速度之间为非线性关系(需乘以旋转矩阵),导致控制性能下降。应使用四元数误差或旋转向量误差。
  • 误区二:内环频率不足。若内环控制频率低于500Hz,角速率环的相位裕度不足,容易引发高频振荡。应确保内环在1kHz以上运行。
  • 误区三:忽略执行机构延迟。电机和电调的响应延迟(通常10~30ms)会引入额外相位滞后,需在PID设计中预留相位裕度,必要时加入Smith预估器或前馈补偿。
  • 误区四:传感器数据未同步。陀螺仪和加速度计采样时刻不一致,会导致姿态解算中的时间偏差,尤其在快速机动时产生明显误差。应使用硬件中断或DMA实现同步采样。