1. 标定基础与坐标系

各位同学,欢迎来到《机器人标定与手眼标定协同调试实战》的第一章。

做标定,说白了就是搞清楚「机器人到底在哪儿」以及「它看到的物体在哪儿」。这两个问题搞不清楚,后面所有的高精度动作都是空谈。我刚开始接触机器人时,总觉得标定是可有可无的步骤,直到有一次在产线上调试,机器人抓取精度差了 2mm,零件全废了……嗯,从那以后我再也不敢轻视标定了。

1.1 刚体变换与齐次矩阵

机器人学里,我们研究的对象都是刚体。刚体不会变形,它只有位置和姿态的变化。描述这种变化,最优雅的工具就是齐次矩阵。

一个 4×4 的齐次矩阵长这样:

| R11  R12  R13  tx |
| R21  R22  R23  ty |
| R31  R32  R33  tz |
|  0    0    0    1  |

左上角 3×3 是旋转矩阵 R,描述姿态。右上角 3×1 是平移向量 t,描述位置。最后一行永远是 [0 0 0 1],这是齐次坐标的约定。

我的习惯:写代码时,我总把齐次矩阵命名为 T_AB,表示从坐标系 B 到坐标系 A 的变换。命名清晰了,后面推导手眼标定方程时能少掉一半的头发。

你想想看,为什么非要用 4×4 矩阵?因为连续变换可以写成矩阵乘法。比如从世界到相机,再经过工具到末端,整个链就是:

T_WC = T_WB * T_BE * T_ET * T_TC

一次乘法,搞定所有坐标变换。这就是齐次矩阵的魅力。

1.2 坐标系定义

做标定前,必须把每个坐标系的位置搞清楚。我见过太多工程师,标定做完了才发现坐标系定义错了,白忙一场。

坐标系 符号 位置 作用
世界坐标系 {W} 固定在机器人基座或工作空间 全局参考,所有坐标的最终归宿
基座坐标系 {B} 机器人底座安装面中心 机器人自身运动学计算的起点
工具坐标系 {T} 末端执行器(夹爪、焊枪等) 描述工具尖端的位姿
相机坐标系 {C} 相机光心 视觉测量的参考系

这里有个关键点:世界坐标系和基座坐标系,在很多场景下是重合的。但我不建议你这么做。我在项目中习惯把世界坐标系放在工作台的一个固定角点上,这样调试时方便测量。

我曾经踩过的坑:有一次,我把世界坐标系设在了机器人基座上,结果后来移动了机器人,所有标定数据全废了。从那以后,世界坐标系我永远放在固定不动的结构件上。

1.3 标定的数学本质

标定到底在干什么?说白了,就是求解一个或多个未知的变换矩阵。

举个例子,手眼标定(Hand-Eye Calibration)的核心方程是:

AX = XB

其中:

  • A:机器人末端在两次运动之间的变换(从运动学得到)
  • B:相机在两次运动之间看到的标定板变换(从视觉得到)
  • X:未知的相机到末端(或末端到相机)的变换

这个方程看起来简单,但求解起来并不容易。因为 A 和 B 都有测量误差,我们需要用最小二乘法或非线性优化来逼近真实解。

核心思想:标定不是一次测量就能搞定的。你需要采集多组数据(至少 3 组,我建议 10 组以上),然后用优化算法求解。数据越多,噪声被平均掉的效果越好。

1.4 知识体系总览

下面这张图,把本章的核心概念串起来了。你可以把它当作后续章节的导航图。

标定基础与坐标系知识体系 标定基础与坐标系知识体系 标定(Calibration) 刚体变换 坐标系定义 数学本质 旋转矩阵 R 平移向量 t 世界 {W} 基座 {B} 工具 {T} 相机 {C} AX = XB 方程 最小二乘 / 非线性优化 核心:标定 = 求解未知变换矩阵,需要多组数据 + 优化算法 坐标系定义清晰是标定成功的前提,命名规范能减少推导错误

1.5 本章小结

这一章我们打下了标定的理论基础。记住三个要点:

  • 齐次矩阵是描述刚体变换的瑞士军刀,4×4 搞定一切
  • 坐标系定义要清晰、固定、可复现,这是标定成功的基石
  • 标定的本质是求解未知变换,多组数据 + 优化算法是标准套路