位置和方向运动学的结合
使用轴组配置器,您可以将位置运动学和方向运动学结合起来。这样,就可以用少量的运动学来配置大量的机器人。
位置运动学的示例包括龙门 (Kin_Gantry3
) 和三脚架 (Kin_Tripod_Lin
, Kin_Tripod_Rotary
)。这些运动学可以移动到任何点或位置,但不能执行任意数量的方向。位置运动系统的前坐标系称为法兰坐标系。它定义了定向运动学固定的位置(左图)。
定向运动学的例子是 Kin_CAxis
, Kin_Wrist2
, 和 Kin_Wrist3
.这些运动学可以导致 TCP 的所需方向,但无法到达任何位置(见右图)。
通过结合位置运动学和方向运动学,可以在所需方向或相反方向移动任意数量的位置。

无效组合
并非位置运动学和定向运动学的每种组合都是可能的,因为有时无法确定唯一的逆变换。一个例子是具有两个关节的 SCARA 作为位置运动学和 Kin_CAxis_Tool
作为在 X 或 Y 坐标中刀具偏移不为 0 的定向运动学。 SCARA 的法兰坐标系的方向不是恒定的。它相对于 0 位置绕 Z 轴旋转。对于逆变换的计算,这个旋转是未知的,这使得在这种情况下无法清楚地确定轴角度。
可以在运行时检查组合是否可行,因为它取决于运动学的参数化。在这种情况下,错误 SMC_TRAFO_INVALID_COUPLING
发出。
编程“不可能”方向时的行为
在实践中,能够对运动学不可用的方向进行编程通常很有用。作为一个简单的例子,考虑一个 SCARA 机器人,其工具具有一个自由度(绕 Z 轴旋转)。原则上,该机器人只能接受工具垂直向下的方向。
当需要在工件上移动位置时,它很容易从 X/Y 平面倾斜。用户教导工件,然后编程相对于工件的位置和方向。工件的倾斜导致刀具方向与垂直方向略微倾斜的方向。

我们如何处理这种不可能和无法到达的方向?一种严厉的措施是报告工作空间违规。然而,正如示例所示,这会使编程变得乏味。因此,方向运动学(Kin_CAxis_Tool
在这个例子中)以这样一种方式实现,即它们假设最接近可实现的方向。在这个例子中,这意味着命令的方向以这样一种方式倾斜,即工具直立,并且这个方向被接受。
行为可以简化为以下规则(前提是位置运动学可以在所有三个空间方向上进行定位):
始终准确地逼近该位置(否则会报告错误)。
如果无法到达,则该方向将“投影”到最近的可访问方向。
投影方向时,刀具方向优先。
之所以出现这里描述的困难,是因为定向运动学没有三个自由度来实现所有所需的定向。情况就是这样 Kin_Wrist2
和 Kin_CAxis
,但不与 Kin_Wrist3
.
当位置运动学也不具有所有空间自由度时,会出现其他困难。 (这在实践中并不经常发生。)一个例子是结合 Kin_Gantry2
, 一个只能定位在 X/Y 方向的龙门架,并且带有 Kin_Wrist2
,只有两个自由度的工具。在这种情况下,存在不可能的定向和不可能的位置,因为 Z 坐标已经由刀具长度和定向轴的位置定义。因此,我们建议您不要使用这些类型的组合,而只对可达到的位置进行编程。
关于定制运动学的备注
想要创建自己的位置或方向运动学的用户必须在其运动学功能块中实现以下附加接口:
对于位置运动学:接口
ISMPosition运动学2
用方法AxesToOrientation
和GetOrientationImage
.AxesToOrientation
是一种“缩写”正向变换,它根据轴值计算法兰坐标系的方向。仅出于效率的原因才需要。例如,无需使用龙门计算任何内容,而是可以返回恒定的方向。GetOrientationImage
返回法兰坐标系的方向如何改变。该方法仅用于检查定向运动学是否与位置运动学兼容。对于定向运动学:接口
ISMTool运动学2
用方法GetPositionFromOrientation2
和IsCompatibleWithPosKin
.GetPositionFromOrientation2
根据所需方向(在 MCS 中)计算法兰坐标系和 TCP 之间的矢量。该计算对于组合运动学的逆变换是必要的。方法IsCompatibleWithPosKin
检查定向运动学是否与位置运动学兼容。