首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何将机器人手臂围成一个圆圈

如何将机器人手臂围成一个圆圈
EN

Stack Overflow用户
提问于 2022-10-14 02:58:38
回答 1查看 35关注 0票数 0

我有一个6关节的机器人手臂,我想把它移动成一个圆圈。我想要参数来选择圆的半径、度和分辨率/质量。

我该怎么做?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-10-14 02:58:38

快速三角审查:

低音与三角形的直角相对。

高度与次音之比称为正弦。

基座与次音之比称为余弦。

生成圆的(x,y)坐标

圆心在点(0,0)处。圆的半径为1,从x轴开始测量角度.如果我们从点(0,0)在x轴的角度a上画一条线,这条线将在点P处相交。

要生成一个圆的坐标,让我们从一个小例子开始。我们将使用r来表示圆的半径,a表示从x轴开始的角度。

让我们从以下五个角度开始: 0,90,180,270和360。

(0和360度是相同的角度,在正x轴上)。

代码语言:javascript
运行
复制
r = 1

a = 0, 90, 180, 270, 360 (angles in degrees)

然后,为了沿圆生成X和y坐标,我们对每个角度使用以下方程:

代码语言:javascript
运行
复制
x = r * cos(a)
y = r * sin(a)

这些是根据上述两个方程计算的x和y坐标:

代码语言:javascript
运行
复制
(1, 0)
(0, 1)
(-1, 0)
(0, -1)
(1,0)

这是图上的样子:

在上面的例子中,我们只使用了4个点,所以它看起来并不像一个圆。然而,如果我们使用17个点,我们可以看到坐标正在接近圆形:

下面是数学的可视化(sin cos wave):

下面是循环运动的Arduino代码:

代码语言:javascript
运行
复制
void moveCircle(float radius, float degrees, float resolution, bool direction)
{
  for (float i = 0; i <= degrees; i += resolution)
  {
    // Get X and Y
    float X = radius * cos(i * DEG_TO_RAD);
    float Y = radius * sin(i * DEG_TO_RAD);

    if (direction)
    {
      // Move circle vertically
      moveTz(X);
      moveTy(Y);
    }
    else
    {
      // Move circle horizontally
      moveTx(X);
      moveZ(Y);
    }
  }
}

我建议通过在Microsoft中创建一个图表来测试这段代码,以验证x坐标是否创建了一个圆。

或者在onedrive.live.com上查看我的

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

https://stackoverflow.com/questions/74063852

复制
相关文章

相似问题

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