首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何控制几维鸟驾驶机器人?

如何控制几维鸟驾驶机器人?
EN

Stack Overflow用户
提问于 2010-09-20 08:26:25
回答 3查看 5.2K关注 0票数 8

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

问题是对机器人进行编程,以驱动电机,使机器人沿着给定的操纵杆输入的方向移动。例如,要“向上”移动,马达1和马达2将同等供电,而马达3将关闭。操纵杆的位置是以矢量的形式给出的,我在想,如果电机也以矢量的形式表示,那么vector projection可能就是我需要的。然而,我不确定这是否正确,如果它是正确的,我将如何应用它。我也有一种感觉,一个操纵杆的位置可能有多种解决方案。任何帮助都将不胜感激。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2010-09-29 19:03:55

我在学校的时候造了9个机器人(1个FIRST,8个RoboCup)。我们使用了和你一样的全能布局。Beta的答案看起来是正确的,但是在之后给所有的轮子添加了旋转

代码语言:javascript
运行
复制
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

代码语言:javascript
运行
复制
M = [(-0.5 -sqrt(3)/2    +1)
     (-0.5 +sqrt(3)/2    +1)
     (1     0            +1)]
票数 4
EN

Stack Overflow用户

发布于 2011-04-20 12:30:24

虽然这个系统可以用数学方法解决,但在2002年,FIRST Team 857选择了机械地解决它。我们的控制系统使用了三个操纵杆,它们的X轴形成了一个等边三角形,手柄换成了与Y型轭连接的球窝手臂。将每个操纵杆的X轴直接映射到电机速度,控制系统就解决了。作为一个优势,这个系统对于外行来说非常直观--向你想要去的方向推动轭,旋转它来转动。

票数 2
EN

Stack Overflow用户

发布于 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就是一个例子--这个方法的源代码也是可用的……

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3748037

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档