你很难理解机器人的旋转,不是吗?欧拉角很麻烦。以下是消除疼痛的基本入门。
方向!他们让我想把头发扯下来。如果你曾经使用坐标和旋转来编程机器人的末端姿势,你就会知道我在说什么。
乍一看,设置机器人末端执行器的姿态似乎很简单,不是吗?
你只需说“我想把机器人的工具移动到。这location,我想让它指向这方向。”
直观地说,您确切地知道您希望工具具有什么方向。然而,当使用精确的数字来描述方位时,这个简单的任务突然变得混乱不堪。
为什么机器人的方向很难理解
描述机器人工具的X、Y、Z(平移)坐标很容易。
要描述一个转换,你只需输入坐标——例如Point[X, Y, Z] = [100, 1000, 1500] mm——并且假设你使用相同的基准引用,它只能指向一个位置。它只能表示沿x轴100毫米,沿y轴1米,沿z轴1.5米。
但是,如何描述工具的方向呢?
你可以说:
旋转[XYZ] =[5,45,15]°
然而,你也可以说(四舍五入)
腐[XY 'Z "] =[-7.9, 44.7, 16.2]°
或
腐[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矩阵)。
让我们开始吧
从现在开始,它将有助于你有一个交互式的视觉辅助。
我建议你爱游戏ayx正网这使得可视化参考系和看到结果坐标变得非常容易。
启动RoboDK并使用“添加参考框架”按钮或选择程序菜单中的选项创建参考框架。您应该会在屏幕中间看到一个红色、绿色和蓝色的框架。
您可以像这样旋转框架:按住Alt键,然后单击并拖动出现的曲线箭头之一。
如何驾驶飞机
让我们用飞机来比喻,就像上面描述的那样robot-forum.
假设参照系是一个平面。直线红色箭头(x轴)的尖端是它的鼻锥尖端,直线绿色箭头(y轴)是它的左翼。
在这种情况下,移动曲线箭头的功能如下:
- 弯曲的红色箭头= Rot[X]:飞机的滚动,使飞机绕其水平轴旋转。
- 弯曲的绿色箭头= Rot[Y]:飞机的俯仰,它使机头锥体向上或向下。
- 弯曲的蓝色箭头= Rot[Z]:飞机的偏航,它决定了飞机前进的方向。
如果飞行员想让飞机向左转弯向下,渐渐地,飞机就不会只是在Z轴上旋转——飞机不是这样工作的。
相反,飞机将:
- 俯仰鼻锥:腐烂[Y]
- 将飞机向左滚动:-Rot[X]
- 向左偏航:Rot[Z]
这整个运动将被表示为Rot[XYZ]。在RoboDK中尝试移动框架,直到你对这些概念感到舒服为止。
然后,双击主窗口左上方的框架名称,调出“框架细节”面板。
一个方向,几种可能的旋转
使用RoboDK,尝试执行以下任务。
在每个任务之前,通过在框架细节面板中打开“汉堡”菜单图标(三条水平线)并选择“重置(设置身份)”来重置框架。
- 选择坐标上方的下拉菜单,选择Stäubli旋转(X->Y ' ->Z "),而不是Generic。
- 旋转框架,使蓝色(Z)指向下方,红色(X)指向后方(即它们都从起始位置翻转,而绿色(Y)与起始位置相同),但只能通过绕Y轴旋转来做到这一点。
- 重置帧,然后移动到相同的旋转再次。但是,这次只使用一个Z旋转和一个X旋转。
- 重置帧,然后移动到相同的旋转再次。但是,这次只使用一个X旋转和一个Z旋转。
正如你所看到的,可以有不止一种方法来实现相同的方向。
第一种方法我们可以称之为Rot[Y],因为它只包括围绕Y轴的旋转。第二种方法我们可以称之为Rot[Z, X '],因为它包括围绕Z轴的一次旋转和围绕新X轴的一次旋转。第三种我们称之为Rot[X, Z ']。质数符号表示旋转是相对于最后一个运动而不是静态轴发生的。
这是欧拉角的基本概念。您可以通过改变轴和旋转的顺序以多种方式将框架旋转到相同的方向。
不同的机器人制造商选择了不同的旋转组合。例如,Stäubli使用XY 'Z "约定,Adept使用ZY 'Z "约定,KUKA使用ZY 'X "约定,Fanuc和Motoman使用XYZ约定。另一方面,ABB使用四元数,而Universal Robots使用方向向量。但是所有的约定都可以用来表示空间中的任何方向。
你会在RoboDK的文档.
测试不同的机器人约定
希望大家开始明白了。然而,这仅仅是个开始。为了真正掌握RoboDK中的欧拉角约定,我发现下面的软件很有用本指南.
你可以在“帧细节”面板的浅蓝色、紫色和黄色框中看到数值旋转的效果。
默认情况下,为新的参考框架选择通用XYZ约定。尝试从彩色框上方的下拉菜单中选择不同的机器人制造商。试着在方框中输入数值,看看它们对参考系的影响。
对于欧拉角的深入教程,我也可以推荐Mecademic的这一页.