如何控制猕猴桃驱动机器人?

时间:2010-09-20 00:26:25

标签: language-agnostic math vector robotics

我在我高中的FIRST机器人团队,我们正在开发一个奇异果驱动机器人,其中有三个omni wheels安装在等边三角形配置中,如下所示:

three numbered omni wheels in an equilateral triangle configuration

问题是编程机器人以驱动电机,使机器人朝给定操纵杆输入的方向移动。例如,为了“向上”移动,电动机1和2将被均等地供电,而电动机3将被关闭。操纵杆位置作为矢量给出,我想如果电机也表示为矢量,vector projection可能就是我需要的。但是,我不确定这是否正确,如果是,我将如何应用它。我也有一种感觉,一个操纵杆位置可能有多种解决方案。任何帮助将不胜感激。

4 个答案:

答案 0 :(得分:4)

我在学校期间建造了9个机器人(1个FIRST,8个RoboCup)。我们使用了与您相同的omnidrive布局。 Beta的答案看起来是正确的,但之后向所有车轮添加旋转

W1 = -1/2 X - sqrt(3)/2 Y + R 
W2 = -1/2 X + sqrt(3)/2 Y + R
W3 = X + R

[这是Beta的公式,其中添加了一些旋转]

您需要考虑电机的可用范围。我猜它可以采用+/- 255的PWM信号,因此输入或输出必须稍微调整一下。 (这并不难......)

A good paper with details

要回答您的具体问题:向量投影基本上就是您在这里所做的。您可以通过矩阵 M ,来自操纵杆 I 的输入和输出到 O 的电机来应用它。因此 O = M * ;

M = [(-0.5 -sqrt(3)/2    +1)
     (-0.5 +sqrt(3)/2    +1)
     (1     0            +1)]

答案 1 :(得分:2)

首先让我们定义一些术语。按照惯例,X轴将指向右侧,y轴将指向上方(以便车轮3的推力沿X轴)。我们将轮子的运动称为W 1 ,W 2 和W 3 ,每个都被定义为W i > 0表示车轮沿顺时针方向旋转。在您的示例中,如果W 1 < 0,W 2 = W 1 且W 3 = 0,机器人将沿+ Y方向移动。

如果所有三个车轮以相同的速率旋转(W 1 = W 2 = W 3 ),机器人将旋转到位。我猜你不想那样,所以旋转的总和必须为零:W 1 + W 2 + W 3 < / sub> = 0

每个车轮的运动都有助于机器人的运动;他们添加为矢量:
W 1 = -1/2 X - sqrt(3)/ 2 Y
W 2 = -1/2 X + sqrt(3)/ 2 Y
W 3 = X

因此,如果您知道操纵杆中所需的X和Y,则W 1 ,W 2 和W 3 。正如我们已经看到的,W 1 和W 2 之间的差异是驱动Y运动的原因。他们的 sum 在X中驱动运动。

答案 2 :(得分:1)

正如您已经认识到的那样,第一部分将是找到一个合适的公式来表示任何电机设置的合成运动。根据您对电机速度的控制和反馈水平,我建议您进行彻底的处理应从编写矢量方程式开始:(将正X定义为直线前进)

-M1Cos(30)+ M2Cos(30)= X(负数是因为1和2必须为相同的幅度供电,但向前运动的极性相反)

M1Sin(30)+ M2Sin(30)-M3 = Y(因为1和2上的逆时针运动将导致机器人在Y中向左移动并且3上的逆时针运动将导致机器人向右移动)< / p>

您需要添加的另一个输入是机器人所需的旋转,谢天谢地,M1 + M2 + M3 = W(旋转速度)

你的操纵杆输入会给你X,Y和W,所以你有3个方程,有3个未知数。

从这里开始,它是联立方程式,因此您可能会得到多种解决方案,但这些解决方案通常可以根据可能的电机速度等进行限制。

这方面的一个例子是rec::robotino::com::OmniDrive Class - 此方法的源代码也可用...

答案 3 :(得分:1)

尽管该系统可以通过数学方法解决,但在2002年,FIRST Team 857选择了机械解决方案。我们的控制系统使用了三个安装有X轴的操纵杆,形成一个等边三角形,把手更换为与Y形轭连接的球窝臂。将每根木棍的X轴直接映射到电机速度,控制系统已经解决。作为一个优势,这个系统对于非专业人士来说非常直观 - 将轭推向你想去的方向,旋转它转动。