当参数(Kp、Ki 和 Kd)单独增加时,PID 控制器对差动驱动机器人的影响。 【全Q写在下面】

PID controller affect on a differential driving robot when the parameters (Kp, Ki, and Kd) are increased individually. [full Q written below]

问题:一个 PID 控制器有三个参数 Kp、Ki 和 Kd,它们会影响输出性能。差速驱动机器人由 PID 控制器控制。航向信息由罗盘传感器感测。前进速度保持恒定。 PID 控制器能够控制航向信息以遵循给定的方向。解释当三个参数单独增加时差分驱动机器人性能的结果。

这个问题在过去的论文中出现过,但今年很可能不会出现,但它仍然让我担心。这是唯一让我思考了很长时间的问题。我喜欢简单的答案。我在互联网上阅读的大多数内容对我来说都没有多大意义,因为它们对我的案例来说太过详细和离题了。

我对此的看法:

我知道 比例 项 Kp 完全基于误差,假设误差加倍意味着 Kp 加倍(应用比例力)。因此,这意味着增加 Kp 是机器人朝错误方向前进的结果,因此增加 Kp 以确保机器人朝正确的方向前进,或者至少尝试随着时间的推移减少误差,因此 Kp 的增加会影响机器人以这种方式调整机器人的航向,使其保持在正确的路径上。

导数 项 Kd 基于误差的变化率,因此 Kd 的增加意味着误差的变化率随时间增加,因此翻倍这个错误会导致双倍的力量。如果机器人的航向与之前的反馈结果相比误差加倍,则机器人航向的变化将增加一倍。随着错误的增加,Kd 使机器人反应更快。

积分 项 Ki 的增加意味着误差随时间增加。积分说明了随时间推移的误差总和。即使误差的小幅增加也会增加积分,因此机器人必须朝正确的方向前进相同的时间才能使积分平衡为零。

我希望能得到更好的答案,如果能在决赛中对即将到来的类似问题充满信心,那就太好了。

旁注:我之前在机器人部分发布了这个问题,但看到那里的问题几乎没有人注意到,我也把它发布在这里。

我强烈推荐阅读这篇文章 PID Without a PhD 它提供了很好的解释以及一些实现细节。最好的部分是众多的图表。它们向您展示了在保持其他项不变的情况下更改 P、I 或 D 项的效果。

如果你想要真实世界的应用程序,Atmel 在他们的网站上提供了示例代码(适用于 8 位 MCU),可以完美地反映 PID,而无需 PhD 文章。它完全遵循 AVR 网站上的这段代码(他们在 Arduino UNO 板上制作了 ATMega32p 微控制器芯片)PDF explanation and Atmel Code in C

但这是我理解的一般解释。

正比:这是误差和目标之间的正比关系。像 Pk(target - actual) 之类的东西它只是错误的比例因子。它决定系统应对错误做出反应的速度(如果有帮助,您可以将其视为放大器转换率)。较大的值将快速尝试修复错误,而较慢的值将花费更长的时间。但是,使用更高的值,我们会进入过冲状态,这就是下一项发挥作用的地方

积分:这是为了弥补过去的错误。事实上,它是所有过去错误的总和。这对于诸如比例控制器无法自行修复的小 dc/constant 偏移量之类的事情通常很有用。想象一下,您将阶跃输入设为 1,一段时间后输出稳定在 0.9,并且很明显它不会去任何地方。积分部分会看到这个误差总是 ~.1 太小,所以它会把它加回去,希望能使控制更接近 1。这一项通常有助于稳定响应曲线。由于它被占用了很长一段时间,它应该减少噪音和任何快速变化(比如在 overshoot/ringing 条件下发现的那些)。因为它是聚合的,所以它是一个非常敏感的度量,与其他术语相比通常非常小。较低的值会使变化发生得非常缓慢,并产生非常平滑的响应(这也会导致 "wind-up" 参见文章)

导数: 这应该占 "future"。它使用最近样本的斜率。记住这是斜率,它与位置误差无关(current-goal),它是previous measured position - current measured position。这对噪声最敏感,当它太高时通常会导致振铃。更高的值鼓励改变,因为我们正在“放大”斜率。

希望对您有所帮助。也许其他人可以提供另一种观点,但我通常是这样想的。