3. 坐标系与变换:世界坐标系、机器人基坐标系、工具坐标系、用户坐标系的定义与转换

做机器人轨迹规划,说白了就是在玩坐标系。

我刚入行那会儿,总觉得坐标系这东西太抽象。直到有一次,我写好的轨迹在仿真里跑得完美,一上真机就把工件撞飞了。排查了半天,发现是工具坐标系标定错了20毫米。嗯,从那以后,我再也不敢小看坐标系了。

3.1 世界坐标系(World Coordinate System)

世界坐标系,也叫全局坐标系。它是整个机器人工作空间的参考。

你可以把它想象成车间里的一个固定点。比如,我习惯把世界坐标系原点设在机器人底座正下方的地面上,Z轴朝上,X轴指向产线方向。

关键点:世界坐标系一旦建立,就不再移动。所有其他坐标系,最终都要能转换到世界坐标系下。

在实际项目中,世界坐标系通常由激光跟踪仪或全站仪来建立。我记得在一条汽车焊装线上,我们用了三个基准球来定义世界坐标系,精度控制在0.1mm以内。

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

基坐标系是固定在机器人基座上的坐标系。它的原点一般在机器人安装面的中心,Z轴沿机器人第一关节的轴线方向。

说白了,基坐标系就是机器人自己的"身体坐标系"。机器人内部的所有运动学计算,都是在基坐标系下完成的。

坐标系 原点位置 Z轴方向 用途
世界坐标系 车间固定点 通常朝上 全局定位
基坐标系 机器人底座 沿第一关节 运动学计算
工具坐标系 工具末端 工具朝向 工具控制
用户坐标系 用户定义 用户定义 任务编程

3.3 工具坐标系(Tool Coordinate System)

工具坐标系,TCP(Tool Center Point)坐标系,是附着在机器人末端执行器上的坐标系。

为什么需要它?因为机器人末端装的是焊枪、夹爪还是吸盘,位置和姿态都不一样。你需要告诉机器人:"我的工具尖端点在哪里,朝向如何。"

我的经验:工具坐标系标定是现场调试中最容易出错的环节。我曾经见过一个工程师,用四点法标TCP时,把参考点选在了夹具边缘而不是尖端,结果差了5mm。建议标定完成后,用"工具末端指向固定点,旋转各关节"的方法验证一下。

工具坐标系的标定方法,常用的有:

  • 四点法:让工具末端以不同姿态触碰同一个固定点,解算TCP位置
  • 六点法:在四点法基础上,额外定义工具坐标系的方向
  • 直接输入法:已知工具尺寸,直接输入偏移量

3.4 用户坐标系(User Coordinate System)

用户坐标系,是用户根据实际任务自定义的坐标系。比如,工作台上有四个工位,你可以为每个工位定义一个用户坐标系。

这样做的好处是什么?你想想看,如果工件放在一个斜面上,你在用户坐标系下编程,轨迹就是沿着斜面走的直线。如果不用用户坐标系,你得在基坐标系下算出一堆复杂的空间直线插补,累不累?

核心思想:用户坐标系让编程更直观。你只需要告诉机器人"沿着用户坐标系的X轴移动100mm",而不是"在基坐标系下移动(85, 50, 30)mm"。

3.5 坐标系之间的转换

坐标系转换,本质上就是矩阵乘法。一个4x4的齐次变换矩阵,包含了旋转和平移信息。

// 齐次变换矩阵示例
// 从基坐标系到工具坐标系的变换
T_base_to_tool = 
| R11  R12  R13  tx |
| R21  R22  R23  ty |
| R31  R32  R33  tz |
|  0    0    0    1  |

// 其中R是3x3旋转矩阵,t是3x1平移向量

在实际编程中,我们通常用链式变换:

// 世界坐标系下的工具位置
T_world_to_tool = T_world_to_base * T_base_to_tool

// 如果还有用户坐标系
T_world_to_tool = T_world_to_user * T_user_to_base * T_base_to_tool

注意:矩阵乘法不满足交换律。T_A_to_B * T_B_to_C 和 T_B_to_C * T_A_to_B 是完全不同的结果。我见过新手把顺序搞反,结果机器人跑到天花板上去了。

3.6 知识体系结构图

下面这张图,是我自己总结的坐标系关系。你看一眼就能明白它们之间的层级关系。

坐标系与变换知识体系 世界坐标系 机器人基坐标系 工具坐标系 用户坐标系 转换关系: 世界 → 基 → 工具 世界 → 用户 → 基 → 工具

3.7 实际项目中的坐标系管理

我在做多机器人协同项目时,遇到过坐标系管理混乱的问题。两台机器人共用一个工作台,各自定义了不同的用户坐标系,结果轨迹干涉了。

后来我定了个规矩:

  1. 统一世界坐标系:所有机器人、视觉系统、外部轴,都用同一个世界坐标系
  2. 工具坐标系独立标定:每台机器人单独标定自己的工具,但验证时用世界坐标系下的固定点
  3. 用户坐标系统一命名:比如"工位1_用户坐标系",避免混淆

避坑指南:我曾经在调试时,发现机器人抓取位置总偏差2mm。查了两天,最后发现是视觉系统返回的坐标是在像素坐标系下,没有转换到世界坐标系。记住:所有传感器数据,最终都要统一到世界坐标系下。

3.8 总结

坐标系这东西,说白了就是给机器人一个"空间参考系"。世界坐标系是参考,基坐标系是机器人本体,工具坐标系是末端执行器,用户坐标系是任务视角。

掌握好它们之间的转换关系,你的轨迹规划就成功了一半。剩下的,就是多练、多踩坑、多总结。

一句话记住:坐标系转换就是矩阵乘法,顺序不能乱,验证不能少。

可可精品资料库