PID算法由P、I和D三种算法组成,可以进行不同的组合来达到不同的控制效果。
P算法:
I算法:
D算法:
P算法的作用是减小测量值和理论值之间的误差,让测量值不断接近理论值。
I算法的作用是消除稳态误差。当系统误差接近0时,P的输出会很小,起不到继续减小误差的作用,导致误差始终没办法减小到0.这个时候就需要用到i算法,让误差值不断累加,并将累加后的值1输出。
D算法的作用是“阻尼”。如果系统误差很大或P参数较大,那么P的输出就会很大,导致系统剧烈响应,出现过冲现象,此时就需要用到d算法来抑制,让系统可以刚好停在理论值而不不过冲。
从数学表达式到代码:
int PID_value(float measure,float calcu)
{
err = measure - calcu; //误差
err_sum += err; //误差的累加
I_xianfu(2000);
err_difference = err - last_err; //误差的差值
last_err = err; //此次误差记录为“上次误差”
return Kp*err + Kierr_sum + Kd*err_difference; //结果
}
在小车上通常使用速度环PI算法和转向环PD算法。