PID控制基础:比例、积分、微分的工作原理与数学表达

说到导航调参,PID 是绕不开的核心。我见过不少新手,上来就调三个系数,结果越调越乱。其实搞懂 P、I、D 各自在干什么,调参就成功了一半。

说白了,PID 就是一个控制器,它盯着「当前值」和「目标值」的差距,然后算出一个控制量,让系统尽快、平稳地到达目标。你想想看,无人机悬停、车辆循迹、云台增稳,背后都是这套逻辑。

比例控制(P)—— 最直接的响应

比例控制,就是根据误差的大小,按比例输出控制量。误差越大,输出越大。

数学表达很简单:

u(t) = Kp * e(t)

其中 e(t) 是当前误差,Kp 是比例系数。

我在项目中遇到过一件事:有个飞控悬停时总是上下晃。我一看,Kp 设得太高了。比例控制虽然响应快,但过大的 Kp 会让系统震荡,甚至发散。

核心要点:比例控制能快速减小误差,但无法消除稳态误差。纯比例控制下,系统最终会稳定在一个接近目标、但仍有偏差的位置。

举个例子:你开车想保持 100km/h,如果只用比例控制,遇到上坡时车速会掉到 95km/h,然后一直停在 95,回不到 100。这就是稳态误差。

积分控制(I)—— 消除残余偏差

积分控制,说白了就是「算总账」。它把过去所有的误差累加起来,只要还有残余误差,积分项就会一直增长,直到误差被消除。

数学表达:

u(t) = Ki * ∫ e(t) dt

积分项的作用,就是干掉比例控制搞不定的那点稳态误差。回到刚才开车的例子,加上积分项后,车速掉到 95 时,积分项会慢慢累积,持续增加油门,直到车速回到 100。

注意:积分项是把双刃剑。Ki 太大,系统会超调、震荡;Ki 太小,消除误差的速度太慢。我曾经在一个农业无人机项目上,因为积分饱和导致降落时反复弹跳,差点炸机。

这里有个常见问题:积分饱和。当执行器已经饱和(比如油门已经推到最大),积分项还在累加误差。等误差反向时,积分项需要很长时间才能退回来,导致系统响应迟钝。

我的习惯:在导航系统中,我通常会给积分项加限幅,或者使用条件积分——只在误差较小时才启用积分。这样既能消除稳态误差,又不会让积分饱和搞乱系统。

微分控制(D)—— 预测未来趋势

微分控制,看的是误差的变化率。误差在变大,它就提前输出反向控制;误差在变小,它就减少控制量,防止超调。

数学表达:

u(t) = Kd * de(t)/dt

微分项的作用,相当于给系统加了「阻尼」。它让系统更平稳,减少震荡和超调。

但微分项有个致命弱点:对噪声极其敏感。传感器信号稍微有点抖动,微分项就会放大这些噪声,导致控制输出剧烈跳动。

实战经验:我在调试一个激光雷达导航的 AGV 时,加了微分项后小车反而左右摇摆。后来发现是雷达数据有微小抖动,微分项把这些抖动放大了。解决办法:先对误差信号做低通滤波,再送入微分项。

PID 的完整形式

把三个部分加起来,就是完整的 PID 控制器:

u(t) = Kp * e(t) + Ki * ∫ e(t) dt + Kd * de(t)/dt

在数字系统中,我们用的是离散形式:

u[k] = Kp * e[k] + Ki * Σ e[i] * Δt + Kd * (e[k] - e[k-1]) / Δt

其中 Δt 是采样周期。这个公式,就是你在代码里实际要写的东西。

三个参数的直观对比

参数 作用 过大后果 过小后果
Kp 快速响应误差 震荡、发散 响应慢、稳态误差大
Ki 消除稳态误差 超调、积分饱和 稳态误差消除慢
Kd 抑制超调、增加阻尼 噪声放大、系统抖动 超调大、系统不稳

PID 控制的核心逻辑

下面这张图,展示了 PID 控制器在导航系统中的位置和信号流向:

PID 控制器在导航系统中的信号流 目标值 r(t) 误差 e(t) 比例 Kp 积分 Ki 微分 Kd 控制量 u(t) 被控对象 传感器 + 反馈值 y(t) − 说明: 1. 目标值 r(t) 与反馈值 y(t) 相减得到误差 e(t) 2. 误差分别经过比例、积分、微分三个通道处理 3. 三个通道的输出相加,得到最终控制量 u(t) 4. 控制量驱动被控对象,传感器测量输出并反馈

调参的先后顺序

我个人习惯的调参顺序是这样的:

  1. 先调 Kp:从小到大增加,直到系统出现轻微震荡,然后退回 60-70%
  2. 再加 Kd:抑制震荡,让系统更平稳。Kd 从零开始慢慢加,直到震荡消失
  3. 最后加 Ki:消除稳态误差。Ki 要小,一点点加,观察系统是否出现超调

一个小技巧:如果你不确定当前参数是否合理,可以给系统一个阶跃输入(比如突然改变目标位置),观察响应曲线。好的响应应该是:快速到达目标、没有或只有少量超调、最终稳定在目标值。

常见误区

  • 误区一:三个参数一起调。这就像同时拧三个螺丝,你根本不知道哪个在起作用。
  • 误区二:Kd 越大越好。微分项不是万能的,过大的 Kd 会让系统对噪声敏感,反而更不稳定。
  • 误区三:忽略采样时间。数字 PID 中,采样时间 Δt 直接影响积分和微分的计算精度。采样时间不稳定,PID 性能会大打折扣。