063、模型预测控制(MPC)简介

063、模型预测控制(MPC)简介 飞控算法从入门到精通 | 063、模型预测控制(MPC)简介从一次炸机说起去年夏天,我在调试一架四旋翼的轨迹跟踪时,遇到了一个让我连续熬夜三天的怪问题。PID控制器在仿真里跑得飞起,姿态响应快得让人感动,但一上真机,只要轨迹曲率稍微大一点,电机就开始“嘶吼”,然后——炸了。事后分析日志,发现PID在遇到强耦合的横滚-偏航通道时,输出指令直接冲到了限幅值,而限幅后的控制量又导致姿态角速度超调,最终触发保护性降落——但降落时已经偏航了90度,桨叶直接啃到了地面。那段时间我反复问自己:PID到底缺了什么?后来我意识到,PID本质上是一个“事后诸葛亮”——它看到误差才去修正,永远在追赶。而我们需要的是“事前诸葛亮”:提前看到未来几步的轨迹,然后提前规划控制量。这就是模型预测控制(MPC)进入飞控视野的原因。MPC到底在干什么简单说,MPC的核心思想是:用模型预测未来,用优化求解现在。你有一个系统模型(比如四旋翼的动力学方程),你告诉它“未来N步内,我希望状态走到哪里”,然后MPC会算出一串控制输入(比如未来10个时间步的电机PWM值),使得预测的状态轨迹尽可能接近期望轨迹,同时满足各种约束(比如电机转速不能超过上限、姿态角不能超过安全范围)。最后,它只执行第一个控制量,下一时刻重新计算——这叫“滚动优化”。听起来很美好,但落地时全是坑。我见过不少同学把MPC当成万能药,结果代码跑在STM32H7上,一个控制周期要算200毫秒,飞控早炸了。所以这篇笔记,我想从工程实现的角度,把MPC的骨架拆开,重点