我有一个6关节的机器人手臂,我想把它移动成一个圆圈。我想要参数来选择圆的半径、度和分辨率/质量。
我该怎么做?
发布于 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轴上)。
r = 1
a = 0, 90, 180, 270, 360 (angles in degrees)
然后,为了沿圆生成X和y坐标,我们对每个角度使用以下方程:
x = r * cos(a)
y = r * sin(a)
这些是根据上述两个方程计算的x和y坐标:
(1, 0)
(0, 1)
(-1, 0)
(0, -1)
(1,0)
这是图上的样子:
在上面的例子中,我们只使用了4个点,所以它看起来并不像一个圆。然而,如果我们使用17个点,我们可以看到坐标正在接近圆形:
下面是数学的可视化(sin cos wave):
下面是循环运动的Arduino代码:
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坐标是否创建了一个圆。
https://stackoverflow.com/questions/74063852
复制相似问题