使用 arduino 之后的 PID 行

PID line following using arduino

为什么我们在代码后面的 PID 行中添加所有错误?我无法正确理解答案。 公式: total_error = int(kp* 比例 + ki* 积分 + kd * 导数)

比例项给出与当前误差值成比例的值。积分误差增加了一个误差量,该误差量与误差的大小和持续时间成正比。导数误差是特定时间误差随时间变化的斜率。它们都相互作用,为PID算法提供输出值。

将这些全部加在一起的原因是,当优化项中的各种增益 (K) 值时,如果可能稳定,您将在给定系统中获得最佳调谐、最稳定的响应。但正如任何消息来源都会告诉您的那样,PID 调整可能是一个难题,因为这些错误会随着时间和系统的变化而异相发生,并且会随着时间和系统的变化而动态变化,所有这些都会及时相互作用。它们被设计为加在一起创建一个封闭形式的方程,可以用不同的增益值进行优化。

有大量关于这些如何相互作用的信息。你可以在维基百科上得到很好的介绍。此伪代码和来自维基百科的随附描述演示了下一个输出在算法中的位置,通过添加错误:

previous_error = 0
integral = 0
loop:
  error = setpoint - measured_value
  integral = integral + error*dt
  derivative = (error - previous_error)/dt
  output = Kp*error + Ki*integral + Kd*derivative
  previous_error = error
  wait(dt)
  goto loop