简单易懂 劈-I-D(1)
前言
对于刚刚初学智能车的小伙伴来说,PID可谓是一个很大拦路虎,当然,网上也有很多很多资料,但是资料虽多,但大多杂乱无章,让各位小伙伴们都抓不住重点,真的令人好头痛!下面,我就用通俗,易于理解的方式介绍一下PID
what is PID???
PID控制为自动控制方式的一种,广泛应用工业等领域。它可以使被控量按照你自己预先设计好的的设定量运行。常见的PID控制有很多,比如温度控制,平衡小车,无人机等,很多很多。
P—即比列控制,比例控制是一种最简单的控制方式。其控制器的输出与输入误差信号成比例关系。
I—即积分控制,在积分控制中,控制器的输出与输入误差信号的积分成正比关系。
D—即微分控制,在微分控制中,控制器的输出与输入误差信号的微分(即误差的变化率)成正比关系。
公式如下:
通俗易懂小例子
假如你在开车(小伙伴们不要想歪哦),你需要将你的小车速度提升到100m/s并且保持恒定,那么,你应该用什么方法才能够又快有准的将速度提升到100m/s并且尽量保证恒定呢?我们马上想到一个最简单的办法就是:
- 当前速度距离目标速度很远时,我们应该用很大的加速度提速。
- 当前速度距离目标速度很近时,我们则应该用很小的加速度提速。
我们抛开物理公式,数学原理,用自己的生活常识想想,在距目标速度很远时,我们用大的加速度提速,可以很大地节约时间;在距离目标速度近时我们减小加速度,防止超过目标速度;这样我们不仅很快的达到了目标速度,而且还保证了稳定,不超过目标速度。
PID逐个刨析
P—英文单词Proportion,即比例的意思,因此叫比例控制。因为我们要以最快的速度达到目标速度,还要保证不超过目标速度,因此我们要隔一定时间(这里的时间间隔T可以依据实际情况来定)来检查一下当前的偏差量(偏差量=预定速度-当前速度),如果偏差量还很大时,我们则需要加大P来达到提速的效果,如果偏差很小时,我们则需要减小P来达到稳定的效果。
I—英文单词Integration,即积分的意思,因此叫积分控制。如果我们的P太大导致当前速度超过预定速度,偏差量则会为负(偏差量=预定速度-当前速度),由于P的作用,则又会导致减速,然后又加速,这样往往复复最终形成震荡(也叫稳态误差)。因此,我们为了避免这种震荡(即稳态误差),我们引入积分项,积分项即为对偏差在时间上积分,因此,随着时间的增大,积分项也会增大(即使偏差很小)。积分项会使稳态误差逐渐趋近于0,使速度慢慢地趋近于目标速度。
D—英文单词Differentiation,即微分的意思,因此叫微分控制。为了让速度在目标速度左右稳定下来,并且能够提前判断系统动作(即反映偏差信号的变化趋势),我们必须考虑小车速度的变化率(即加速度),我们将小车速度的变化率也乘以一个系数,在偏差值变得很大之前引入一个早期修正信号,从而加快系统的动作速度,减小了调节时间。
两种离散式PID算法的介绍
微分方程形式的PID公式到离散化形式的公式,这里不在推导,网上资源很多,大家自行查阅资料进行学习。
位置式PID
位置式PID的输出与和整个过去的状态有关,由于积分器的累计作用,将会产生更大的累计误差。位置是PID的输出直接对应对象的输出,因此对系统的影响可能更大些。对于做智能车的小伙伴来说,位置式PID更适合于舵机控制(方向控制)效果较好。
增量式PID
增量式PID的输出,只有当前拍和前两拍的误差有关,因此,相较于位置式PID累误差较小,增量式PID无积分作用,同时,增量式PID输出的时控制量的增量,因此,如果执行机构出现问题,对系统的影响较小。对于做智能车的小伙伴来说,增量式PID更适合于电机控制(速度控制)效果最好。
总结
到此为止,一个简单易懂的PID已经介绍完了,下一章将以
具体的算法展开来介绍PID代码的实现。
各位如果想讨论,或想咨询,请给联系本人。