PID为比例(Proportion)、积分(Integral)、微分(Differential coefficient)的缩写。
PID算法一般用于电机控制,控制运动的速度,以达实际目标向期望目标靠近,并趋于平衡。
PID算法有三个参数,Kp、Ki、Kd。
- Kp作用于系统的响应速度。Kp用于反应期望目标与实际目标的差值在算法输出中的比重。
- Ki作用于消除系统的静差,即消除在Kp的作用下,运动物体受力平衡相对静止后,实际目标与期望目标的差值。Ki用于反应期望目标与实际目标的差值的累加值在算法输出中的比重。
- Kd作用于系统的响应趋势,抵消Kp与Ki带来的运动震荡,但Kd设置的值过大时,Kd自身也会导致运动震荡,Kd引起的运动震荡成为系统过充。kd用于反应前后差值在算法输出中的比重。
对于Ki,有积分限幅与积分分离的算法,用于消除Ki对系统的过度影响。
- 积分限幅用于防止Ki作用下的输出过大,导致系统运动震荡过强
- 积分分离用于防止Ki作用下的输出过小,导致系统产生微不足道且不必要的调节
PID算法需要输入与输出,形成闭环回路,每一次算法的输出,都用于调节系统的运动状态,并在此后或许系统的运动状态作为下一次算法的输入。
例如无人机的高度,将当前高度作为输入,计算出与实际高度的偏差,通过PID算法计算出无人机需要的升力,进而计算出控制无人机螺旋桨的电机所需要的转速,进而计算出PWM所需要的占空比。