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_用户坐标系",避免混淆
避坑指南:我曾经在调试时,发现机器人抓取位置总偏差2mm。查了两天,最后发现是视觉系统返回的坐标是在像素坐标系下,没有转换到世界坐标系。记住:所有传感器数据,最终都要统一到世界坐标系下。
3.8 总结
坐标系这东西,说白了就是给机器人一个"空间参考系"。世界坐标系是参考,基坐标系是机器人本体,工具坐标系是末端执行器,用户坐标系是任务视角。
掌握好它们之间的转换关系,你的轨迹规划就成功了一半。剩下的,就是多练、多踩坑、多总结。
一句话记住:坐标系转换就是矩阵乘法,顺序不能乱,验证不能少。