如图所示
PID算法就是由比例算法,积分算法,微分算法构成的一个反馈系统。
它们的关系可以表示为:
其中:
1、Kp :比例系数;
2、Ki :积分系数;
3、Kd :微分系数;
4、t :时间;
5、e :误差;
PID算法各部分的作用:
例如:将车辆从停止开始加速到59迈,然后保持不变。e(t) = 期望值-实际值;
比例算法:Kp*e(t);只要车速未达到50迈,比例算法就一直起作用,使车子一直加速,这样就能达到50迈了。但又会有新的问题随之出现,汽车的功率没法精准控制,不可能刚刚好加速到50迈就停止加速,也就是汽车加速的惯性还会使温度继续升高。当温度超过50摄氏度时,比例算法又变成了负反馈就会导致车速下降,最后的效果就是车子在50迈左右狂抖。
如图:
加入比例算法后,误差值会在0附近摆动,很难控制,Kp值越大,这种状态就越难以消除
微分算法:Kd*de(t)/dt;即对速度变化曲线求导,预测速度变化趋势,再通过反馈削弱这种趋势,即类似于阻尼的作用。当速度越接近50迈时,由于微分算法的作用速度变化会越温柔,逐渐靠经50迈。而当车子遇到上坡时,在重力作用下车速又开始下降,比例算法又开始起作用了,但当比例算法产生的加速度作用和重力作用产生的加速度相等时又会出现什么情况呢?
这时候:
P兄会想:我与目标很近了,只需要轻微加速就行了(即,误差不大导致Kp*e(t)不大)
D兄会想:加速和减速效果相等,速度没有波动,我好像没什么用(即,e(t)保持不变,误差曲线的斜率为零,Kd * de(t)/dt = 0)
效果如图:
积分算法:;即对误差进行积分,只要误差一直存在,积分算法就会像滚雪球一样越滚越大,这样一来45迈就会缓慢增长到50迈,等到达50迈,比例算法为0,积分算法不再变化,这时积分算法产生的加速度就等于重力产生的加速度,车速就维持在了50迈。而当地势平坦的时候,积分算法还存在,就会导致速度又开始增大,这时比例算法就开始中和积分算法产生的加速度,而微分算法开始抵制误差的变化。三者共同作用使速度稳稳地保持在50迈。
最终效果如图:
要使PID算法效果达到最好,需要通过调试,找到Kp、Ki、Kd的最佳值。
调试PID参数对系统的影响: