我应该使用什么算法来平衡使用陀螺仪的两轮机器人?


25

我是否可以通过从陀螺仪获取输入并使用它来控制两个独立的车轮以使这种平衡的机器人可靠地直立来使用一种良好,通用且可靠的算法?我正在寻找一种算法,可以让我用它来驱动机器人,并在静止时保持直立。处理斜坡和轻推它的人的能力也是一种奖励,但不是必需的。


我也将为此工作。您必须使用卡尔曼过滤器来过滤原始数据。并使用PID算法对其进行调整。
Huzo

Answers:


16

最简单的控制器是线性状态反馈控制器。您实际上需要获得4种不同的状态。这些是倾斜角度,倾斜速率,速度和位置。


LQR(线性二次调节器)是一种设计这些增益的方法(在获得系统的线性化状态空间表示之后)。如果没有状态空间表示(可能没有),则可以获取运动方程并测量参数。如果没有状态空间表示,则应手动调整增益(不使用LQR或其他方法,如极点放置)。


手动调整增益:

假设倾角,位置/速度和车轮扭矩都向前(如果为正),则您希望倾角和倾角率获得正增益,而位置和速度也获得正增益。

首先要获得倾斜角和倾斜率。这将使它最初保持平衡。一旦保持平衡,就可以通过增加增益来控制位置和速度。如果不稳定,请增加倾斜速率的增益(这有助于阻尼系统)。

位置/速度控制将两种状态都控制为零。要控制其他值,您只需要一个参考跟踪控制器即可,在将状态输入错误之前将其状态替换为它们的错误(例如,当前速度-速度参考)。

偏航控制可以独立进行(将车轮扭矩的差异添加到主平衡/速度/位置控制器中)。


9

我认为,最常见的解决方案是LQR控制器。您要解决的问题是倒立摆问题。使用这些关键字,您应该能够使用Google某人的开源代码。下一个问题是将大多数相关的物理量映射到您的应用程序(重量,电机转矩等)。


5

由于我不了解您在控制工程/理论方面的技能,因此建议您从PID控制器开始。它是一个简单的控制器,您会发现它的许多代码实现。PID的缺点是您可能最终将花费一些时间来手动调整参数。

几年前,我基于它的里程表,使用它来控制两轮Lego Mindstorm机器人,并且效果很好。为了使其移动,您将需要使用设定点。

当然,以后您可以通过使用更高级的控制规则(例如前面提到的LQR)来提高控制器的质量(稳定性,鲁棒性等)。

祝好运!

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.