2. 飞控核心原理:姿态解算、PID控制与电机控制

各位同学,欢迎来到飞控核心原理这一章。说实话,很多新手一上来就被四元数、PID这些名词吓住了。其实没那么玄乎。我做了这么多年飞控,今天就把这些核心概念掰开了揉碎了讲给你听。

2.1 姿态解算:四元数与欧拉角

先说说姿态解算。说白了,就是让飞控知道飞机现在是什么姿势——是平飞、侧倾还是抬头?

2.1.1 欧拉角:直观但有问题

欧拉角有三个:俯仰角(Pitch)、横滚角(Roll)、偏航角(Yaw)。很直观,对吧?

  • 俯仰角:机头抬多高
  • 横滚角:机身侧倾多少
  • 偏航角:机头朝哪个方向

但欧拉角有个致命问题——万向锁。当俯仰角接近±90°时,横滚和偏航会混在一起,解算就乱套了。我在项目中遇到过一架固定翼,做筋斗动作时姿态突然跳变,差点炸机。从那以后,我内部运算一律用四元数。

2.1.2 四元数:数学上的优雅方案

四元数用四个数表示旋转:q = w + xi + yj + zk。看着抽象,但好处很明显:

  • 没有万向锁问题
  • 插值平滑
  • 计算效率高

嗯,这里要注意:四元数虽然好,但人眼看不懂。所以最终输出给地面站时,还是要转成欧拉角。

核心转换公式:

// 四元数转欧拉角
roll  = atan2(2*(w*x + y*z), 1 - 2*(x*x + y*y))
pitch = asin(2*(w*y - z*x))
yaw   = atan2(2*(w*z + x*y), 1 - 2*(y*y + z*z))

2.1.3 传感器融合

光有数学还不够。实际中,陀螺仪有漂移,加速度计有噪声。怎么办?融合。

我个人习惯用互补滤波——简单、轻量、够用。对于资源受限的飞控MCU,这比卡尔曼滤波实在多了。

我的经验:互补滤波的系数α一般取0.98左右。α越大,越信任陀螺仪;α越小,越信任加速度计。调试时从0.98开始,根据实际飞行效果微调。

2.2 PID控制原理

姿态解算完了,接下来就是控制。PID是飞控的灵魂。

2.2.1 比例控制(P)

最简单:偏差越大,输出越大。比如飞机偏右了,就向左打舵。但只有P会震荡——你想想看,飞机快回正时速度太快,冲过头了。

2.2.2 积分控制(I)

解决静态误差。比如有风一直吹,P控制拉不回来,I项就慢慢累积力量,直到把飞机拉正。

我曾经吃过I项太大的亏。一架四轴悬停时一直低频晃动,查了半天发现是I项饱和了。后来加了积分限幅,问题解决。

2.2.3 微分控制(D)

预测未来。D项看偏差的变化率,提前刹车,抑制震荡。

警告:D项对噪声极其敏感。我建议在D项前加低通滤波,否则飞控会抖得像筛糠一样。

2.2.4 串级PID结构

实际飞控用的是串级PID——内环控制角速度,外环控制角度。

// 伪代码示例
// 外环:角度环
angle_error = target_angle - current_angle
angle_output = Kp_angle * angle_error

// 内环:角速度环
rate_error = angle_output - current_rate
rate_output = Kp_rate * rate_error + Ki_rate * integral + Kd_rate * derivative

// 最终输出到电机
motor_output = rate_output

为什么用串级?因为内环响应快,外环响应慢。这样飞机既稳又灵活。

2.3 PWM信号与电机控制

PID算完了,怎么让电机转?靠PWM。

2.3.1 PWM基本原理

PWM就是方波。通过调节占空比(高电平时间占比)来控制电机转速。

占空比 电机状态
0% 停止
50% 半速
100% 全速

2.3.2 电调与PWM频率

无人机用的无刷电机,需要通过电调(ESC)驱动。电调接收PWM信号,一般频率是50Hz-400Hz。

这里有个坑:不同电调支持的PWM频率不同。我遇到过用400Hz驱动一个老款电调,结果电调直接冒烟了。所以一定要看电调手册。

2.3.3 油门曲线与电机映射

PID输出值(比如-1000到+1000)需要映射到PWM占空比(比如1000us到2000us)。

// 油门映射
pwm_value = 1500 + pid_output * 500 / 1000
// 1500us是中点,500us是行程范围

避坑指南:我曾经在代码里忘了做限幅,PID输出超了范围,结果电机直接全速旋转,飞机差点翻倒。所以一定要加饱和处理。

2.4 知识体系总览

下面这张图,是我梳理的本章知识脉络。你把它记在脑子里,整个飞控的骨架就有了。

飞控核心原理知识体系 姿态解算 PID控制 电机控制 四元数 vs 欧拉角 传感器融合(互补滤波) 万向锁问题 P(比例)I(积分)D(微分) 串级PID结构 参数整定方法 PWM占空比原理 电调(ESC)驱动 油门映射与限幅 核心流程:传感器数据 → 姿态解算 → PID控制 → PWM输出 → 电机 闭环反馈:电机转动 → 飞机姿态变化 → 传感器再次采集

好了,这一章的内容就到这里。姿态解算是飞控的眼睛,PID是大脑,PWM和电机是手脚。三者缺一不可。下一章我们开始动手写代码,把这些理论变成真正的飞控程序。

本章要点回顾:

  • 四元数用于内部运算,欧拉角用于人机交互
  • 串级PID:外环角度、内环角速度
  • PWM信号要加限幅,防止电机失控
  • 互补滤波是轻量级传感器融合的好选择

专注资料整理