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 四种坐标系的关系

这四种坐标系不是孤立的,它们之间通过齐次变换矩阵相互转换。

简单来说:

  • 关节坐标系 → 世界坐标系:通过正运动学计算
  • 世界坐标系 → 关节坐标系:通过逆运动学计算
  • 工具坐标系:相对于世界坐标系的一个偏移
  • 工件坐标系:相对于世界坐标系的一个偏移

你想想看,最终机器人执行焊接时,其实是这么个流程:

  1. 程序里存的是工件坐标系下的焊缝坐标
  2. 系统自动换算到世界坐标系
  3. 再换算到工具坐标系
  4. 最后通过逆运动学算出关节角度
核心公式:
世界坐标 = 工件坐标系原点 + 工件坐标系下的坐标
工具末端坐标 = 世界坐标 + 工具坐标系偏移

3.6 知识体系结构图

下面这张图展示了四种坐标系的关系和转换路径:

关节坐标系 J1~J6 角度值 机器人原生语言 世界坐标系 固定基准 机器人底座原点 工具坐标系 焊枪末端 TCP 位置+姿态 工件坐标系 焊缝地图 编程基准 正运动学 逆运动学 偏移变换 偏移变换 齐次变换矩阵 4x4 矩阵统一转换

3.7 实际应用中的选择策略

说了这么多,到底什么时候用哪个坐标系?

场景 推荐坐标系 原因
手动示教点位 关节坐标系 可以精确控制每个轴,避免奇异点
直线/圆弧焊接 工件坐标系 焊缝在工件上的位置固定,编程直观
更换焊枪 工具坐标系 只需重新标定 TCP,程序不用改
多机器人协同 世界坐标系 统一基准,避免碰撞
曾经踩过的坑:有一次我图省事,在工件坐标系下直接做了姿态调整,结果焊枪撞到了夹具。后来发现,姿态调整应该在工具坐标系下做,因为工具坐标系才是焊枪的「手」,调整姿态更安全。

嗯,坐标系这东西,刚开始觉得抽象,用多了就习惯了。记住一句话:关节坐标系管角度,世界坐标系管位置,工具坐标系管焊枪,工件坐标系管焊缝。把这四把尺子用好,焊接编程就顺了。


专注资料整理