2. 坐标系与空间描述:世界坐标系、机器人基坐标系、工具坐标系、齐次变换矩阵

做轨迹规划,说白了就是跟坐标系打交道。我见过不少新手,算法写得飞起,一到现场机器人就乱跑,十有八九是坐标系搞混了。这一章,咱们就把这几个坐标系彻底捋清楚。

2.1 为什么需要多个坐标系?

你想想看,机器人要抓桌上的杯子,杯子在桌面上有个位置,机器人底座有个位置,机械臂末端还有个位置。如果只用一套坐标,根本没法描述清楚。

举个例子。我在项目里遇到过,操作工想调整抓取点,结果直接改了基坐标系参数,整条产线都偏了。嗯,这就是没搞懂坐标系分工的后果。

实际工程中,我们至少需要三套坐标系:

  • 世界坐标系:固定在地面或产线上,是全局参考
  • 机器人基坐标系:固定在机器人底座,描述机器人自身
  • 工具坐标系:固定在机器人末端,描述焊枪、夹爪等工具

核心原则:每个坐标系只干自己的事。世界坐标系管全局,基坐标系管机器人,工具坐标系管末端。别混用。

2.2 世界坐标系(World Coordinate System)

世界坐标系是最大的那个坐标系。它固定在地面、产线或者工作台上,所有其他坐标系都相对于它定义。

我记得有一次调试AGV(自动导引车)和机器人协同,AGV的定位系统用的是产线世界坐标,机器人用的是自己的基坐标。如果不做坐标映射,机器人根本不知道AGV在哪。

世界坐标系的特点:

  • 一旦设定,一般不轻易改动
  • 作为全局基准,所有测量和标定都参考它
  • 通常用大写字母 W 或 World 表示

2.3 机器人基坐标系(Base Coordinate System)

基坐标系固定在机器人底座上。原点一般在底座安装面的中心,Z轴向上,X轴指向机器人前方。

这个坐标系是机器人的"家"。所有关节角度、运动学计算,最终都要回到基坐标系里。

我个人的习惯是,在调试阶段先用基坐标系做手动示教,确认机器人能到达目标位置,再切换到工具坐标系做精细调整。

小技巧:基坐标系的原点位置,直接影响机器人的工作空间。安装时尽量让基坐标系原点与工作台中心对齐,能省很多标定功夫。

2.4 工具坐标系(Tool Coordinate System)

工具坐标系,说白了就是装在机器人末端的那个坐标系。焊枪的尖端、夹爪的中心、视觉相机的光心,都是工具坐标系的原点。

为什么需要工具坐标系?因为机器人末端法兰盘的位置,不等于工具实际工作点的位置。你想想看,焊枪长30厘米,如果直接用末端法兰盘坐标去规划轨迹,焊丝尖端早就偏到姥姥家去了。

工具坐标系的标定方法:

  1. 四点法:让工具尖端触碰空间中一个固定点,从四个不同姿态记录数据
  2. 六点法:在四点法基础上,增加两个方向点,确定工具姿态
  3. 直接输入法:已知工具尺寸,直接输入偏移量(适合简单工具)

我曾经踩过的坑:有一次换了一把新焊枪,忘记重新标定工具坐标系,结果机器人按照旧坐标运动,焊枪直接撞上了工件。从那以后,我每次换工具第一件事就是标定TCP(工具中心点)。

2.5 齐次变换矩阵(Homogeneous Transformation Matrix)

坐标系之间怎么转换?靠的就是齐次变换矩阵。它是一个4x4的矩阵,同时包含了旋转和位移信息。

结构是这样的:

| R(3x3)   T(3x1) |
| 0 0 0     1     |

其中:

  • R:3x3旋转矩阵,描述两个坐标系之间的姿态关系
  • T:3x1平移向量,描述原点之间的位移
  • 最后一行:固定为 [0 0 0 1],保持齐次形式

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

// 假设工具在基坐标系下沿X轴偏移0.5米,绕Z轴旋转30度
// 旋转矩阵 R (绕Z轴30度)
R = | cos30°  -sin30°  0 |
    | sin30°   cos30°  0 |
    | 0        0       1 |

// 平移向量 T
T = | 0.5 |
    | 0   |
    | 0   |

// 齐次变换矩阵
T_base_to_tool = | 0.866  -0.5  0  0.5 |
                 | 0.5    0.866 0  0   |
                 | 0      0     1  0   |
                 | 0      0     0  1   |

工程要点:齐次变换矩阵可以连续相乘。比如从世界到工具:T_world_to_tool = T_world_to_base × T_base_to_tool。这就是轨迹规划中坐标链的核心。

2.6 坐标系之间的变换关系

实际工程中,我们经常需要在这三个坐标系之间来回切换。下面这张图展示了它们的关系:

坐标系变换关系图 世界坐标系 机器人基坐标系 工具坐标系 T_world_to_base T_base_to_tool 变换链公式 T_world_to_tool = T_world_to_base × T_base_to_tool 任何目标点 P_tool 在世界坐标系下的位置:P_world = T_world_to_tool × P_tool

2.7 坐标系变换的工程应用

在实际项目中,坐标系变换最常见的场景就是手眼标定。机器人带着相机去抓取工件,相机看到的是相机坐标系下的位置,机器人需要把它转换到基坐标系下。

变换流程是这样的:

  1. 相机检测到工件在相机坐标系下的坐标 P_cam
  2. 通过标定得到相机到工具坐标系的变换 T_tool_to_cam
  3. 再通过工具到基坐标的变换 T_base_to_tool
  4. 最终得到工件在基坐标系下的位置 P_base = T_base_to_tool × T_tool_to_cam × P_cam

我个人的经验:写代码时,把每个变换矩阵都单独命名,比如 T_w_b、T_b_t、T_t_c。千万别图省事写成一长串,调试的时候根本查不出错。

2.8 常见坐标系参数对比

坐标系 原点位置 典型用途 标定难度 变更频率
世界坐标系 产线固定点 全局定位、多机协同 低(一次标定) 几乎不变
基坐标系 机器人底座中心 运动学计算、示教 中(安装时标定) 很少变
工具坐标系 工具工作点 轨迹规划、抓取 高(需精确标定) 换工具时变

注意:工具坐标系标定误差是轨迹规划中最大的误差来源。我曾经见过一个项目,TCP标定误差只有2毫米,但在大范围运动时,末端位置误差被放大到5厘米。所以,标定工具坐标系时,一定要用高精度方法,别图省事。

2.9 本章小结

坐标系和齐次变换矩阵,是轨迹规划的数学基础。说白了,就是搞清楚"我在哪,要去哪,怎么换算"。世界坐标系定全局,基坐标系定机器人,工具坐标系定末端,齐次变换矩阵做桥梁。