创建默认PID控制器
derivative = (previous - error) / dtintegral += ((error + previous) / 2) * dtkp 比例增益系数ki 积分增益系数kd 微分增益系数创建带积分衰减的PID控制器
integral *= integral_decay_factorintegral += ((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) * dtintegral = 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) * dtintegral_separation_error_threshold_lower 积分分离下限,当 target - actual 大于这个值integral_separation_error_threshold_upper 积分分离上限,当 target - actual 小于这个值创建带积分滑动窗口的PID控制器(积分定长时间 t0 = finite_time)
finite_time 积分定长时间(从当前往前积分 finite_time)单位为秒