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

评论

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

#1 楼

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

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

手动调整增益:
假设倾斜角度,位置/速度和车轮扭矩都向前(如果为正),您希望倾斜角和倾斜率获得正增益,位置和速度获得正增益。和倾斜率。这将使它最初保持平衡。一旦保持平衡,就可以通过增加增益来控制位置和速度。如果不稳定,请增加倾斜率的增益(这有助于阻尼系统)。
位置/速度控制将两种状态都控制为零。要控制其他值,您只需要一个参考跟踪控制器即可,在将状态输入错误之前将其状态替换为错误(例如当前速度-速度参考)。添加到主平衡/速度/位置控制器的车轮扭矩差异)。

#2 楼

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

#3 楼

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

几年前,我用它来控制基于里程表的两轮Lego Mindstorm机器人,它的工作原理足够好。
要使其移动,您将需要按设定值进行操作。

当然,以后可以提高控制器的质量(稳定性,鲁棒性等)。 。)使用前面提到的LQR等更高级的控制律。

祝你好运!