2. UR机器人坐标系与位姿表示

在UR机器人的视觉标定与精密抓取中,所有“位置”和“姿态”都必须依附于明确的坐标系才有意义。同一物理点,在基坐标系、工具坐标系或相机坐标系下的数值完全不同。因此,理解UR的坐标系体系与位姿表示方法,是后续手眼标定、TCP标定和抓取点换算的基础。

一、UR的坐标系体系

UR控制器内部维护着多个坐标系,最核心的是基坐标系(Base)和工具坐标系(Tool / TCP)。

基坐标系固定在机器人底座安装面上,原点位于底座中心,Z轴垂直向上,X、Y轴按右手定则分布。它是机器人运动学的参考原点,所有关节角度最终都换算到基坐标系下描述末端位置。基坐标系不随机器人运动而改变,是“绝对参考”。

工具坐标系附着在末端法兰或工具上,随机器人一起运动。UR默认的法兰坐标系原点在法兰盘中心,Z轴指向法兰外侧(沿工具安装方向)。当安装夹爪、吸盘或焊枪后,真正的作业点往往不在法兰中心,而在工具末端,因此需要定义TCP(Tool Center Point,工具中心点)。

TCP是工具坐标系的原点,也是机器人做姿态旋转时的“旋转中心”。例如夹爪抓取时,希望夹爪指尖中心点到达目标,而不是法兰中心到达目标。TCP定义就是描述“工具末端相对于法兰坐标系的位置和姿态”。UR中通过TCP偏移量(x, y, z, rx, ry, rz)来定义:前三个量是工具末端在法兰坐标系下的平移,后三个量是工具坐标系相对法兰坐标系的旋转。

TCP标定质量直接决定抓取精度。若TCP偏移量有1 mm误差,机器人绕工具旋转时末端就会产生约1 mm的圆弧偏差;偏移量越大,姿态变化带来的位置误差越明显。

二、旋转向量与旋转矩阵

姿态的数学表示有多种形式,UR主要使用旋转向量(Rotation Vector),而底层计算和视觉库常用旋转矩阵(Rotation Matrix)。

旋转向量又称轴角表示:用一个三维向量描述旋转,向量方向表示旋转轴,向量长度(模)表示绕该轴旋转的角度(弧度)。例如旋转向量 (0, 0, 1.5708) 表示绕Z轴旋转约90°。UR的位姿数据中,rx、ry、rz就是旋转向量的三个分量。它的优点是紧凑(3个参数),便于示教器输入和网络传输。

旋转矩阵是一个3×3正交矩阵,列向量分别表示旋转后坐标系的三个轴在原坐标系下的方向。它没有奇异点,便于连续变换和矩阵乘法组合,但需要9个参数且存在冗余。旋转向量与旋转矩阵之间可通过罗德里格斯公式(Rodrigues' formula)互相转换。

设旋转向量为 r = θ·k(k为单位轴,θ为角度),则旋转矩阵:

R = I + sinθ·[k]× + (1-cosθ)·[k]ײ

其中 [k]× 为 k 的反对称矩阵:
[ 0   -kz   ky ]
[ kz   0   -kx ]
[-ky   kx    0 ]

反向转换时,旋转角 θ = arccos((tr(R)-1)/2),旋转轴由 R 的特征值1对应的特征向量给出。UR示教器显示的rx、ry、rz正是旋转向量,而URScript和RTDE接口也以旋转向量传输位姿。

三、UR位姿数据格式与转换

UR中一个完整位姿用6个量表示:[x, y, z, rx, ry, rz]。前三个是位置(单位mm),后三个是旋转向量(单位rad)。例如:

p[0.300, -0.150, 0.420, 3.1416, 0.0, 0.0]

表示末端在基坐标系下位于 (300, -150, 420) mm,姿态为绕X轴旋转180°(旋转向量模为π,方向为X轴)。

实际工程中经常需要在不同表示之间转换:

  • 旋转向量 → 旋转矩阵:用于与视觉库(如OpenCV)对接,进行坐标变换。
  • 旋转矩阵 → 旋转向量:把视觉计算结果转回UR可执行的位姿格式。
  • 基坐标系 ↔ 工具坐标系:通过工具偏移量做齐次变换,把基坐标系下的目标点换算成工具坐标系下的运动指令。

齐次变换矩阵形式为:

T = [ R  t ]
    [ 0  1 ]

其中 R 为3×3旋转矩阵,t 为3×1平移向量。
基坐标系下的点 P_base 与工具坐标系下的点 P_tool 满足:
P_base = T_tool_in_base · P_tool

在URScript中,可用 pose_trans() 和 pose_inv() 完成位姿组合与求逆,避免手工推导矩阵。

基坐标系 Base X Z Y 法兰坐标系 TCP TCP偏移 (x,y,z,rx,ry,rz) 旋转向量 → 旋转矩阵 r = (rx, ry, rz) = θ·k θ = |r| k = r / θ R = I + sinθ[k]× + (1-cosθ)[k]ײ UR位姿格式 p[x, y, z, rx, ry, rz] 位置: mm 姿态: rad (旋转向量) 示例: p[0.3,-0.15,0.42, 3.1416, 0, 0] 变换 坐标系颜色约定 X轴 Z轴 Y轴

四、工程中的关键约定

在UR视觉抓取项目中,必须统一以下约定,否则会出现“方向反了”“姿态差180°”等典型问题:

  • 旋转方向:UR旋转向量遵循右手定则,逆时针为正。绕Z轴旋转+90°对应旋转向量 (0, 0, 1.5708)。
  • 单位:UR位姿位置单位为米(m)或毫米(mm)取决于接口,URScript中p[]使用米,而示教器显示常用毫米,转换时务必核对。
  • 姿态顺序:旋转向量是轴角表示,不是欧拉角。不要把它当作“先绕X、再绕Y、再绕Z”的欧拉角来理解,否则姿态计算会出错。
  • TCP与法兰:视觉给出的目标点通常是“工具末端应到达的位置”,而机器人运动指令默认针对法兰或已激活的TCP。若未正确设置TCP,抓取点会整体偏移一个工具长度。
在URScript中,常用位姿函数包括:pose_trans(p1, p2) 表示在p1位姿基础上叠加p2变换;pose_inv(p) 求逆;pose_add(p1, p2) 分量相加。手眼标定得到的变换矩阵通常需要转成旋转向量后,才能与UR位姿做组合运算。