飞控算法从入门到精通 | 060 模糊PID控制原理与实现
从一次炸机说起
去年夏天调试一架四轴,悬停时电机高频抖动,PID参数调了三个通宵——P大了震荡,I大了超调,D大了噪声放大。最后在试飞场地上空,一阵侧风过来,飞机直接翻了个跟头。拆开日志一看,PID输出在风扰瞬间饱和,积分项疯狂累积,等风过去,积分已经跑偏到姥姥家。
那晚我盯着示波器上的波形,突然意识到:传统PID就像个死脑筋的保安,不管外面刮风下雨还是晴空万里,都按同一套规则开门关门。飞控面对的是时变、非线性、强耦合的系统,固定参数怎么可能应付得了?
后来在工业机器人项目里看到老师傅用模糊PID,才明白这玩意儿不是玄学,是实实在在的工程解法。今天这篇笔记,就把我从炸机到学会模糊PID的坑和经验,原原本本写出来。
模糊PID到底在解决什么问题
先别急着看公式。模糊PID的核心思想其实很朴素:让PID参数随着系统状态“自适应”变化。
传统PID的三个参数Kp、Ki、Kd是定值。你调好了悬停状态,大机动就抖;调好了大机动,悬停又软。模糊PID的做法是:实时监测偏差e和偏差变化率ec,然后根据一套“经验规则”动态调整PID参数。
举个例子,当偏差很大时(比如突然遇到强风),我们希望Kp大一些快速响应,同时Kd也要大一些防止超调,Ki则要小甚至为零避免积分饱和。当偏差很小接近稳态时,Kp可以小一点防止震荡,Ki适当增大消除静差,Kd则要小心处理避免噪声放大。
这些“如果…那么…”的规则,就是模糊控制的核心——模糊规则表。