3. 坐标系与运动学:关节坐标系、世界坐标系、工具坐标系、工件坐标系
焊接机器人要动起来,首先得搞清楚「它在哪」和「要去哪」。
这就像你让一个焊工去干活,你得告诉他:站在哪个位置、焊枪朝哪个方向、焊缝在哪儿。机器人也一样,它需要一套坐标系来定位。我个人习惯把这四种坐标系比作「四把尺子」,每把尺子解决一个层面的问题。
3.1 关节坐标系:机器人的「原生语言」
关节坐标系,说白了就是机器人各个轴的角度值。
你想想看,机器人每个关节都有一个电机,电机转多少度,关节就摆到什么位置。所以关节坐标系是机器人最底层的控制方式。比如六轴机器人,它的状态就是 J1、J2、J3、J4、J5、J6 这六个角度值。
我在项目中遇到过一位新手,他想让焊枪走一条直线,结果在关节坐标系下手动调了五个轴,焊枪末端画了个弧线——嗯,这其实很正常,因为关节空间和笛卡尔空间不是线性对应的。
3.2 世界坐标系:绝对的「大地基准」
世界坐标系是固定不动的,通常以机器人底座中心为原点。
它就像你车间里的一个固定参考点。不管机器人怎么动,不管工件放在哪,世界坐标系始终不变。所有其他坐标系,最终都要换算到世界坐标系下。
举个例子:你让机器人去抓一个工件,你得告诉它「工件在世界坐标系下的坐标是 (x, y, z)」。机器人收到这个指令后,会通过逆运动学算出每个关节该转多少度。
3.3 工具坐标系:焊枪的「手」
工具坐标系,就是定义在焊枪末端的一个坐标系。
为什么需要它?因为焊枪有长度、有角度。你让机器人走到某个点,实际上是让焊枪末端走到那个点。工具坐标系就是用来描述「焊枪末端相对于机器人第六轴法兰盘」的位置和姿态。
我记得有一次调试,客户抱怨焊枪总是对不准焊缝。我检查了半天,发现是工具坐标系标定错了——焊枪长度差了 5 毫米。你想想看,5 毫米在焊接里是什么概念?焊缝直接偏了。
// 工具坐标系标定示例(伪代码)
// 1. 将焊枪末端对准一个固定尖点
// 2. 以四种不同姿态对准同一点
// 3. 系统自动计算出 TCP 位置
TCP_X = (P1_X + P2_X + P3_X + P4_X) / 4
TCP_Y = (P1_Y + P2_Y + P3_Y + P4_Y) / 4
TCP_Z = (P1_Z + P2_Z + P3_Z + P4_Z) / 4
3.4 工件坐标系:焊缝的「地图」
工件坐标系是定义在工件上的。它让编程变得简单。
为什么?因为焊缝在工件上的位置是固定的。你只要在工件上建立一个坐标系,然后在这个坐标系下编程。以后工件位置变了,你只需要重新标定工件坐标系,程序不用改。
举个例子:你焊一个箱体,焊缝在箱体的左上角。你把工件坐标系建在箱体的一个角上,然后在这个坐标系下编程。下次箱体放歪了,你重新标定一下工件坐标系,程序自动适配。
3.5 四种坐标系的关系
这四种坐标系不是孤立的,它们之间通过齐次变换矩阵相互转换。
简单来说:
- 关节坐标系 → 世界坐标系:通过正运动学计算
- 世界坐标系 → 关节坐标系:通过逆运动学计算
- 工具坐标系:相对于世界坐标系的一个偏移
- 工件坐标系:相对于世界坐标系的一个偏移
你想想看,最终机器人执行焊接时,其实是这么个流程:
- 程序里存的是工件坐标系下的焊缝坐标
- 系统自动换算到世界坐标系
- 再换算到工具坐标系
- 最后通过逆运动学算出关节角度
世界坐标 = 工件坐标系原点 + 工件坐标系下的坐标
工具末端坐标 = 世界坐标 + 工具坐标系偏移
3.6 知识体系结构图
下面这张图展示了四种坐标系的关系和转换路径:
3.7 实际应用中的选择策略
说了这么多,到底什么时候用哪个坐标系?
| 场景 | 推荐坐标系 | 原因 |
|---|---|---|
| 手动示教点位 | 关节坐标系 | 可以精确控制每个轴,避免奇异点 |
| 直线/圆弧焊接 | 工件坐标系 | 焊缝在工件上的位置固定,编程直观 |
| 更换焊枪 | 工具坐标系 | 只需重新标定 TCP,程序不用改 |
| 多机器人协同 | 世界坐标系 | 统一基准,避免碰撞 |
嗯,坐标系这东西,刚开始觉得抽象,用多了就习惯了。记住一句话:关节坐标系管角度,世界坐标系管位置,工具坐标系管焊枪,工件坐标系管焊缝。把这四把尺子用好,焊接编程就顺了。