机器人基础坐标系理论:世界、基座、工具与用户坐标系
做手眼标定,说白了就是搞清楚几个坐标系之间怎么换算。我见过不少新手,一上来就急着跑标定程序,结果数据乱成一团——根本原因就是坐标系概念没吃透。
今天咱们就把这四个核心坐标系掰开揉碎了讲。你想想看,机器人要抓一个杯子,它得知道杯子在哪(世界坐标),自己站在哪(基坐标),手爪朝哪(工具坐标),以及工作台怎么摆(用户坐标)。缺一个,这活就干不成。
1. 世界坐标系——一切测量的起点
世界坐标系是全局参考框架。它固定在地面或车间某个位置,所有其他坐标系都相对于它定义。你可以把它想象成整个工厂的GPS原点。
我在一个汽车焊装项目里遇到过这种情况:两条产线各有一台机器人,分别标定后拼在一起焊接,结果焊缝偏了3毫米。查了两天才发现——两台机器人的世界坐标系原点定义不一致。从那以后,我习惯在项目一开始就用激光跟踪仪把世界坐标系打牢。
| 属性 | 说明 |
|---|---|
| 固定性 | 一旦设定,整个项目周期不变 |
| 参考作用 | 所有坐标系变换的根节点 |
| 常见定义方式 | 车间地脚螺栓、激光跟踪仪标定、CAD模型对齐 |
| 单位 | 通常为毫米(mm) |
2. 机器人基坐标系——机器人的"肚脐眼"
基坐标系固定在机器人底座安装面上。它的原点在机器人第一轴中心,Z轴沿第一轴轴线向上。说白了,这就是机器人自己的"肚脐眼"——所有关节运动都从这儿算起。
基坐标系与世界坐标系之间有一个固定的变换关系。这个变换就是机器人安装位置决定的。你想想看,机器人挪个地方,基坐标系相对世界坐标系就变了,但机器人内部的运动学计算不受影响。
3. 工具坐标系——末端执行器的"手"
工具坐标系定义在机器人末端法兰盘上,但它的原点通常偏移到工具尖端(TCP,Tool Center Point)。比如焊枪的焊丝尖端、抓手的夹持中心、相机的光心。
为什么要单独定义工具坐标系?因为机器人末端法兰盘只是一个安装接口,真正的"手"是焊枪、抓手或相机。工具坐标系就是告诉机器人:你的手到底在哪儿、朝哪个方向。
我记得有个3C装配项目,机器人总是抓偏0.5毫米。排查到最后发现——工具坐标系里的TCP偏移量输错了。操作员换了一把新抓手,但没更新TCP参数。嗯,这种坑踩过一次就记住了。
| 参数 | 含义 | 典型值 |
|---|---|---|
| X/Y/Z | TCP相对法兰盘的位置偏移 | 如 [0, 0, 150] mm |
| Rx/Ry/Rz | 工具姿态相对法兰盘的旋转 | 如 [0, 0, 0] 度 |
| 质量/重心 | 用于动力学补偿 | 如 2.5 kg |
4. 用户坐标系——工作台的"本地视角"
用户坐标系是用户自己定义的参考系。它通常设在工作台面、夹具或传送带上。说白了,就是让机器人用"工作台的视角"来理解位置。
举个例子:你有一个焊接工装,上面有10个焊点。如果直接用基坐标系编程,工装稍微挪一下位置,10个焊点全得重新示教。但如果用用户坐标系,工装移动后只需要重新定义用户坐标系的原点,焊点位置自动跟着变。
我做过一个项目,客户要求每天换三种不同尺寸的工件。我们给每种工件定义了一个用户坐标系,换型时一键切换,省掉了大量示教时间。
5. 坐标系之间的变换关系
这四个坐标系不是孤立的。它们通过齐次变换矩阵(4×4矩阵)串联起来。你想想看,机器人要抓一个放在工作台上的杯子,它需要知道:
- 杯子在世界坐标系中的位置(由视觉系统提供)
- 世界坐标系到基坐标系的变换(固定值,安装时标定)
- 基坐标系到工具坐标系的变换(由机器人运动学实时计算)
- 用户坐标系到世界坐标系的变换(用户定义)
把这些变换串起来,就形成了完整的坐标链:
世界 → 基 → 关节 → 法兰 → 工具 → 相机
↑ ↑ ↑ ↑ ↑
固定安装 运动学 实时反馈 TCP偏移 手眼标定
手眼标定要解决的,就是"相机坐标系"与"工具坐标系"(或"基坐标系")之间的变换关系。这个关系一旦确定,视觉系统看到的物体位置就能换算成机器人能理解的抓取位置。
6. 小结:一张表理清四个坐标系
| 坐标系 | 原点位置 | 固定/移动 | 典型用途 |
|---|---|---|---|
| 世界坐标系 | 车间固定点 | 固定 | 全局参考、多机器人协同 |
| 基坐标系 | 机器人底座 | 固定(相对机器人) | 运动学计算、示教编程 |
| 工具坐标系 | 末端执行器尖端 | 随末端移动 | 抓取、焊接、涂胶 |
| 用户坐标系 | 工作台/夹具 | 固定(相对工作台) | 工件编程、换型切换 |