小车偏右时 KI 累加正积分,回正后积分残余继续往左推,导致过头和振荡。这是积分滞后问题。
1. 误差变号清零
误差符号翻转时把积分清零,砍掉旧方向的残余量。
2. 积分限幅
给积分设上下限,防止单方向累积过大。
3. 积分分离
误差大时不累加积分,只在误差小于阈值时启用 KI。
调参顺序: 先调好 KP、KD 让车稳定回正,再加入 KI 消除残余偏差。连续弯道多的话,把变号清零改成"误差接近零时清零",避免积分频繁被清掉。
图片中程序所提到的变量的含义:
error:当前误差,等于期望位置减去实际位置last_error:上一次误差
target:期望位置(赛道中线)
position:小车实际位置
integral:积分项累积值
ki:积分系数
kp:比例系数
kd:微分系数
output:最终输出(舵机转角或电机差速)
integral_max:积分限幅上限
integral_threshold:积分分离阈值,误差绝对值小于该值时才累加积分