067、滑模控制在飞控中的应用
从一次炸机说起
去年夏天,我在调试一架四旋翼的偏航通道时,遇到了一个诡异的现象:PID参数调得再完美,只要遇到阵风,偏航角就会突然抖一下,然后像被什么东西拽住一样,慢慢偏离目标。更离谱的是,有一次在室外测试,飞机突然像抽风一样剧烈抖动,然后直接翻了过去——炸了。
事后分析日志,发现偏航角速度在某个瞬间出现了高频振荡,幅度不大但频率极高,PID控制器根本来不及响应。当时我就在想:如果有一种控制方法,能对这类不确定性“视而不见”,或者干脆“硬刚”过去,该多好。
后来我翻出了滑模控制(Sliding Mode Control, SMC)的资料。说实话,第一次看理论推导时,我差点放弃——那些李雅普诺夫函数、滑模面、等效控制,看起来像是数学系的人故意写来折磨工程师的。但当我真正在飞控里跑起来之后,发现这东西其实很“暴力美学”:你不需要精确知道系统模型,只要知道不确定性的边界,它就能把状态“拽”到一条预设的轨迹上,然后死死按住。
滑模控制的核心思想:用“蛮力”对抗不确定性
先别管那些复杂的数学公式。滑模控制本质上就两件事:
设计一条滑模面:这条线(或面)代表你期望的系统状态轨迹。比如在飞控里,你希望偏航角误差e和误差变化率de/dt满足某种关系,比如s = c*e + de/dt = 0。当系统状态落在s=0这条线上时,误差会指数收敛到零。
设计一个控制律:这个控制律要保证:无论系统受到什么扰动,状态都会