我在我高中的FIRST机器人团队工作,我们正在开发一个奇异果驱动机器人,其中有三个omni wheels安装在一个等边三角形的配置中,就像这样:

问题是对机器人进行编程,以驱动电机,使机器人沿着给定的操纵杆输入的方向移动。例如,要“向上”移动,马达1和马达2将同等供电,而马达3将关闭。操纵杆的位置是以矢量的形式给出的,我在想,如果电机也以矢量的形式表示,那么vector projection可能就是我需要的。然而,我不确定这是否正确,如果它是正确的,我将如何应用它。我也有一种感觉,一个操纵杆的位置可能有多种解决方案。任何帮助都将不胜感激。
发布于 2010-09-29 19:03:55
我在学校的时候造了9个机器人(1个FIRST,8个RoboCup)。我们使用了和你一样的全能布局。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输入和输出到motors O来应用它。因此,O = M * I;
M = [(-0.5 -sqrt(3)/2 +1)
(-0.5 +sqrt(3)/2 +1)
(1 0 +1)]发布于 2011-04-20 12:30:24
虽然这个系统可以用数学方法解决,但在2002年,FIRST Team 857选择了机械地解决它。我们的控制系统使用了三个操纵杆,它们的X轴形成了一个等边三角形,手柄换成了与Y型轭连接的球窝手臂。将每个操纵杆的X轴直接映射到电机速度,控制系统就解决了。作为一个优势,这个系统对于外行来说非常直观--向你想要去的方向推动轭,旋转它来转动。
发布于 2010-09-20 09:34:11
正如您已经认识到的,第一部分将是找到适当的方程式来表示任何电机设置的结果运动。根据你对马达速度的控制水平和反馈,我建议你彻底的过程应该从写一个向量方程开始:(将正X定义为直线前进)
-M1Cos(30)+M2Cos(30)=X (负数是因为1和2的功率必须相同,但向前运动的极性相反)
M1Sin(30)+M2Sin(30)-M3 =Y(因为在1和2上逆时针运动将导致机器人在Y方向上向左移动,而在3上逆时针运动将导致机器人向右移动)
您需要添加的另一个输入是机器人的期望旋转,谢天谢地,M1+M2+M3 =W(旋转速度)
你的操纵杆输入将给你X,Y和W,所以你有3个方程和3个未知数。
从这里开始,它是联立方程,所以你可能会得到多个解,但这些解通常可以根据可能的电机速度等进行限制。
rec::robotino::com::OmniDrive Class就是一个例子--这个方法的源代码也是可用的……
https://stackoverflow.com/questions/3748037
复制相似问题