所以我正在与Arduino Mega一起开发自平衡机器人。我使用的是内置840 PPR正交编码器的12V 200 RPM电动机。扭矩等级如下:

额定扭矩:2.4 Kg-cm
堵转扭矩:6 Kg-cm

到目前为止,我已经实现了一个简单的方法PID控制器(基于Brett Beauregard的PID库)可最大程度地减小倾斜角度误差。仍然没有使用编码器来实现PID来解决位置误差。

我已经做了很多尝试来调整PID值。机器人站立时非常稳定。但是,这里的问题是,当机器人从其稳定位置倾斜大于7-8度的角度(或略微推动)时,电机开始以最大速度旋转(PWM:255),而机器人仍然没有似乎并没有恢复过来,只是继续运行,然后最终朝其移动的方向掉落。它似乎根本无法恢复。

PID调整只是问题吗?就像我之前说的,它在-5到+5度(0度是直立位置)的范围内保持稳定,并且没有太大的波动。但是,如果超过7度,则无法恢复。

还是机器人太重且反电动势不足而导致的问题?机器人(包括电机)的总重量约为1 kg。我正在使用2200 mAh锂电池,并将其置于最高位置,以减小角加速度。

对编码器实施PID反馈是否也可以解决此问题?还要建议一些有关如何使用IMU和编码器实现双PID校正倾斜角度和位置的链接。我打算使用级联PID控制器,在该控制器中,编码器PID会测量位置误差,其输出将是角度PID回路的设定点,而角度PID回路又将控制电动机的PWM。因此,如果位置存在偏移,则角度设定点将更改为-2度(从垂直0度开始)。因此,现在角度PID将使机器人运动以校正角度偏移,因此位置误差也得到了校正。这是一个好方法。还有其他建议或其他方法吗?

#1 楼

我从自平衡机器人的丰富经验中得到的一个提示就是:


自平衡机器人最重要的方面是执行器加速度(转矩)控制。


(...)电动机开始以最大速度旋转(PWM:255),机器人似乎仍无法恢复原状,只是继续运行,然后最终朝原本的方向掉落。移动。它似乎根本无法恢复。


由于平衡,机器人需要改变速度,即加速度(由电动机转矩产生)。如果电动机饱和,则控件将无法执行平衡动作:加速以移动质心。此外,倾斜角与所需电动机加速度之间的关系不是线性的。例如,从5度恢复,可能需要电动机0.1 Nm,从7度恢复,可能需要1.0 Nm


对编码器实施PID反馈是否也可以解决此问题? br />

您绝对应该具有用于​​电机控制的PID。您如何确定电动机正在执行平衡PID所要求的速度/转矩?


我打算使用级联PID控制器,其中编码器PID测量位置误差其输出将是角度PID回路的设定点,该回路将控制电动机的PWM。


很高兴,看起来不错!看到类似的问题:自平衡机器人控制系统策略

评论


$ \ begingroup $
出于好奇,如何测试电动机是否执行了要求的转矩/速度?唯一真正能够在运动中自由测量的是电动机上的电压和电流。有实验方法可以做到这一点吗?如果是这样,请详细说明。
$ \ endgroup $
– Paul
17年1月12日,19:35



$ \ begingroup $
我不精通电力电子。但是,通过摆弄一些电动机控制库,我了解到,通过具有特征化的电动机模型,您可以从施加的电压,电流和定子速度估算出产生的转矩。参见无刷电机的磁场定向控制案例。
$ \ endgroup $
–vmatos
17年1月13日在9:57



$ \ begingroup $
@Paul对于速度非常容易。只需将编码器安装到电机轴上即可。
$ \ endgroup $
–vmatos
17年1月13日在9:59