简单易懂 劈-I-D(1)

前言

对于刚刚初学智能车的小伙伴来说,PID可谓是一个很大拦路虎,当然,网上也有很多很多资料,但是资料虽多,但大多杂乱无章,让各位小伙伴们都抓不住重点,真的令人好头痛!下面,我就用通俗,易于理解的方式介绍一下PID

简单易懂 劈-I-D(1)

what is PID???

PID控制为自动控制方式的一种,广泛应用工业等领域。它可以使被控量按照你自己预先设计好的的设定量运行。常见的PID控制有很多,比如温度控制,平衡小车,无人机等,很多很多。

简单易懂 劈-I-D(1)

P—即比列控制,比例控制是一种最简单的控制方式。其控制器的输出与输入误差信号成比例关系。

I—即积分控制,在积分控制中,控制器的输出与输入误差信号的积分成正比关系。

D—即微分控制,在微分控制中,控制器的输出与输入误差信号的微分(即误差的变化率)成正比关系。

公式如下:
μ(t)=Kp[e(t)+1TI0te(t)+TDde(t)dt] \mu(t)=K_p[ e(t)+\frac{1}{T_I} \int_0^t e(t)+T_D \frac{\mathrm{d}{e(t)}}{\mathrm{d}{t}}]

通俗易懂小例子

假如你在开车(小伙伴们不要想歪哦),你需要将你的小车速度提升到100m/s并且保持恒定,那么,你应该用什么方法才能够又快有准的将速度提升到100m/s并且尽量保证恒定呢?我们马上想到一个最简单的办法就是:

  • 当前速度距离目标速度很远时,我们应该用很大的加速度提速。
  • 当前速度距离目标速度很近时,我们则应该用很小的加速度提速。

简单易懂 劈-I-D(1)
我们抛开物理公式,数学原理,用自己的生活常识想想,在距目标速度很远时,我们用大的加速度提速,可以很大地节约时间;在距离目标速度近时我们减小加速度,防止超过目标速度;这样我们不仅很快的达到了目标速度,而且还保证了稳定,不超过目标速度。

PID逐个刨析

P—英文单词Proportion,即比例的意思,因此叫比例控制。因为我们要以最快的速度达到目标速度,还要保证不超过目标速度,因此我们要隔一定时间(这里的时间间隔T可以依据实际情况来定)来检查一下当前的偏差量(偏差量=预定速度-当前速度),如果偏差量还很大时,我们则需要加大P来达到提速的效果,如果偏差很小时,我们则需要减小P来达到稳定的效果。

I—英文单词Integration,即积分的意思,因此叫积分控制。如果我们的P太大导致当前速度超过预定速度,偏差量则会为负(偏差量=预定速度-当前速度),由于P的作用,则又会导致减速,然后又加速,这样往往复复最终形成震荡(也叫稳态误差)。因此,我们为了避免这种震荡(即稳态误差),我们引入积分项,积分项即为对偏差在时间上积分,因此,随着时间的增大,积分项也会增大(即使偏差很小)。积分项会使稳态误差逐渐趋近于0,使速度慢慢地趋近于目标速度。

D—英文单词Differentiation,即微分的意思,因此叫微分控制。为了让速度在目标速度左右稳定下来,并且能够提前判断系统动作(即反映偏差信号的变化趋势),我们必须考虑小车速度的变化率(即加速度),我们将小车速度的变化率也乘以一个系数,在偏差值变得很大之前引入一个早期修正信号,从而加快系统的动作速度,减小了调节时间。

两种离散式PID算法的介绍

微分方程形式的PID公式到离散化形式的公式,这里不在推导,网上资源很多,大家自行查阅资料进行学习。

简单易懂 劈-I-D(1)

位置式PID

μ(k)=Kpe(k)+Kin=0ke(n)+Kd(e(k)e(k1))\mu(k)=K_pe(k)+K_i\sum_{n=0}^ke(n)+K_d(e(k)-e(k-1))
位置式PID的输出与和整个过去的状态有关,由于积分器的累计作用,将会产生更大的累计误差。位置是PID的输出直接对应对象的输出,因此对系统的影响可能更大些。对于做智能车的小伙伴来说,位置式PID更适合于舵机控制(方向控制)效果较好。

增量式PID

Δμ(k)=KpΔe(k)+Kie(k)+Kd(Δe(k)Δe(k1))\Delta\mu(k)=K_p\Delta e(k)+K_ie(k)+K_d(\Delta e(k)-\Delta e(k-1))
增量式PID的输出,只有当前拍和前两拍的误差有关,因此,相较于位置式PID累误差较小,增量式PID无积分作用,同时,增量式PID输出的时控制量的增量,因此,如果执行机构出现问题,对系统的影响较小。对于做智能车的小伙伴来说,增量式PID更适合于电机控制(速度控制)效果最好。

总结

到此为止,一个简单易懂的PID已经介绍完了,下一章将以
具体的算法展开来介绍PID代码的实现
各位如果想讨论,或想咨询,请给联系本人。QQ:2239469775QQ:2239469775