对PID算法的了解 一.PID定义PID比例-积分-微分算法是基于误差反馈调控的一种算法。误差目标值-实际值二.PID公式Kp、Ki、Kd分别为比例、积分、微分参数在我的理解中就是代表现在过去和未来。Kp是对当前偏差瞬间作出反应就像我们的 ykx 函数当k增大时响应很快控制作用越强控制过程中的静态偏差就越小但是比例系数增大就会产生震荡且无法彻底消除稳态误差。所以Kp并不是越大越好要选择合适的系数达到偏差小并且稳定的效果。Ki则是对过往的一切进行积分累加说明过去的所有偏差都对当下有影响。只要有误差控制就会不断增强只有当误差error(t)0的时候误差积分是一个常数控制作用才是一个不会增加的常数。所以积分可以消除误差。但是会产生滞后性降低系统的响应速度。积分Ki越大积分的积累作用越强消除误差的速度就会快增大超调量引发了震荡降低了系统的稳定性。因此Ki需要在消除静差和防止超调之间取得平衡。解释为什么积分可以消除误差我们来举一个例子我们要把无人机升到10米处的高空但是目前到了8米error2。P是误差越大给的升力越大但是当上升到9.9米的时候error0.1,P给的额外的升力就会变得很小。无人机自身有重力它必须有一个基础升力才能不往下掉。如果P给的额外升力小于维持重力的需求无人机就永远卡在9.9米再也上不去了。这个永远消除不掉的0.1米差距就是静态误差。I就像一个记账本子把之前每一秒的误差都要加起来只要无人机没到10米误差没归零这个累加和就会像滚雪球一样越来越大。直到积分项累积的力量足以弥补P项缺失的升力无人机最终到达10米误差归零。所以说积分能消除静态误差靠的不是“瞬间大力出奇迹”而是“积少成多攒够力量”。Kd则是对未来的调节根据误差的变化趋势斜率进行预判它不取决于误差的大小而取决于误差变化的快慢。提前预估偏差的趋势在误差尚未变得过大或系统即将冲过目标时提前施加反向控制力相当于“刹车”。有效抑制超调量减小系统震荡缩短系统的稳定时间提高系统的动态稳定性。注意Kd对测量噪声非常敏感。如果传感器信号波动剧烈过大的 Kd 反而会放大噪声导致执行机构频繁抖动因此在实际应用中需谨慎调节或先对信号进行滤波处理。四.为什么PID被广泛应用在纵向速度控制呢PID之所以被广泛应用于纵向速度控制是因为纵向速度系统在工程上常被近似为一个“单输入单输出、带有明显惯性且存在持续外部干扰”的系统而PID的“现在-过去-未来”三重机制恰好能完美应对这种场景下的三大核心痛点。举一个例子来看哈!纵向速度踩油门加速或踩刹车减速有一个很直观的特点油门开度控制量和速度被控量之间存在直接的、近乎线性的积分关系。你给多少油车就产生多少加速度加速度积分就变成速度。P的作用当前车速是100km/h目标是120km/h误差是20。P根据这个“现在的差距”直接决定踩多大油门。误差大就深踩误差小就浅踩。这种“直来直去”的特性让P在纵向速度控制中起到了绝对的骨干作用。汽车在行驶中面临的干扰是持续不断的上坡时重力沿坡道的分力让车变重持续阻力下坡时重力让车加速持续动力刮大风、路面变粗糙持续变化的阻力。如果没有I积分当车上坡时速度掉到95km/hP因为误差变大给了更多油。但当速度回到100km/h时误差变小P给的油又缩回去了。结果车子永远上不去坡速度永远卡在98km/h——这就是静态误差。有了I过去积分器会记下“刚才上坡时我多给了油才稳住”的账把这个额外的油门深度永久保存在输出里。这样即使误差为0车子依然带着足够的油门对抗坡道重力。所以纵向速度控制必须靠I来抵抗各种路面坡度带来的长期稳态误差。如果只有P和I当速度接近120km/h时如果I作用过强车子会“冲过头”到125km/h然后系统又猛收油降到115km/h来回晃荡。这在工程上叫“窜车”和“顿挫”乘客会晕车。D的作用当系统发现误差正在以极快的速度缩小即车速正在猛烈逼近120km/h时D会提前预判在没到120之前就开始缓慢松油门。这种“提前收油”的动作把硬邦邦的阶跃响应变成了平滑的S型曲线极大地提升了乘坐质感。以上是我对PID的理解还有一个开环闭环反馈和前馈的区分没有梳理下次在补充。