2. 坐标系基础:世界坐标系、机器人基坐标系、工具坐标系、用户坐标系、相机坐标系
做3D视觉定位,说白了就是回答一个问题:“相机看到的物体,到底在机器人空间的哪个位置?”
要回答这个问题,绕不开坐标系。我见过不少新手,算法调得挺溜,一到现场联调就抓瞎——坐标对不上,位置偏得离谱。十有八九,是坐标系搞混了。
这一章,咱们就把五个核心坐标系掰开揉碎讲清楚。你想想看,坐标系就像地图上的不同参考系。同一个点,在不同地图上的坐标值完全不同。搞明白它们之间的变换关系,标定才算入了门。
2.1 世界坐标系(World Coordinate System)
世界坐标系,是整个场景的参考系。它不依附于任何设备,是一个固定的、全局的坐标系。
- 作用:定义所有物体、机器人的位置。
- 特点:一旦选定,不再移动。
- 常见选法:车间地角、产线固定立柱、或者干脆和机器人基座标系重合。
2.2 机器人基坐标系(Robot Base Coordinate System)
机器人基坐标系,是机器人自己的“家”。原点在机器人安装底座的中心,Z轴一般垂直向上。
机器人所有关节运动、末端位姿,最终都是相对于这个坐标系算出来的。你发给机器人的目标点,本质上就是基坐标系下的坐标。
| 坐标系 | 原点位置 | Z轴方向 | 是否固定 |
|---|---|---|---|
| 世界坐标系 | 用户自定义(如地角) | 用户定义 | 固定 |
| 机器人基坐标系 | 机器人底座中心 | 垂直向上 | 固定(相对机器人) |
2.3 工具坐标系(Tool Coordinate System, TCP)
工具坐标系,定义的是机器人末端执行器的位姿。它的原点叫TCP(Tool Center Point),也就是工具的有效工作点。
比如你装了一个焊枪,TCP就是焊丝末端;装了一个吸盘,TCP就是吸盘中心。机器人控制器的所有运动指令,最终都是控制TCP到达目标位置。
- 为什么需要TCP标定? 因为工具是后装的,机器人出厂时只知道法兰盘的位置,不知道你装了什么工具。
- 标定方法:常用“四点法”或“六点法”,让机器人以不同姿态触碰一个固定尖点,反算出TCP偏移。
2.4 用户坐标系(User Coordinate System)
用户坐标系,是用户为了方便编程而自定义的坐标系。它通常定义在工作台、夹具或工件上。
举个例子:你有一个倾斜的焊接夹具。如果直接在机器人基坐标系下编程,每个点的坐标都很奇怪,而且夹具一换位置,所有程序都得重写。
但如果你在夹具上定义一个用户坐标系,让Z轴垂直于夹具表面,编程就变得非常直观。而且夹具移动后,只需要重新标定用户坐标系,程序里的相对路径不用改。
| 坐标系 | 定义者 | 典型用途 | 是否可移动 |
|---|---|---|---|
| 用户坐标系 | 用户 | 工件定位、阵列编程 | 可重新定义 |
| 工具坐标系 | 用户 | 定义工具末端 | 随工具更换 |
2.5 相机坐标系(Camera Coordinate System)
相机坐标系,是3D视觉的“眼睛”。它的原点在相机光心,Z轴沿光轴方向指向场景。
相机看到的所有点云、图像,最初都是在这个坐标系下表达的。但机器人不认识相机坐标,它只认自己的基坐标或用户坐标。
所以,手眼标定的核心任务,就是求出相机坐标系到机器人坐标系的变换矩阵。
- 眼在手上(Eye-in-Hand):相机装在机器人末端,随机器人移动。标定结果是相机到工具坐标系的变换。
- 眼在手外(Eye-to-Hand):相机固定安装,不随机器人动。标定结果是相机到机器人基坐标系(或世界坐标系)的变换。
2.6 坐标系关系总览
这五个坐标系的关系,可以用一张图来概括。我建议你把它记在脑子里,每次做标定前都过一遍。
2.7 坐标系变换的本质
搞清楚了五个坐标系,接下来就是它们之间的变换。说白了,就是求一个4x4的齐次变换矩阵。
一个点P,在坐标系A下的坐标是PA,在坐标系B下的坐标是PB。它们的关系是:
P_B = T_A_to_B * P_A
其中TA_to_B就是变换矩阵,包含旋转和平移。
在3D视觉标定中,我们最关心的就是这条变换链:
- 相机坐标系 → 工具坐标系(眼在手上标定)
- 工具坐标系 → 机器人基坐标系(机器人运动学)
- 机器人基坐标系 → 世界坐标系(机器人安装标定)
- 或者:相机坐标系 → 世界坐标系(眼在手外标定)