目录
一、楔子
传统PID,抗饱和基础办法为在末端做限幅,这种方法只是对最终输出做了限制,虽然不伤执行器,但因为不能使积分模块很快退出饱和状态,末端输出会较长时间保持在峰值,动能输出很大,而且不是正常的控制过程;
再者对积分模块加限幅,本质其实和上述一样。
作者才疏学浅,最近在Apollo里见到了正经八百的PID积分抗饱和策略,做个笔记。
位置:apollo-master\modules\control\common
文件夹下有传统pid_controller、反算积分抗饱和pid_BC_controller、钳位法积分抗饱和pid_IC_controller。
Apollo的PID控制用在速度控制和转向控制。
二、BC
抗饱和,英文anti windup,简称aw或AW。
反算法的几个步骤:
- 首先计算一次完整PID得到初始控制量u;
- 然后根据PID输出饱和值判定是否对u做钳位;
- 根据钳位规则对积分项做修正;
- 用修正后的积分项重新计算PID;
- 输出钳位,结束。
根据结果“反”回去重新计算了PID,所以称之为反算,backward。
感谢大神的分享:
PID的积分抗饱和_pingxiaozhao的博客-CSDN博客_积分抗饱和
三、IC
钳位法也称为条件积分,简单方便,使用更加广泛。
条件嘛,if-else,满足条件就用不满足就不用,简单粗暴。
原理是对积分值进行限定,即系统误差过大时本来P就很大,积分也容易变大甚至饱和,所以干脆停止积分。
- 首先计算一次完整PID得到初始控制量u;
- 若u超出PID饱和限度且与error同向,则本次积分过大,取消其作用一次;
- 后续按常规PID执行。
感谢大神分享: