第三章 机器人坐标系:世界坐标系、基坐标系、工具坐标系、工件坐标系

做机器人编程,坐标系是绕不开的坎。我见过不少新手,代码写得挺溜,一碰到坐标系就懵了。其实没那么玄乎,说白了就是给机器人一个「定位系统」——告诉它你在哪、要去哪、手里拿的啥、要干的活在哪。

今天咱们就把这四个坐标系掰开揉碎了讲清楚。嗯,我保证,看完你就能明白它们各自扮演什么角色。

3.1 世界坐标系——机器人的「宇宙原点」

世界坐标系,你可以把它想象成整个车间的「绝对坐标」。它固定在地面上,一般由机器人厂家标定好,不会动。

为什么要搞这么个坐标系?举个例子:你车间里有三台机器人协同干活,如果没有一个统一的参考系,A机器人说「往右走100毫米」,B机器人根本不知道往哪走。世界坐标系就是那个「共同语言」。

关键点:世界坐标系的原点通常设在机器人底座安装面的中心,Z轴竖直向上,X轴指向机器人前方。这个坐标系一旦设定,在整个系统生命周期内基本不变。

我在项目中遇到过一件事:有个客户把机器人底座装歪了,结果所有世界坐标系的点位都偏了。后来我们重新标定了底座,才把问题解决。所以啊,安装时一定要保证底座水平,不然后面全是坑。

3.2 基坐标系——机器人的「身体坐标」

基坐标系,也叫机器人坐标系。它跟世界坐标系很像,但有个本质区别:基坐标系是跟着机器人走的。

你想想看,如果机器人装在一个移动平台上,世界坐标系固定在地面,但基坐标系会随着平台移动。这样,机器人内部计算关节角度时,用的就是基坐标系。

坐标系 固定方式 用途
世界坐标系 固定在地面 多机器人协同、全局定位
基坐标系 固定在机器人底座 机器人运动学计算、示教

实际编程时,我建议你尽量用基坐标系来示教点位。为什么?因为世界坐标系一旦变了(比如机器人被挪了位置),你之前示教的点全废了。但基坐标系下的点,只要机器人本体没变,就还能用。

我的习惯:新建项目时,先确认基坐标系与世界坐标系的关系。如果机器人固定安装,两者基本重合;如果是移动平台,一定要搞清楚偏移量。

3.3 工具坐标系——机器人的「手」

工具坐标系,这个就更有意思了。机器人末端装了什么?焊枪?夹爪?还是吸盘?工具坐标系就是用来描述这个「手」的位置和姿态的。

说白了,机器人控制的是法兰盘(第六轴末端),但我们真正关心的是工具尖端点(TCP,Tool Center Point)。比如焊枪的尖端、夹爪的中心点。

为什么要单独搞个工具坐标系?因为工具一换,TCP就变了。你想想看,装一把长焊枪和装一个短夹爪,同样的法兰盘位置,工具尖端的位置能一样吗?

注意:工具坐标系必须标定!我曾经见过一个新手,没标定TCP就直接干活,结果焊枪戳到工件上去了。标定方法一般有「四点法」「六点法」,不同品牌机器人略有差异,但原理一样——让TCP绕不同方向旋转,通过算法算出偏移量。

标定工具坐标系时,我有个小技巧:找一个尖锐的固定点(比如锥形针),让机器人用不同姿态去碰这个点。姿态变化越大,标定结果越准。嗯,这个经验是从一次失败中得来的——当时图省事只用了两个姿态,结果偏差了2毫米。

3.4 工件坐标系——工件的「专属坐标」

工件坐标系,也叫用户坐标系。它是定义在工件上的坐标系。为什么要搞这个?因为工件可能放在不同位置,或者有多个相同的工件要加工。

举个例子:你要在10块钢板上钻孔,每块钢板放的位置不一样。如果没有工件坐标系,你得为每块钢板重新示教所有点位,累死你。有了工件坐标系,你只需要示教一次钻孔路径,然后每块钢板定义一个工件坐标系,程序自动偏移。

工件坐标系的标定方法通常是「三点法」:

  1. 在工件上选一个原点(比如左下角)
  2. 选一个X轴方向上的点
  3. 选一个Y轴方向上的点(或者XY平面内的点)

系统会根据这三个点自动计算出坐标系。Z轴方向由右手定则确定。

核心思想:工件坐标系让程序与工件位置解耦。你只需要关心「工件坐标系下的路径」,至于工件放哪,那是坐标系的事。

3.5 四个坐标系的关系——一张图说清楚

这四个坐标系的关系,我用一句话总结:

世界坐标系是全局参考,基坐标系是机器人本体参考,工具坐标系是末端执行器参考,工件坐标系是加工对象参考。

它们之间的变换关系是这样的:

世界坐标系 → 基坐标系 → 法兰盘坐标系 → 工具坐标系
                ↓
            工件坐标系

机器人实际运动时,系统会做一系列坐标变换:

  1. 从工件坐标系下的目标点,变换到世界坐标系
  2. 从世界坐标系,变换到基坐标系
  3. 从基坐标系,通过逆运动学算出各关节角度
  4. 考虑工具坐标系,修正末端位置

听起来复杂?其实机器人控制器都帮你算好了。你只需要告诉它:用哪个工具坐标系、哪个工件坐标系,然后示教点位就行。

避坑指南:我曾经犯过一个错——切换工具后忘了更新程序里的工具坐标系编号。结果机器人用焊枪的TCP去执行夹爪的路径,直接撞上了。从那以后,我每次换工具都会在程序开头加一行检查代码,确认当前工具编号是否正确。

3.6 实战建议

说了这么多,给你几条实在的建议:

  • 先标定工具坐标系,再标定工件坐标系。顺序不能乱,因为工件坐标系标定时要用到工具TCP。
  • 给坐标系起个好名字。别用默认的「Tool1」「Tool2」,改成「焊枪_长」「夹爪_大」,不然三个月后你自己都分不清。
  • 定期检查标定结果。工具磨损、碰撞都可能导致TCP偏移。我一般每个月做一次TCP验证。
  • 善用工件坐标系做阵列。如果有多个相同工件,用工件坐标系偏移比逐个示教快10倍。

好了,关于坐标系就讲这么多。记住一句话:坐标系是机器人的「世界观」,搞懂了它,编程就成功了一半。下一章咱们聊聊机器人运动学,到时候你会更深刻地理解坐标系的重要性。