1. 飞控系统概述:飞控是什么?
飞控,全称飞行控制器。说白了,它就是无人机的大脑。
你想想看,一架四轴飞行器在空中,四个电机转速稍有偏差,飞机就会翻跟头。谁来决定每个电机该转多快?就是飞控。它实时读取传感器数据,算出当前姿态,然后发出指令让电机调整转速,让飞机保持稳定。
我在项目中遇到过不少新手,上来就问:「飞控是不是就是一块电路板?」嗯,这么说也对,但太片面了。飞控是硬件+软件的结合体。硬件负责感知和执行,软件负责决策和计算。两者缺一不可。
核心定义:飞控是一个实时闭环控制系统。它通过传感器感知飞行器的状态,通过控制算法计算出控制量,最终驱动执行机构(电机、舵机)让飞行器按照期望的轨迹运动。
我个人习惯把飞控比作「飞行员」。飞行员用眼睛看(传感器),用大脑算(算法),用手脚操作(执行机构)。飞控也是一样的逻辑。
2. 飞控的硬件架构
飞控硬件,说白了就是一堆传感器和一颗主控芯片。我拆过几十种飞控板,核心器件就那么几样。咱们一个一个说。
2.1 MCU(主控芯片)
MCU 是飞控的大脑。所有传感器数据都汇总到这里,所有控制算法都在这里跑。
常见的 MCU 有 STM32F4、STM32H7 系列,还有国产的 GD32 系列。选型时主要看三点:主频、RAM 大小、外设接口数量。
我记得有一次做项目,选了 STM32F405,主频 168MHz,跑姿态解算和 PID 控制绰绰有余。但后来加了光流和激光雷达,CPU 占用率直接飙到 85%。嗯,这里要注意,留足余量很重要。
| 参数 | STM32F405 | STM32H743 |
|---|---|---|
| 主频 | 168 MHz | 480 MHz |
| RAM | 192 KB | 1 MB |
| 适用场景 | 基础飞控 | 高阶飞控+视觉 |
2.2 IMU(惯性测量单元)
IMU 是飞控最核心的传感器。它包含加速度计和陀螺仪。加速度计测重力方向,陀螺仪测角速度。
为什么需要两个?因为加速度计容易受震动干扰,陀螺仪有零漂。两者互补,才能算出准确的姿态。
我曾经在一个项目中,IMU 安装位置离电机太近,震动直接把加速度计数据干废了。后来加了减震海绵,数据才恢复正常。避坑指南:IMU 一定要远离震动源,最好用减震垫隔离。
2.3 气压计
气压计用来测高度。原理很简单:气压随高度变化,测出气压就能算出高度。
但气压计有个毛病——受温度影响大。中午和傍晚,同一高度测出来的气压值可能差好几米。所以实际项目中,我一般只用气压计做粗略的高度估计,精细控制还得靠 GPS 或激光雷达。
2.4 磁力计
磁力计就是电子罗盘,用来测航向。它测量地球磁场方向,告诉你机头朝哪。
但磁力计有个大坑——容易受干扰。电机电流、大块金属、甚至地下的钢筋都会让磁力计数据跑偏。我建议每次起飞前做一次磁力计校准,否则航向会慢慢漂移。
2.5 GPS
GPS 提供位置和速度信息。室外飞行必备。
GPS 模块的精度取决于搜星数量和信号质量。一般 10 颗星以上,定位精度能到 2-3 米。如果加了 RTK(差分 GPS),精度能到厘米级。
我个人习惯:GPS 天线要放在飞控板正上方,远离一切遮挡物。天线下面不要走大电流线,否则信号会被干扰。
3. 飞控的软件架构
硬件是骨架,软件是灵魂。飞控软件架构一般分三层:实时操作系统(RTOS)、姿态解算、控制链路。我画了一张图,帮你理清关系。
3.1 RTOS(实时操作系统)
飞控不能跑 Linux 那种非实时系统。为什么?因为飞控要求任务在固定时间内完成,不能有毫秒级的延迟。Linux 的调度器做不到这一点。
常用的 RTOS 有 FreeRTOS、ChibiOS、RT-Thread。我最早用 FreeRTOS,后来转到了 ChibiOS,因为它的调度延迟更稳定。
RTOS 负责管理多个任务:传感器读取任务、姿态解算任务、控制任务、通信任务。每个任务都有固定的优先级和周期。
小技巧:传感器读取任务的优先级要设高,因为它提供原始数据。控制任务的优先级次之。通信任务(比如遥控器信号)优先级可以低一些,偶尔丢一帧问题不大。
3.2 姿态解算
姿态解算是飞控的核心。它把加速度计、陀螺仪、磁力计的数据融合起来,算出飞行器当前的俯仰角、横滚角、偏航角。
常用的算法有互补滤波和卡尔曼滤波。互补滤波简单、计算量小,适合低端 MCU。卡尔曼滤波精度高,但计算量大,适合高端 MCU。
我建议初学者先用互补滤波。为什么?因为卡尔曼滤波的调参太痛苦了。我曾经花了两周调卡尔曼滤波的噪声协方差矩阵,最后还是换回了互补滤波。嗯,有时候简单就是王道。
3.3 控制链路
控制链路是飞控的最后一环。它把期望姿态(遥控器给的指令)和实际姿态(姿态解算算出来的)做比较,计算出电机转速。
控制链路一般分三层:
- 位置环:控制飞行器在空间中的位置。输入是期望位置和实际位置,输出是期望速度。
- 速度环:控制飞行器的速度。输入是期望速度和实际速度,输出是期望角度。
- 姿态环:控制飞行器的角度。输入是期望角度和实际角度,输出是电机转速。
每一层都用 PID 控制器。PID 参数整定,说白了就是调这三个系数:P(比例)、I(积分)、D(微分)。
注意:PID 参数不是越大越好。P 太大,飞机会震荡。I 太大,飞机会 overshoot。D 太大,飞机会对噪声敏感。调参是个细活,急不得。
我记得有一次调一架大四轴,P 值设得偏高,飞机在空中像筛糠一样抖。我以为是传感器问题,查了半天,最后发现就是 P 值大了 0.2。调回来之后,飞机稳得像块石头。
好了,飞控系统概述就讲到这里。硬件架构和软件架构是飞控的两条腿,缺一不可。下一节咱们深入讲讲姿态解算的细节,包括四元数怎么用、互补滤波怎么实现。到时候我会带上代码,咱们一起手撕算法。
一句话总结:飞控 = 传感器感知 + 算法解算 + 控制执行。硬件是基础,软件是灵魂,两者配合才能飞得稳。