创建默认PID控制器
derivative = (previous - error) / dt
integral += ((error + previous) / 2) * dt
kp
比例增益系数ki
积分增益系数kd
微分增益系数创建带积分衰减的PID控制器
integral *= integral_decay_factor
integral += ((error + previous) / 2) * dt
积分最大值将变为原来的 1 / (1 - integral_decay_factor)
,可能存在恒定误差
integral_decay_factor
积分衰减因子
integral_decay_factor = 1
则完全不会衰减integral_decay_factor = 0
则不积分创建带积分限幅的PID控制器
integral += ((error + previous) / 2) * dt
integral = clamp(integral, integral_clamp_bound_min, integral_clamp_bound_max)
如果 integral_clamp_bound_max
设置的过小,将会造成不能达到目标
integral_clamp_bound_min
积分最小值integral_clamp_bound_max
积分最大值
min
must less than max
创建带积分分离的PID控制器
if (lower < error && error < upper) integral += ((error + previous) / 2) * dt
integral_separation_error_threshold_lower
积分分离下限,当 target - actual
大于这个值integral_separation_error_threshold_upper
积分分离上限,当 target - actual
小于这个值创建带积分滑动窗口的PID控制器(积分定长时间 t0 = finite_time
)
finite_time
积分定长时间(从当前往前积分 finite_time
)单位为秒