2、常见坐标系:世界坐标系、机器人基坐标系、工具坐标系、相机坐标系

做机器人或者自动驾驶的,天天跟坐标系打交道。说白了,坐标变换就是不同坐标系之间的“翻译”工作。你想想看,机器人要抓个杯子,相机看到了杯子在哪,但机器人得用自己的“手”去抓,这中间就得把相机看到的坐标,翻译成机器人手臂能理解的坐标。

我个人习惯把坐标系分成四类:世界坐标系、机器人基坐标系、工具坐标系、相机坐标系。这四类搞明白了,日志排查时你就能快速定位问题出在哪个环节。

2.1 世界坐标系(World Frame)

世界坐标系,你可以理解为整个场景的“绝对参考系”。它固定在地面上,所有其他坐标系都相对于它来定义。

特点:

  • 固定不动,不随机器人运动而改变
  • 通常定义在机器人安装底座的中心,或者房间的某个角落
  • 单位一般是米(m)

我在项目中遇到过:有一次调试移动机器人,发现定位数据总是跳变。查了半天,原来是世界坐标系的原点定义在了机器人初始位置,但机器人一移动,原点也跟着跑了。嗯,这其实就变成了“移动坐标系”,不是真正的世界坐标系了。

避坑指南:世界坐标系一定要选一个物理上固定的点。比如工厂地面上的某个标记点,或者建筑墙角。别偷懒用机器人启动时的位置。

2.2 机器人基坐标系(Base Frame)

机器人基坐标系,固定在机器人底座上。它是机器人自身的“根坐标系”。所有关节的运动学计算,最终都要回到这个坐标系。

特点:

  • Z轴通常竖直向上(符合机器人行业惯例)
  • 原点在机器人底座安装面的中心
  • 机器人出厂时,这个坐标系就定死了

为什么重要?因为机器人控制器内部的所有运动学正解、逆解,都是基于基坐标系算的。如果你给机器人发一个目标位姿,它默认就是在基坐标系下的。

我的小技巧:日志里看到机器人末端位姿时,先确认它是相对于哪个坐标系的。很多新手直接拿基坐标系下的位姿去跟相机数据对比,结果对不上。我建议你养成习惯:日志里每个位姿数据,都带上坐标系标签。

2.3 工具坐标系(Tool Frame)

工具坐标系,定义在机器人末端执行器上。比如焊枪的尖端、夹爪的中心、吸盘的中心点。

特点:

  • 随机器人末端运动而运动
  • 原点通常在工具的工作点(TCP,Tool Center Point)
  • Z轴方向一般指向工具的工作方向

我曾经:遇到过一个很隐蔽的bug。机器人抓取零件时,位置总是偏几毫米。查日志发现,工具坐标系的TCP标定数据里,Z轴偏移写成了正数,但实际应该是负数。就这么一个符号错误,折腾了我一整天。

警告:工具坐标系标定一定要做“四点法”或“六点法”验证。别相信一次标定就完事。我见过太多因为工具磨损、更换后忘记重新标定导致的坐标变换错误。

2.4 相机坐标系(Camera Frame)

相机坐标系,定义在相机的光学中心。它是视觉系统自己的“小世界”。

特点:

  • Z轴指向相机前方(沿着光轴方向)
  • X轴向右,Y轴向下(图像坐标系的方向)
  • 单位也是米,但相机内部计算时常用像素

为什么容易出错?因为相机坐标系跟机器人坐标系的方向往往不一致。相机Z轴朝前,机器人Z轴朝上。你想想看,直接把相机测到的坐标发给机器人,那肯定乱套。

核心要点:相机坐标系到机器人基坐标系的变换,就是“手眼标定”要解决的问题。日志里如果看到相机数据直接用了,没经过变换矩阵,那十有八九是错的。

2.5 四个坐标系的关系图

下面这张图,我画了四个坐标系之间的典型关系。你排查日志时,可以对照这张图,看看数据流走到哪一步断了。

世界坐标系 X Y Z 机器人基坐标系 X Y Z 工具坐标系 X Y Z 相机坐标系 X Y Z T_world_base T_base_tool T_base_cam T_world_cam 图例 直接变换 间接变换 坐标系原点 T = 变换矩阵

这张图里,T_world_base 是世界到基坐标系的变换,T_base_tool 是基到工具的变换,T_base_cam 是基到相机的变换。日志里你看到的数据,最终都要能串联成一条完整的变换链。

2.6 日志排查时的常见错误

根据我的经验,日志里跟坐标系相关的错误,主要有这么几类:

错误类型 日志表现 可能原因
坐标系混淆 位姿数据数值异常大或小 把相机坐标系下的数据当成了基坐标系下的
变换矩阵缺失 数据直接透传,没有经过矩阵乘法 忘了做手眼标定,或者标定结果没加载
符号错误 位置偏差正好是某个轴的反方向 变换矩阵里的平移向量符号写反了
单位不一致 数值差1000倍 相机输出毫米,机器人用米,没做单位转换

我的排查习惯:拿到日志后,先看数据有没有经过变换矩阵。如果看到相机原始数据直接赋值给了机器人目标位姿,那基本可以断定问题出在这里。我会在代码里加一行打印,把变换前后的数据都输出,一对比就清楚了。

嗯,这四个坐标系,你搞清楚了,日志排查时就能快速定位是哪个环节出了问题。别小看这些基础概念,我见过太多工程师在坐标变换上栽跟头。记住一句话:数据流到哪里,坐标系就要跟到哪里。