平衡机器人PID调整

时间:2013-05-21 07:22:34

标签: c++ arduino robot pid-controller

我正在努力构建一个两轮平衡机器人。我已经将所有硬件构建并组合在一起,我认为我也编写了它。我正在使用带有陀螺仪和加速度计的IMU,通过互补滤波器找到我的倾斜角度,以平滑信号。来自IMU的输入信号看起来非常平滑,如小于0.7方差+或 - 实际倾斜角度。

我的IMU采样率为50 Hz,我也在50 Hz进行PID计算,我认为应该足够快。

基本上,我正在使用 PID Library 中的PID库。

当我将P值设置为低值时,车轮朝向正确的方向。

当我将P值设置为大的值时,我得到一个类似于图形的输出。

Enter image description here

4 个答案:

答案 0 :(得分:1)

从图表看起来您的系统不稳定。 我希望您在直接进行调整之前已经测试过机器人的每个子系统。这意味着传感器和执行器都能正确响应并且具有可接受的误差。一旦每个子系统都适当地校准外部错误。你可以开始调整。 一旦完成这个你可以从P的有效值开始可能是(0.5)首先达到正确的响应时间,你需要在这里做一些试验,它们慢慢递增我以减少稳态错误(如果有的话)并且仅在使用D时要求(在振荡的情况下)。 我建议逐个处理P,I和D,而不是一次调整所有。 此外,在测试过程中,您需要持续监控传感器和执行器数据,看它们是否在可接受的范围内。

答案 1 :(得分:1)

正如普拉克斯写的那样,你的系统看起来好像不稳定或者可能稍微稳定。

一般情况下,两轮机器人很难控制,因为它们在没有控制器的情况下本质上是不稳定的。

我个人会先尝试一个PD控制器,如果你有设定点精度问题,我会使用一个PID,但请记住,如果你想在你的控制器(D部分)中有一个差分增益,那就非常重要的是你有一个非常平稳的信号。

此外,控制器的值很大程度上取决于您的硬件设置(机器人的重量和重量分布,电机系数和电压水平)以及软件内部用于控制信号的单位(例如mV V,度/弧度)。这意味着任何人都几乎不可能为你猜出正确的参数。

控制工程师可以做的是制作机器人的数学模型并分析极点/零点位置。

如果您对控制理论有任何经验,可以查看以下论文,看看它是否对您有意义。

http://dspace.mit.edu/bitstream/handle/1721.1/69500/775672333.pdf

答案 2 :(得分:1)

PID调整有很多启发式规则,但是大多数人没有意识到,PID调整不应该是一个启发式过程,而应该基于数学和科学。

@Sigurd V说的是正确的:“控制工程师可以做的就是建立数学模型……”,这可能会变得很复杂。但是如今,有很多软件工具可以帮助您自动化所有数学运算,并非常轻松地获得所需的PID增益。

假设所有硬件都处于良好状态,则可以使用PidTuner之类的免费在线工具来输入数据,并接近最佳PID增益。我亲自使用它并取得了良好的效果。以这些为起点,然后根据需要手动进行调整。

答案 3 :(得分:0)

如果您还没有,我建议您搜索条件Arduino PID(显而易见的建议,但很多人都在这条路上)。我记得在编写PID库的时候,作者发布了很多教程等等(example)。我也遇到了这个PIDAutotuneLibrary

我编写了自己的PID例程,但也有一点时间调整,从来没有完全正确。