第二节:坐标系基础——世界坐标系、机器人基坐标系、工具坐标系、用户坐标系定义与转换

各位同学,今天我们来聊聊坐标系。说实话,我刚入行那会儿,觉得坐标系这东西太简单了——不就是三个轴嘛,谁不会?结果第一次调试机器人时,工具撞到工件上,我才意识到:坐标系搞不清楚,机器人就是个“瞎子”。

坐标系是机器人抓取的“地图语言”。没有坐标系,你告诉机器人“往右走10厘米”,它根本不知道“右”是哪个方向。所以,咱们得把这四种坐标系吃透。

一、世界坐标系(World Coordinate System)

世界坐标系,说白了就是“宇宙原点”。它固定在地面上,通常放在机器人工作空间的某个角落。所有其他坐标系,最终都要换算到这个世界坐标系里。

定义:一个固定的笛卡尔坐标系,原点O_w,X_w、Y_w、Z_w轴符合右手定则。Z_w轴一般垂直向上。

我个人的习惯:把世界坐标系原点放在机器人底座正前方的地面上。这样,机器人基坐标系的原点就在世界坐标系Z轴正上方某个高度。换算起来特别方便。

核心作用:世界坐标系是“终极参考系”。机器人抓取时,目标物体的位置通常用世界坐标描述。

二、机器人基坐标系(Robot Base Coordinate System)

基坐标系固定在机器人底座上。每个机器人出厂时,基坐标系就定死了。比如ABB机器人,基坐标系原点在底座安装面中心,Z轴垂直向上,X轴指向机器人前方。

定义:原点O_b,固定在机器人底座。Z_b轴沿机器人第一关节轴线向上,X_b轴指向机器人“正面”。

我曾经踩过一个坑:有次换了一个机器人型号,没仔细看基坐标系定义,直接按旧型号的坐标编程。结果机器人抓取时偏了5厘米。后来一查,新机器人的X轴方向跟旧型号差了90度。所以,拿到新机器人,第一件事就是确认基坐标系方向。

坐标系 原点位置 Z轴方向 X轴方向
世界坐标系 工作空间固定点 垂直向上 任意(右手定则)
基坐标系 机器人底座中心 沿第一关节轴线向上 机器人正面方向

三、工具坐标系(Tool Coordinate System)

工具坐标系,就是“机器人手”的坐标系。你想想看,机器人末端装了个夹爪,夹爪的指尖在哪里?夹爪怎么抓?这些都得靠工具坐标系来描述。

定义:原点O_t在工具中心点(TCP,Tool Center Point)。Z_t轴一般沿工具伸出方向,X_t、Y_t根据工具形状定义。

怎么定义?常用的方法是“六点法”:

  1. 移动机器人,让TCP碰一个固定尖点,记录位置P1
  2. 改变机器人姿态,再碰同一个尖点,记录P2、P3、P4
  3. 用这四个点算出TCP位置
  4. 再用两个点定义Z轴和X轴方向

我的经验:定义工具坐标系时,TCP精度直接影响抓取精度。我一般会做5次测量取平均,把误差控制在0.1mm以内。别嫌麻烦,后面调试会省很多事。

四、用户坐标系(User Coordinate System)

用户坐标系,说白了就是“你说了算”的坐标系。比如,工件放在一个斜面上,你不想每次都算世界坐标,那就定义一个用户坐标系,让它的XY平面贴着斜面。这样编程就简单多了。

定义:用户自定义的笛卡尔坐标系,原点O_u,轴方向任意。通常用三点法定义:原点、X轴方向点、XY平面内一点。

举个例子:有一次,客户要在圆弧形工件上抓取。工件表面是弧面,用世界坐标编程,每个点都要算半天。我定义了一个用户坐标系,让Z轴始终垂直于弧面。这样,抓取点的Z坐标就是常数,编程量减少80%。

五、坐标系转换——核心中的核心

四种坐标系之间怎么转换?说白了就是矩阵乘法。每个坐标系相对于父坐标系,都有一个4x4的齐次变换矩阵。

转换关系:

  • 世界坐标系 → 基坐标系:T_w2b(固定值,安装机器人时标定)
  • 基坐标系 → 工具坐标系:T_b2t(由机器人正运动学算出)
  • 工具坐标系 → 用户坐标系:T_t2u(由用户定义)

如果要知道用户坐标系下的一个点P_u在世界坐标系下的位置P_w,公式是:

P_w = T_w2b * T_b2t * T_t2u * P_u

嗯,这里要注意:矩阵乘法顺序不能错。从右往左读,就是“从用户坐标一步步回到世界坐标”。

警告:坐标系转换时,最容易犯的错误是“顺序搞反”。我见过一个工程师,把T_w2b写成了T_b2w,结果机器人直接往反方向跑。幸好速度慢,没撞坏东西。记住:矩阵下标“从哪到哪”,乘法时“从右到左”。

六、知识体系总览

下面这张图,把四种坐标系的关系画清楚了。你仔细看看,就能明白它们是怎么串起来的。

世界坐标系 固定在地面 基坐标系 机器人底座 工具坐标系 TCP位置 用户坐标系 自定义参考 T_w2b T_b2t T_t2u 也可直接定义 坐标系转换关系图 P_w = T_w2b · T_b2t · T_t2u · P_u

你看,世界坐标系在最顶层,基坐标系从世界坐标系“长出来”,工具坐标系又从基坐标系“长出来”,用户坐标系则依附于工具坐标系。每一层转换,就是一个矩阵。

七、实际应用中的坐标系选择

搞清楚了定义,咱们说说实际怎么选。我个人总结了一个原则:能用用户坐标系,就别用世界坐标系。

为什么?因为用户坐标系可以跟着工件走。比如,传送带上的工件,位置一直在变。你定义用户坐标系跟着传送带动,程序里写的抓取点坐标就不用改。否则,每个工件你都得重新算世界坐标,累死你。

避坑指南:我曾经在一个项目中,工件放在旋转台上。我偷懒用了世界坐标系,结果旋转台一转,所有抓取点全废了。后来改成用户坐标系,让坐标系跟着旋转台转,问题就解决了。所以,坐标系选对了,能省一半的编程时间。

总结一下:

  • 世界坐标系:固定参考,用于全局定位
  • 基坐标系:机器人自己的“身体坐标”
  • 工具坐标系:描述“手”在哪、怎么抓
  • 用户坐标系:自定义参考,简化编程
  • 转换:矩阵乘法,从右到左,顺序不能错

好了,坐标系这块就讲这么多。你只要记住:坐标系就是机器人的“地图”,地图画对了,机器人才能找到路。下次咱们聊聊怎么用这些坐标系做抓取规划。

可可精品资料库