机器人欧拉角:基本入门

你很难理解机器人的旋转,不是吗?欧拉角是一个令人头疼的问题。以下是消除痛苦的基本入门。

方向!他们让我想把头发扯下来。如果你曾经使用坐标和旋转来编程机器人的结束姿势,你就会知道我在说什么。

乍一看,设置机器人末端执行器的姿势似乎很简单,不是吗?

你只需说“我想把机器人的工具移动到。我想让它指向方向。”

直观地,您确切地知道您希望工具具有的方向。然而,当涉及到使用精确数字描述方向时,这个简单的任务突然变得混乱。

为什么机器人的方向很难理解

描述机器人工具的X, Y, Z(平移)坐标很容易。

要描述平移,您只需输入坐标-例如点[X, Y, Z] = [100,1000,1500] mm -并且只有一个位置可以引用,假设您使用相同的基准参考。它只能表示沿x轴100毫米,沿y轴1米,沿z轴1.5米。

但是,如何描述工具的方向呢?

你可以说:
旋转[XYZ] =[5,45,15]°
然而,你也可以说(四舍五入)
Rot[XY 'Z "] =[-7.9, 44.7, 16.2]°

Rot[ZY 'Z "] =[7.9, 45.2, 5.0]°
甚至
四元数[q1-q4] = [0.9, -0.1, 0.4, 0.1]

所有这些都指向完全相同的方向!
更令人费解的是,不同的机器人制造商使用不同的惯例。即使您熟悉3D几何,它也会变得有点令人头疼。

问题:我们只是不以轮换的方式思考

真正的问题是,我们不是很自然地考虑旋转。

我们直观地理解平移坐标,因为我们在日常生活中使用它们(例如:“在第二个书架上,左边数起四本书。”)。然而,当我们必须描述方位时,我们会用手指着说“就在那个方向。”

不幸的是,机器人需要更精确的信息,而不是模糊的“在那边。”

我们需要的是对欧拉角的深刻理解。

欧拉角是什么?

让我们退一步,从基础开始。

描述机器人方向最常用的方法是欧拉角。欧拉角由三个数字组成,每个数字描述绕一个轴的旋转。根据旋转的顺序有不同的欧拉角约定。

首先,我们把它简化成一个单轴的例子。

想象一个指南针。

通常世界的z轴是指从天空延伸到地面的轴。所以,你可以把指南针上的指针想象成绕着Z轴旋转(称为Rot[Z])。当你把指南针平放在你面前,箭头指向135°时,这意味着北方在你的左肩上方,所以你目前正面向东南。无论你把指南针放在哪里(地板上,头上等等),只要方向相同,角度总是135°。

到目前为止,一切都很简单。

我们的指南针只有一个旋转值(如Rot[Z]),但要描述任何3D方向,我们需要三个值。这就是问题开始变得复杂的地方。

描述机器人方向的其他方法是四元数或姿态(4×4矩阵)。

让我们动手吧

从现在开始,有一个互动的视觉辅助工具会对你有帮助。

我建议你雷电竞app下载安卓从这个链接下载RoboDK的免费版本,这使得可视化参考系和看到结果坐标变得非常容易。

启动RoboDK并使用“添加参考框架”按钮或选择Program菜单中的选项创建参考框架。你应该看到一个红、绿、蓝的框架出现在屏幕中间。

你可以像这样旋转框架:按住Alt键,然后点击并拖动出现的弯曲箭头之一。

如何驾驶飞机欧拉角-世界

让我们用飞机来类比,就像上面描述的那样robot-forum

假设参考系是一个平面。笔直的红色箭头的尖端(x轴)是它的鼻锥的尖端,笔直的绿色箭头(y轴)是它的左翼。

在这种情况下,移动曲线箭头起到以下作用:

  • 曲线红色箭头= Rot[X]:飞机的滚动,它允许飞机围绕其水平轴旋转。
  • 弯曲的绿色箭头= Rot[Y]:飞机的俯仰,使机头向上或向下。
  • 蓝色曲线箭头= Rot[Z]:飞机的偏航,决定了飞机前进的方向。

如果飞行员想让飞机向左和向下转向,逐渐地,飞机不会只在Z轴上旋转——这不是飞机的工作方式。

相反,飞机会:

  1. 把它的鼻锥向下倾斜:Rot[Y]
  2. 将飞机向左滚动:-Rot[X]
  3. 向左偏航:Rot[Z]

这整个运动将被表示为Rot[XYZ]。试着在RoboDK中自己移动一下框架,直到你对这些概念感到舒服。

然后,双击主窗口左上角的框架名称,弹出“框架细节”面板。

一个方向,几个可能的旋转

使用RoboDK,尝试以下任务。

每次任务开始前,打开框架细节面板中的“汉堡包”菜单图标(三条水平线),选择“重置(设置标识)”,重置框架。

  1. 选择坐标顶部的下拉菜单,并选择Stäubli旋转(X->Y ' ->Z ')而不是Generic。
  2. 旋转框架,使蓝色(Z)向下指向,红色(X)向后指向(即它们都从起始位置翻转,绿色(Y)与起始位置相同),但只能通过围绕Y轴旋转来实现。
  3. 重置框架,然后再次将其移动到相同的旋转。然而,这一次只使用一次Z旋转和一次X旋转。
  4. 重置框架,然后再次将其移动到相同的旋转。但是,这次只使用一次X旋转和一次Z旋转。

正如您所看到的,可以有不止一种方法来实现相同的方向。

第一种方法我们可以称之为Rot[Y],因为它只包含围绕Y轴的旋转。第二种方法我们可以称之为Rot[Z, X '],因为它包括围绕Z轴的一次旋转和围绕新X轴的一次旋转。第三种我们称之为Rot[X, Z ']。撇号表示旋转是相对于最后的运动而不是静态轴。

欧拉角测试180度

这是欧拉角背后的基本概念。通过改变轴和旋转的顺序,可以以多种方式将一个帧旋转到相同的方向。

不同的机器人制造商选择了不同的旋转组合。例如,Stäubli使用XY 'Z "约定,Adept使用ZY 'Z "约定,KUKA使用ZY 'X "约定,Fanuc & Motoman使用XYZ约定。另一方面,ABB使用四元数,而Universal Robots使用方向矢量。但是所有的惯例都可以用来表示空间中的任何方向。

你会发现更多的信息RoboDK的文档

测试不同的机器人约定

希望你们开始明白了。然而,这仅仅是个开始。为了真正掌握RoboDK中的欧拉角约定,我发现使用以下软件很有用本指南

你可以在“框架细节”面板的浅蓝色、紫色和黄色框中看到数字旋转的效果。

默认情况下,将为新的参考帧选择Generic XYZ约定。尝试从彩色框上方的下拉菜单中选择不同的机器人制造商。尝试在方框中输入数值,以查看它们对参考框架的影响。

关于欧拉角的深入教程,我也可以推荐这个学术页面

关于Alex Owen-Hill

亚历克斯·欧文-希尔是一名自由撰稿人和演说家,他的博客主题广泛,包括科学、CreateClarifyArticulate.com上的演讲技巧、讲故事和(当然)机器人技术。他完成了马德里理工大学远程机器人博士学位,作为PURESAFE项目的一部分,与欧洲核子研究中心合作。作为一名正在康复的学者,他通过写关于工业机器人的博客,在机器人领域站稳了脚跟。

查看Alex Owen-Hill的所有帖子

留言回复

您的电子邮件地址将不会被公布。必填项被标记*