3. 坐标变换链:链式法则、基坐标系与工具坐标系、手眼标定基础
坐标变换链,说白了就是机器人身上一串坐标系的“接力赛”。
你想想看,机器人从基座到末端,中间隔着好几个关节。每个关节都有自己的坐标系。要算出末端在空间里的精确位置,就得把这串变换一个一个传下去。
我个人习惯把这条链叫做“从地到手的路径”。基座固定在地上,工具装在手上,中间所有关节的变换串起来,就是完整的坐标变换链。
3.1 链式法则:变换的乘法规则
链式法则的核心就一句话:连续变换等于矩阵连乘。
假设机器人有 6 个关节,从基座到末端,变换关系是这样的:
T_base_to_tool = T_1 * T_2 * T_3 * T_4 * T_5 * T_6
每个 T 都是一个 4x4 的齐次变换矩阵。乘法的顺序不能乱,从左到右依次作用。
关键点:矩阵乘法不满足交换律。先转关节 2 再转关节 3,和先转关节 3 再转关节 2,结果完全不同。
我在项目中遇到过一个问题:调试六轴机器人时,末端位置总是偏了几毫米。查了半天,发现是变换矩阵的乘法顺序写反了。嗯,这种错误很隐蔽,但后果很严重。
3.2 基坐标系与工具坐标系
这两个坐标系是整个变换链的起点和终点。
| 坐标系 | 位置 | 作用 | 特点 |
|---|---|---|---|
| 基坐标系 | 机器人底座 | 全局参考系 | 固定不动,世界坐标的锚点 |
| 工具坐标系 | 末端执行器 | 局部操作系 | 随工具变化,TCP 的参考 |
基坐标系是机器人的“老家”。所有运动指令最终都要换算到基坐标系下执行。它通常定义在底座中心,Z 轴向上。
工具坐标系就灵活多了。你换个焊枪、换个夹爪,TCP(工具中心点)的位置就变了。如果不更新工具坐标系,机器人以为的“到位”和实际位置就会对不上。
我的习惯:每次换工具,第一件事就是重新标定工具坐标系。别偷懒,这一步省不了。
3.3 手眼标定基础
手眼标定,解决的是“眼睛看到的位置”和“手能到达的位置”之间的对应关系。
有两种常见配置:
- 眼在手上(Eye-in-Hand):相机装在机器人末端,跟着工具一起动。
- 眼在手外(Eye-to-Hand):相机固定安装,看着机器人干活。
标定的本质,就是求解一个变换矩阵:
相机坐标系 → 机器人基坐标系(或工具坐标系)
我曾经调试过一个视觉抓取项目。相机识别到了工件位置,但机器人总是抓偏。折腾了两天,最后发现是手眼标定矩阵里有一个符号写反了。说白了,标定不准,后面全是白费功夫。
避坑指南:标定板要足够大,覆盖整个工作空间。标定点位要分布均匀,别只拍一个角落。我见过有人用 A4 纸当标定板,结果边缘畸变严重,标定误差直接翻倍。
3.4 坐标变换链的完整流程
把上面三个概念串起来,就是一条完整的坐标变换链:
- 从基坐标系出发,经过各关节变换,到达法兰盘。
- 从法兰盘到工具坐标系,加上工具偏移量。
- 如果用了视觉,再叠加上手眼标定矩阵。
- 最终得到工具末端在基坐标系下的位姿。
每一步都是矩阵乘法。少一个环节,结果就错了。
3.5 常见问题与排查思路
坐标变换链出问题时,症状很明显:机器人动作不对,或者视觉引导偏差大。
我总结了一套排查步骤:
- 第一步:检查基坐标系定义。是不是和设计图纸一致?
- 第二步:验证工具坐标系。TCP 位置对不对?方向对不对?
- 第三步:检查变换顺序。矩阵乘法顺序有没有写反?
- 第四步:验证手眼标定。标定板位置、标定点数量、重投影误差。
一个小技巧:在代码里加一个“回环验证”。让机器人走一个已知路径,然后反向计算,看能不能回到原点。能回来,说明变换链基本正确。
嗯,坐标变换链这东西,看着是数学,其实是工程。公式写对了只是第一步,实际调试中各种细节才是真正的坑。多动手、多验证,慢慢就有感觉了。