4. 坐标系建立:世界坐标系、基坐标系、工具坐标系、用户坐标系的定义与转换

坐标系这东西,说白了就是给机器人一个「空间定位」的基准。没有坐标系,你让机器人往哪儿动?我刚开始接触机器人时,总觉得坐标系是个抽象概念,直到有一次在产线上调试,机器人撞了夹具……嗯,从那以后我彻底明白了坐标系的重要性。

4.1 世界坐标系——参考系

世界坐标系是最大的那个坐标系。它固定在地面上,通常是整个机器人工作空间的参考。你可以把它想象成「地球的经纬度」——不管机器人怎么动,世界坐标系的原点和方向是不变的。

定义要点:
  • 原点:通常设在地面某个固定点(比如机器人底座中心在地面的投影)
  • Z轴:一般垂直向上(重力方向的反方向)
  • X轴和Y轴:根据右手定则确定,通常与产线布局对齐

我在项目中遇到过一个问题:客户把机器人底座装歪了,结果所有世界坐标系下的点位都偏了。后来我建议他们用激光跟踪仪重新标定世界坐标系,才解决了问题。所以,世界坐标系的建立一定要有物理基准,不能凭空想象。

4.2 基坐标系——机器人的「根」

基坐标系是固定在机器人底座上的坐标系。它是机器人内部运动学计算的基准。说白了,机器人每个关节的角度,最终都要转换到基坐标系下才能算出末端位置。

基坐标系和世界坐标系的关系很简单——它们之间有一个固定的平移和旋转。这个关系在机器人安装时就已经确定了。我个人习惯在机器人安装后,先用水平仪和激光测距仪把基坐标系标定好,再去做其他工作。

小技巧: 基坐标系的Z轴通常与机器人第一关节的旋转轴重合。如果你发现机器人第一关节转起来,末端轨迹不对,先检查基坐标系是否标定准确。

4.3 工具坐标系——末端执行器的「手」

工具坐标系(TCP,Tool Center Point)是定义在机器人末端执行器上的坐标系。它决定了机器人「手」的位置和姿态。你想想看,机器人夹持一个焊枪,焊枪尖端的那个点就是TCP的原点。

工具坐标系的标定是标定工作中最常做的。我记得有一次,客户换了一个新的夹爪,结果所有抓取点位都偏了。其实就是TCP没重新标定。标定TCP的方法有很多,最常用的是「四点法」:

// 四点法标定TCP的伪代码
// 1. 将机器人末端移动到一个固定尖点(如锥尖)
// 2. 以四种不同的姿态接近该尖点
// 3. 记录每种姿态下的关节角度
// 4. 通过最小二乘法求解TCP偏移量

姿态1: [J1, J2, J3, J4, J5, J6] -> 位置P1
姿态2: [J1', J2', J3', J4', J5', J6'] -> 位置P2
姿态3: [J1'', J2'', J3'', J4'', J5'', J6''] -> 位置P3
姿态4: [J1''', J2''', J3''', J4''', J5''', J6'''] -> 位置P4

// 求解 TCP = f(P1, P2, P3, P4)
注意: 四点法标定时,四种姿态的差异要足够大(至少相差30度以上),否则求解出的TCP精度会很差。我曾经因为姿态变化太小,标定误差达到了2mm,后来重新标定才降到0.1mm以内。

4.4 用户坐标系——灵活的工作基准

用户坐标系是用户自定义的坐标系。它有什么用呢?举个例子:你的工作台是倾斜的,如果还用世界坐标系编程,每个点位都要算倾斜补偿,太麻烦了。这时候定义一个用户坐标系,让它的XY平面与工作台面平行,编程就简单多了。

用户坐标系的定义通常需要三个点:

  1. 原点O:坐标系的原点位置
  2. X轴方向点X:确定X轴的正方向
  3. Y轴方向点Y:确定Y轴的正方向(Z轴由右手定则自动确定)

我建议在定义用户坐标系时,尽量让坐标轴与工件的特征边对齐。比如工件是矩形的,就让X轴平行于长边,Y轴平行于短边。这样编程时,点位坐标就是工件的实际尺寸,直观又好用。

4.5 坐标系之间的转换

坐标系之间的转换,说白了就是「从一个坐标系看另一个坐标系」。转换关系可以用一个4x4的齐次变换矩阵表示:

| R11  R12  R13  Tx |
| R21  R22  R23  Ty |
| R31  R32  R33  Tz |
|  0    0    0    1  |

其中:
- R 是3x3旋转矩阵(描述姿态)
- T 是3x1平移向量(描述位置)

举个例子,从基坐标系到工具坐标系的转换:

// 基坐标系下的点 P_base
// 工具坐标系下的点 P_tool
// 转换矩阵 T_base_to_tool

P_base = T_base_to_tool * P_tool

// 反过来
P_tool = inv(T_base_to_tool) * P_base

实际应用中,我们经常需要做多层转换。比如:

  • 世界坐标系 → 基坐标系:固定转换(安装时标定)
  • 基坐标系 → 工具坐标系:随机器人运动变化(由正运动学计算)
  • 世界坐标系 → 用户坐标系:固定转换(用户定义时标定)
核心公式:

机器人末端在用户坐标系下的位置 = (用户坐标系到世界坐标系的逆矩阵) × (世界坐标系到基坐标系的逆矩阵) × 基坐标系下的末端位置

说白了,就是一层层「脱衣服」,从最外层一直脱到最里层。

4.6 坐标系标定的实战流程

我总结了一套坐标系标定的流程,供你参考:

  1. 先标世界坐标系:用水平仪和激光测距仪,确定地面基准
  2. 再标基坐标系:用机器人自带的标定程序,或者用激光跟踪仪
  3. 然后标工具坐标系:用四点法或六点法,精度要求高时用激光跟踪仪
  4. 最后标用户坐标系:用三点法,与工件对齐
避坑指南: 我曾经在标定用户坐标系时,只用了两个点(原点和X轴方向点),结果Y轴方向不确定,导致Z轴方向反了。后来我养成了习惯,每次都用三个点,确保坐标系完全确定。

4.7 知识体系总览

下面这张图展示了四个坐标系之间的关系:

世界坐标系 参考系 固定在地面 重力方向为Z轴 基坐标系 机器人底座 运动学计算基准 第一关节轴为Z轴 工具坐标系 末端执行器 TCP位置姿态 四点法标定 用户坐标系 用户自定义 与工件对齐 三点法定义 固定转换 运动学计算 用户定义 间接转换 坐标系关系总览图

从图中可以看出,世界坐标系是「根」,基坐标系和用户坐标系都直接或间接与世界坐标系关联。工具坐标系则依附于基坐标系,随机器人运动而变化。

总结一下:
  • 世界坐标系:基准,固定不变
  • 基坐标系:机器人本体基准,运动学计算用
  • 工具坐标系:末端执行器基准,决定「手」在哪
  • 用户坐标系:工作基准,方便编程

这四个坐标系构成了机器人空间定位的完整体系。搞懂了它们,标定工作就成功了一半。

可可精品资料库