[手眼标定]什么是手眼标定:从抓取例子到工程验收
什么是手眼标定:从抓取例子到工程验收
手眼标定是机器视觉系统把“相机看到的位置”转换成“机器人可以运动到的位置”的关键环节。本文从一次机器人抓取任务开始,依次介绍坐标系、眼在手上与眼在手外、三维手眼方程 AX = XB、二维九点标定、旋转偏心、工具补偿以及工程验收方法。
文中统一采用列向量约定:
表示把 B 坐标系中的点转换到 A 坐标系。示意图和数值均用于解释几何关系,不代表某台设备的实测精度。
第一部分:从一次机器人抓取理解手眼标定
1. 从一个看起来很简单的任务开始
一台工业相机俯视传送带,机器人需要用吸嘴取走金属零件。视觉程序识别到零件中心位于图像的 (1200, 800),方向角为 25°。接下来,把这三个数发给机器人就能抓取吗?
还不能。1200、800 通常是以像素为单位的图像位置,机器人需要的是以毫米为单位、相对于机器人基坐标系的目标位姿。图像中的 25° 也依赖图像坐标轴、角度正方向和特征定义,不能直接作为机器人末端的旋转指令。
现场还有几个很具体的问题:相机装在机器人左侧还是右侧?相机是否倾斜?零件中心是不是吸取点?机器人报告的是法兰位置还是吸嘴尖端位置?如果相机安装在机械臂上,拍照时机械臂处于什么姿态?
手眼标定就出现在这些问题之间:它建立视觉测量坐标系与机器人运动坐标系之间的几何关系,让机器人能够使用相机看到的空间信息。

图1:视觉检测、空间定位、手眼坐标转换、抓取关系和运动规划分别解决不同问题。一个正确的手眼矩阵,需要放在完整的坐标链中使用。
如果打个比方,相机用一张地图描述零件,机器人用另一张地图描述运动。手眼标定解决两张地图如何对齐;相机测量负责确定零件在视觉地图中的位置;工具标定负责说明机器人真正使用哪个点接触零件。
2. “手”和“眼”究竟指什么
“眼”通常是相机,也可以是深度相机、三维扫描仪等视觉传感器。“手”通常指机器人的末端参考坐标系,例如法兰坐标系,或者一个定义明确的工具坐标系。
在三维机器人视觉中,手眼标定通常求一个固定的刚体变换,即三个平移参数与三个旋转自由度。它描述两个坐标系原点的相对位置,以及坐标轴的相对方向。无论机器人运动到哪里,只要相应的机械安装关系没有变化,这个固定变换就应保持不变。
工业现场的“手眼标定”有时还指九点标定、像素到机器人平面的映射、旋转中心标定等组合流程。这是一种较宽泛的叫法。讨论方案时,应明确最终求得的是:
- 完整三维刚体变换;
- 某个固定工作平面上的二维映射;
- 某个基准姿态附近的局部补偿模型。
它们可以服务于同一个抓取任务,但适用条件和可观测参数并不相同。尤其不能把一个适用于固定高度的二维矩阵,解释成任意三维点都能使用的空间变换。
3. 两种常见安装形式:眼在手上与眼在手外

图2:这里采用常见的标定板方案。眼在手上时,相机随末端运动、标定板固定;眼在手外时,相机固定、标定板随末端运动。红色虚线表示相应的刚性安装关系。
3.1 眼在手上:Eye-in-Hand
相机刚性安装在机器人末端。机器人改变位姿,相机也随之改变位姿。通常把标定板固定在工作台上,让机器人从多个位置和角度拍摄它。
这时需要标定的是相机相对于末端的固定安装关系。相机在机器人基座中的位置则随机器人当前位姿变化。
这种方案适合从多个视角观察、靠近目标拍照以及局部精定位。实际效果还取决于机器人运动范围、支架刚性、成像质量和图像与位姿的同步。
3.2 眼在手外:Eye-to-Hand
相机固定在机器人之外,例如固定在工作台上方。通常让机器人携带标定板,在相机视野内做多组运动。
这时需要的是相机与机器人基座之间的固定关系。生产时,相机看到的目标可以通过这一固定关系转换到机器人基坐标系。
这种方案适合稳定覆盖工位、较大范围的平面定位,以及相机不便随机器人移动的场合。机器人或工具也可能遮挡视野。
3.3 “固定”的到底是哪两个坐标系
| 安装形式 | 相机是否随机器人运动 | 常用待求变换 | 常用标定板布置 |
|---|---|---|---|
| 眼在手上 | 是 | 相机到末端 | 标定板固定在工作台 |
| 眼在手外 | 否 | 相机到机器人基座 | 标定板刚性固定在末端 |
以上是常用采集方案,并非唯一方案。也可以使用已测量的三维点、专用治具或额外传感器建立约束。核心始终是:哪些关系已知、哪些关系恒定、哪些关系需要求解。
4. 手眼标定与其他标定有什么关系
| 标定或测量 | 主要解决的问题 | 常见结果 |
|---|---|---|
| 相机内参和畸变标定 | 三维点如何投影到像素,镜头如何产生畸变 | 焦距、主点、畸变系数 |
| 目标位姿估计,例如 PnP | 这一次拍照中,目标相对相机在哪里 | 目标到相机的位姿 |
| 手眼标定 | 视觉坐标如何与机器人坐标连接 | 相机到末端或相机到基座的固定变换 |
| TCP/工具标定 | 吸嘴尖端、夹爪中心在哪里 | 工具到法兰的固定变换 |
| 工件/工装坐标标定 | 机器人如何描述工位和工件参考系 | 工件或工装到基座的变换 |
| 机器人本体标定 | 运动学模型与真实机械结构有哪些差异 | 连杆、关节零位等模型参数 |
相机内参正确,并不意味着机器人已经知道目标在哪里。反过来,手眼标定残差较小,也不能证明机器人本体绝对定位准确、TCP 定义正确,或者工具不会发生挠曲。
某些二维系统会直接拟合“像素到机器人平面”的整体映射,在限定工况下可以省去显式恢复相机三维位姿的步骤。这并不意味着相机投影、畸变和工作高度的影响消失了,而是这些因素被部分吸收进特定平面上的模型。
5. 先统一符号,再讨论公式
本文统一使用列向量和左乘约定,记号为:
它表示把在 B 坐标系中表达的点,转换为在 A 坐标系中表达的点:
右下角的 B 是输入坐标系,左上角的 A 是输出坐标系。不要只凭“相机外参”“手眼矩阵”等名称判断方向。
| 符号 | 坐标系 | 说明 |
|---|---|---|
| B | Base | 机器人基坐标系 |
| E | End effector | 机器人末端参考系,本文默认是法兰 |
| C | Camera | 相机三维光学坐标系 |
| W | Calibration target | 标定板坐标系 |
| P | Part | 产品或产品特征坐标系 |
| T | Tool | 实际工具 TCP 坐标系 |
如果控制器提供的是 TCP 相对基座的位姿,应先明确它与 E 的关系。也可以从头到尾用一个固定不变的工具系作为 E,但必须让采集数据、求解结果和运行公式始终使用同一个定义。
5.1 齐次变换为何是 4×4 矩阵
三维刚体变换写成:
其中旋转矩阵满足:
平移向量表示 B 原点在 A 中的位置,旋转矩阵的三列表示 B 的三个坐标轴在 A 中的方向。相机三维点与平移量必须使用相同长度单位,例如全部采用毫米。
最常用的两条运算规则是:
连乘从右向左作用。坐标系字母能沿中间项衔接,是检查公式方向的一种有效方法。逆变换的平移项通常不是简单的 -t,还要乘上旋转矩阵的转置。
5.2 姿态不是三个可以随意相加的角
机器人控制器可能输出欧拉角、固定轴角、旋转向量或四元数。即使都写成 Rx、Ry、Rz,旋转顺序、内禀/外禀定义和正方向也可能不同。
应按控制器文档把姿态转换为旋转矩阵,再做变换连乘。不能把一般三维旋转当成三个互相独立的标量相加。OpenCV 的 rvec 是 Rodrigues 旋转向量,模长是以弧度计的旋转角,它不是欧拉角。
6. 两种安装形式的运行公式

图3:箭头沿“点坐标转换”的方向绘制。图中每个矩阵都把箭尾坐标转换到箭头坐标;乘法按从右到左的顺序执行。
6.1 眼在手上
机器人在曝光时刻的末端位姿为 ;手眼标定得到 ;视觉得到产品相对于相机的位姿 。因此:
相机安装变换 恒定,当前相机位姿 随机器人运动而变化。
这里的 必须对应这张图像的曝光时刻。若机器人已运动到另一个位置,再读取位姿来解释旧图像,几何关系就会出错。
如果机器人始终在完全相同的位姿拍照,相机在拍照瞬间可以视为固定。此时可以对这个固定拍照位和工作平面使用专门的二维映射,但不能把它推广到任意拍照位。
6.2 眼在手外
标定得到固定的 ,生产时:
它不需要乘当前机器人末端位姿。末端位姿用于后续的运动控制和工具关系处理。
6.3 一个能手算的例子
先看三维变换在 XY 平面中的一个简化截面,所有量都已经是同一物理平面内的毫米坐标,暂不涉及像素和深度。
机器人末端位于基座平面的 (300, 100) mm,相对基座旋转 90°。相机的平面测量参考原点在末端局部坐标的 (40, 0) mm,两者的平面轴向一致。视觉测得产品位于相机平面坐标的 (20, 10) mm。
产品在末端局部坐标中是:
转换到机器人基座:
如果简单把平移相加,会得到 (360, 110),错在忽略了末端旋转。这个例子说明:安装偏移是在哪个坐标系里定义的,它就必须随那个坐标系一起旋转。
7. 为什么像素不能直接乘手眼矩阵
一个三维齐次刚体变换处理的是三维物理坐标,不是原始像素坐标。[u, v, 0, 1] 不是目标真实的相机三维坐标。
在忽略畸变或已正确处理畸变的针孔模型中:
一个像素给出一条从相机出发的空间射线。缺少深度或其他约束时,不能唯一确定射线上的哪个点是目标。
![]()
图4:P₁ 与 P₂ 在理想针孔模型下可以投影到同一个像素。已知工作平面时,可以通过射线与平面的交点恢复物理点。示意图不表示实际光路比例。
实际系统通常通过以下方法补足约束:
- 已知目标几何和多个对应点:用 PnP 求目标相对相机的位姿;
- 已知工作平面:用平面单应性,或用去畸变射线与平面求交;
- 深度相机、双目或结构光:先获得相机三维点,再做坐标变换。
相机常用的 X 向右、Y 向下、Z 向前 是一个右手三维坐标约定。图像 Y 轴向下,不意味着可以在任何阶段都额外取一次负号。若轴向关系已包含在映射或旋转矩阵中,再手动翻转会重复补偿。
8. 知道产品位姿,为什么还不等于知道抓取位姿
假设产品坐标 P 定义在一个定位孔中心,而吸嘴要吸在距离孔中心 30 mm 的平面上。视觉定位孔只是建立了产品的参考系,真正的工具目标还需要产品到工具的关系:
是产品配方中的抓取关系,可以来自 CAD、工艺定义或示教。产品旋转后,这个局部偏移也会随产品旋转。
如果机器人接口接收的是法兰目标,而工具标定给出 ,则:
控制器若已经配置并使用这个 TCP,就应按其接口发送 TCP 目标,避免再手动补偿一次相同的工具偏移。
目标位姿还需要经过逆运动学、轨迹规划、可达性与工位约束检查,才能执行运动。手眼标定提供几何连接,不直接替代这些运动控制环节。
9. 这一部分应当建立的认识
手眼标定的核心是建立坐标系之间稳定且定义明确的几何关系。眼在手上通常求相机到末端,眼在手外通常求相机到基座;视觉测量、手眼关系、抓取关系和 TCP 共同构成从“看见”到“到达”的变换链。
接下来的关键问题是:这些安装关系无法用尺子精确量出时,如何通过机器人运动与多张图像把它们求出来?
第二部分:从多次观察到 AX = XB
1. 从“同一块标定板,为何算出不同位置”开始
把一块棋盘格刚性固定在工作台上,让末端相机从不同位置拍摄。机器人知道每次末端相对基座的位姿;相机可以根据棋盘格的已知尺寸,估计标定板相对相机的位姿。
标定板没有移动,所以无论机器人从哪里拍照,最终计算出的“标定板相对机器人基座的位姿”都应相同。
这条朴素的一致性要求,就是经典手眼标定的约束来源。无需预先用高精度测量设备知道标定板在工作台上的绝对位置,也可以联合确定相机安装关系。
2. 每次采集究竟得到什么
对第 i 次有效观察,记录两组位姿:
G_i 来自机器人运动学和实际反馈;C_i 来自视觉位姿估计。这里 C_i 同时被用作该帧视觉变换的简写;带左上标的 Cᵢ 则表示第 i 帧的相机坐标系。
一对位姿必须属于同一次曝光事件。在静态采集中,常用流程是机器人停止、稳定、锁存位姿、触发拍照,并保证这一时间段内机械状态不变;连续运动采集则需要硬件时间同步、延迟处理和位姿插值。
2.1 视觉位姿从哪里来
已知标定板上点 的物理坐标,检测对应像素 u_ik,用内参 K 和畸变模型估计旋转、平移:
OpenCV solvePnP 返回的 rvec、tvec 正是物体/标定板到相机的方向,也就是本文的 。输入的板上三维点若使用毫米,输出平移也使用毫米。
平面棋盘格也可以用于完整三维手眼标定:板上点虽然共面,已知的度量几何仍然可以约束板的三维位姿。需要注意接近正视、小视角、点位噪声、图案对称性和某些平面 PnP 解的歧义。应结合重投影误差、正深度、已知朝向和多帧一致性检查。
如果已经把图像点去畸变,应配套使用正确的新内参和畸变设置;不能再用同一组畸变参数重复修正。图像缩放、裁剪后也要相应调整内参。
2.2 为什么只拍一张通常不够
令未知手眼变换为:
固定标定板在基座中的未知位姿为:
一张图只提供:
当 X、Y 都未知时,很多不同的 X 都可以配上一个 Y 满足这个等式。增加有足够几何变化的观察,才能把它们分离。若 Y 已经由外部测量准确给定,问题则不同;不能把“单帧通常不足”理解成任何条件下单帧都绝对无解。
3. 眼在手上的闭环方程
对每一帧:
它表达从标定板出发,经相机、机器人末端到基座,最后得到同一个固定的标定板位姿。

图5:两个机器人位姿 Gᵢ、Gⱼ 和两个视觉位姿 Cᵢ、Cⱼ 已知,安装关系 X 与固定板位姿 Y 未知。两条路径必须一致。
取第 i、j 帧:
左乘 ,右乘 :
定义:
便得到经典方程:
A 与 B 描述同一次相对运动在两种坐标表达下的关系。X 把两种表达连接起来。
不同资料可能采用相反的帧顺序、逆变换或不同的坐标命名,因而 A、B 的具体表达看起来不同。正确的判断方法是从本方案的绝对坐标链重新推导,而不是只记住 AX = XB 这几个字母。
4. 眼在手外的方程如何建立
这一次相机固定,标定板刚性安装在末端。定义:
每一帧从标定板到基座有两条路径:
消去固定安装关系 Z:
于是同样可以写为 AX = XB,但本次:
注意机器人相对运动的构造与上一节不同。更直接的实现方式,是把机器人每一帧的绝对位姿先取逆:
这个形式与眼在手上的 G_i X C_i = Y 同构,因此可以在确认接口约定后复用同一求解器。
另外,眼在手上的双未知模型也可改写成机器人—世界/手眼联合标定形式:
令 A_i=C_i、B_i=G_i^{-1}、X_rw=Y^{-1}、Z_rw=X^{-1},就得到 A_i X_rw = Z_rw B_i。这里的未知量命名与经典 AX = XB 不同,接入 calibrateRobotWorldHandEye 时尤其要逐项核对。
5. 旋转和平移分别怎样约束 X
把相对运动与未知安装关系展开:
AX = XB 给出:
第一式用于约束安装旋转。得到旋转后,第二式可以堆叠成一个平移的线性最小二乘问题。
5.1 常见求解方法
| 方法路线 | 代表方法 | 主要特点与使用注意 |
|---|---|---|
| 先旋转、后平移 | Tsai–Lenz、Park–Martin、Horaud 等 | 分步建立约束,易于分析;旋转误差会影响后续平移 |
| 联合处理刚体运动 | Andreff、Daniilidis 双四元数等 | 在统一表示中处理旋转和平移;对噪声与运动分布的响应有所不同 |
| 非线性几何优化 | 在 SE(3) 上优化绝对闭环或重投影误差 | 可以结合噪声模型、鲁棒核和其他参数;需要合理初值与尺度定义 |
不存在脱离数据条件的“某算法永远最准”。输入方向错误、板尺寸错误、姿态缺乏激励时,换算法无法恢复缺失的信息。算法比较应基于同一批独立验证数据和任务指标。
教学算例可以使用旋转对数向量之间的正交 Procrustes 拟合作为求解器,再线性求平移,用于验证坐标链和退化现象;这类简化实现不等同于 OpenCV 各种方法的全部细节。
5.2 非线性优化应该优化什么
例如眼在手上,可对固定板闭环构造残差:
这里 SE(3) 的对数映射给出六维局部残差,通常包含平移相关分量和旋转分量。可以求解:
旋转以弧度计,平移以毫米或米计,不能直接把两类数值无权相加后就解释为统一物理误差。权重应与观测不确定度或明确的工程尺度有关。鲁棒损失可以减小异常观测的影响,但不能修复系统性的模型错误。
另一种路线是直接优化图像重投影误差,避免把 PnP 结果当作完全无误差的中间量;它仍然依赖准确的相机模型、板几何和机器人观测。
6. 可观测性:为什么拍得多,不一定标得出

图6:示意的是一般三维安装参数的辨识。每个图标代表一次末端姿态。点很多但运动结构重复,并不能补足缺失的自由度。
6.1 只做平移
如果所有相对运动都没有旋转,R_A=I,于是平移方程左侧为零,未知安装平移 t_X 从这些约束中消失。
多方向平移可以提供安装旋转的部分或充分约束,取决于平移方向分布;但在常见的未知固定板位姿模型中,不能靠纯平移恢复完整安装平移。若平移也只有一个方向,旋转还会有额外歧义。
6.2 只绕同一个轴旋转
绕同一轴的旋转使 (R_A-I) 在该轴方向存在共同零空间,因此对应方向的安装平移通常无法由一般三维模型确定。仅靠同轴旋转关系,还存在绕该轴的旋转歧义;其他平移约束可能补充部分信息,但不能消除所有共同的退化。
这就是 SCARA 或只执行 X、Y、Rz 运动的系统不应盲目套用通用六自由度求解的原因。可以引入已知高度、已知安装方向、额外测量或采用约束后的平面模型。
6.3 旋转变化很小
此时 (R_A-I) 数值较小,噪声容易被放大。参数可能在不同数据子集间明显波动,即使拟合残差并不大。
6.4 应当怎样采集
对于一般三维手眼问题,通常至少需要两组旋转轴不平行的相对运动,也就是至少三组恰当布置的绝对姿态;这是常见的理论最低条件之一,还必须满足具体数据的非退化条件。
工程上可以把约 15~30 组有效静态姿态作为采集起点,但它不是统一标准,更不是精度保证。应让数据同时覆盖:
- 多个明显不同的旋转方向和适当的旋转幅度;
- 实际工作范围内的位置、距离和视野区域;
- 清晰、完整、不过曝的标定板图像;
- 实际可用且不过度倾斜的板面角度。
对于线性平移子问题,可以检查堆叠矩阵的秩和奇异值。完整参数的可观测性还需要分析相应模型的雅可比,不能用“平移矩阵满秩”代替对全部参数的分析。
N 帧可以构成 N(N−1)/2 个相对运动对,但它们共享原始观测,统计上并不独立。构造更多运动对有时能改善数值利用率,却不能凭空增加独立的姿态信息。
7. OpenCV 接口:用变换方向核对输入
以下代码片段讨论 cv2.calibrateHandEye 的常用调用。它接收每一帧的绝对位姿列表,内部再构造相对运动;不要先自行计算 A、B 再当成这些参数传入。
7.1 眼在手上的标准调用
| API 名称 | 本文含义 | 变换方向 |
|---|---|---|
R_gripper2base, t_gripper2base |
Gᵢ | 末端到基座 |
R_target2cam, t_target2cam |
Cᵢ | 标定板到相机 |
返回 R_cam2gripper, t_cam2gripper |
X | 相机到末端 |
1 | |
示例中的旋转输入明确使用 3×3 矩阵。若原始数据是控制器欧拉角,应先按其真实约定转换。
7.2 眼在手外怎样复用接口
由 G_i^{-1} X_o C_i = Z 可知,应把每个机器人绝对位姿 Gᵢ 取逆后,送入同一接口;视觉的标定板到相机位姿保持原方向。返回结果此时解释为 。
1 | |
这是一种基于方程同构的复用方式,参数名仍然保留接口的原始名称。若使用其他软件的专用 Eye-to-Hand 模式,应遵循该模式的输入定义,不能再机械地额外取逆一次。
7.3 给输入做几何检查
- 所有旋转矩阵应近似满足正交性与
det(R)=+1。 - 机器人平移量与标定板物理坐标必须采用相同长度单位。
- 同一个图像文件只能关联对应的一组机器人位姿,丢帧后不能靠列表下标猜配对。
- 标定期间法兰、TCP、用户坐标和基座坐标的定义应一致。
- 标定板尺寸、点序和朝向应始终一致,不能在不同帧中切换到对称的另一个板坐标定义。
8. 算出矩阵之后,怎样判断它可信
8.1 先检查闭环一致性
眼在手上计算:
这些 Yᵢ 应聚集在同一个固定位姿附近。平移分散程度可以用各帧原点相对均值的距离衡量。旋转则应使用旋转群上的平均和角距离,不应对欧拉角逐项取平均。
例如两个旋转的差可写为:
眼在手外应检查:
是否在末端参考系中恒定。两种安装形式的闭环检查对象不同。
8.2 使用未参与求解的数据
训练帧的残差反映拟合程度;独立姿态的闭环误差反映一定的泛化能力。两者都不能单独等同于实际抓取精度。
还应在实际生产高度、姿态、视野边缘和目标角度下,测量工具到真实目标的偏差。只有这样的结果才能检验相机测量、手眼关系、机器人模型、TCP 与执行机构的完整链路。
8.3 可复现实验的边界
可以用已知真值的合成位姿验证两类绝对闭环、AX = XB 推导、安装变换恢复以及纯平移和同轴转动导致的秩亏。合成数据不包含真实图像、角点检测、PnP 误差或机器人系统误差,因此这类实验用于检查公式和实现方向,不代表真实设备的精度。
9. 从数学可解走向工程可用
手眼标定不是把一组数字交给某个算法就结束。它要求明确的坐标约定、物理上成立的刚性关系、足够丰富的运动、对应同一时刻的输入,以及独立的任务验证。
接下来回到工业现场最常见的 X、Y、R 引导:九点标定在什么条件下成立?旋转中心与吸嘴偏心怎样处理?怎样从误差表现定位问题?
第三部分:从九点标定到生产验收
1. 从“九个点都对,旋转后却抓偏”开始
一台固定相机观察机器人携带的圆形标记。工程师让机器人在九个位置移动,记录圆心像素和机器人 XY,拟合出一个矩阵。九个标定点都能对应得很好。
随后,机器人 XY 保持不变,只把末端转了 30°,视觉却报告“位置发生移动”。为什么?
可能因为视觉圆心并不在机器人旋转中心上。机器人在旋转,偏心的圆心就会沿圆弧移动。九点采集如果一直保持同一个角度,只能拟合这个角度下的关系,没有自动辨识旋转偏心。
另一个常见场景是:标定板放在工作台上,量产零件高出工作台几毫米。视野中心看起来没有问题,越到边缘越容易抓偏。这通常与透视和工作高度不一致有关。
这些问题提醒我们:二维平面映射的价值很大,但它依赖清楚的几何前提。
2. 二维九点标定到底在标什么
对固定相机和固定工作平面,可以建立:
这里的 X、Y 应是某个定义明确的物理点在机器人平面中的坐标。若机器人记录的是法兰或 TCP,图像检测的是另一个点,则两者的关系也必须纳入模型。
“九点”描述的是常见采样布置,不是一个独立的数学模型。相同的九组对应点,可以用于拟合仿射、单应性或软件定义的其他模型,不能仅凭点数判断算法。

图7:采样应覆盖实际工作区域。仿射与单应性适用条件不同;无论使用多少点,某一平面上的准确映射都不会自动成为任意高度的三维映射。
2.1 仿射模型
它有六个参数,理论上至少需要三组非共线对应点。可表示平移、旋转、不同轴向尺度与剪切,适合远心成像、弱透视,或透视影响在误差预算内的局部工作区。
普通镜头倾斜观察平面、透视效应明显时,用仿射覆盖大视野可能出现系统误差。多加几个点可以减小噪声影响,但不能消除模型本身的不足。
2.2 平面单应模型
H 是一个 3×3 矩阵,整体比例无意义,因此有八个独立自由度。理论上至少需要四组处于非退化布置的对应点;常见充分条件是两侧点集中均无任意三点共线。实际应使用更多、分布充分的点进行估计和独立验证。
对理想针孔相机观察同一平面,单应性可以描述透视关系。镜头径向、切向畸变一般不能由一个单应矩阵完整表示,应先处理畸变,或使用明确包含畸变的联合模型。
从齐次结果读取 X、Y 时,要除以第三个分量。把单应矩阵当成普通仿射矩阵、漏掉归一化,是常见实现错误。
2.3 九个点应该怎样布置
覆盖工作区的四角、边缘与中心,通常比在中心挤九个点更有价值。采集过程中应保持工作平面、成像参数与对应点定义一致,并保留一些未参与拟合的验证点。
若使用末端偏心标记采集平移点,要保持标定角度不变;否则旋转引入的位置变化会污染一个只描述平移关系的模型。
3. 一个经常被忽略的问题:矩阵输出的是什么坐标
工业视觉软件可能输出:
- 视觉特征在机器人平面中的绝对坐标;
- 相对于标定原点的物理坐标;
- 相对于旋转中心的物理向量;
- 基准角度下,与机器人记录点对齐的参考坐标。
它们看起来都像“两个毫米数”,但后续公式不同。
一个实用检查是:给矩阵输入已知参考点,检查输出应当是 (0,0)、机器人基准位置,还是该特征的真实世界坐标。再做一组已知平移和一组已知旋转,检查输出变化是否符合模型定义。
不能把软件导出的某个 CalibMatrix、H 或 M 自动解释成相机到基座的三维手眼变换。要以该软件的输出定义和实测验证为准。
4. 旋转中心、视觉特征和 TCP 为什么要分开
设机器人在平面中的旋转中心位置为 Q,视觉特征相对于这个中心的偏心向量在参考角度下为 e₀。机器人相对参考角旋转 δ 后,视觉特征位置为:

图8:左侧是机器人偏心标记的旋转;右侧是产品局部抓取点的旋转。两者都遵循局部向量随所属坐标系旋转的规则,但它们对应不同的物理关系。
这里的“旋转中心”必须与实际控制方式一致。如果控制器保持活动 TCP 的 XY 不变并旋转工具,法兰可能同时移动;不能把这种运动误称为“法兰原点固定”。
4.1 如果矩阵给出视觉特征的真实物理位置
设 P=M_phys(p),则机器人旋转中心为:
4.2 如果九点矩阵在参考角度下对齐机器人记录点
假设保持参考角度采集,直接用“圆心像素 → 机器人记录的 Q”拟合出 M_ref。由于参考角度下 P=Q+e₀,这个矩阵已经吸收了参考偏心:
转到其他角度时:
这与上一节的公式并不矛盾,因为矩阵输出的物理含义不同。一个小例子可以验证符号:
1 | |
上述关系假设所有特征仍处于有效的同一物理平面,映射模型正确,偏心与工具安装保持刚性。
4.3 旋转中心与偏心怎样测
保持所建模的旋转中心位置不变,采集多个旋转角度下的视觉特征位置。把像素转换到同一物理平面后,轨迹应是一个圆。
可以拟合圆心与半径;如果机器人旋转角已知,更适合直接拟合:
对已知角度,这个模型对圆心 c 和向量 e₀ 是线性的,可以堆叠求最小二乘。角度范围和几何分布影响条件数,只有很短圆弧时,圆心对噪声会很敏感。
三个非共线点可以确定一个理想圆,但这不等于“三点旋转标定在任何工况下都足够”。工程上应采集更多、角度分散且质量可靠的观测,并检查轨迹残差和参数稳定性。
如果像素到物理平面的线性部分存在非等比例缩放或剪切,物理圆在像素图上可能是椭圆;存在透视时也可能表现为一般圆锥曲线。因此不应未经模型检查就直接在原始像素中拟合圆并解释为物理旋转中心。
5. 产品方向应当在哪个坐标系里计算
一个无方向的圆心只提供位置,不提供绕平面法向的方向。想得到 X、Y、R,通常还需要不对称轮廓、两个有序特征点、方向模板或其他定向信息。
在一般仿射或单应映射下,图像中的角度不能只加一个固定安装角就转换为机器人角度。稳妥的处理方式是:
- 取能够代表目标方向的两个像素点
p₁、p₂; - 分别转换成同一物理平面中的
P₁、P₂; - 计算
atan2(P₂y−P₁y, P₂x−P₁x)。
单应映射通常不会把目标中心恰好变成两个变换后端点的中点,位置与方向的定义仍应各自明确。存在镜头畸变时,应先使用相同且正确的畸变处理。
圆、无向直线、对称矩形等图形还可能有 180° 或 90° 歧义。应通过有序特征、不对称设计或工艺允许的等价姿态来处理,不能把角度跳变都归因于手眼矩阵。
6. 眼在手上的二维平面模型
若机器人只做平面运动、相机与工件平面的相对高度固定、相机倾斜关系稳定,可以定义一个随相机刚性运动的等效平面测量参考系 Cπ。
Cπ 是毫米制的二维参考系,与运动平面平行。它不是把三维光学坐标 C 的 Z 直接设为零;它的原点也不必是相机光心。像素先经过适用于当前工况的平面校正,得到 Cπ 中的物理点 m。
设机器人当前平面位姿为 (qᵢ, θᵢ),Cπ 相对末端的安装平移和转角为 (t, γ),则固定目标 S 满足:
通过混合平移与旋转的多次观测,可在模型可观测且数据非退化的条件下估计 t、γ、S。如果所有 θᵢ 相同,t 与 S 的固定偏移会混在一起,无法唯一分离。
这个模型可以很好地服务于固定高度的平面定位,但不会自动恢复完整三维安装高度和所有倾斜参数。若拍照高度、平面法向或目标深度发生明显变化,需要相应的三维模型、额外测量或按工况建立配方。
7. 抓取关系与反向示教
产品可见特征与吸取点不重合时,最直接的方法是保存产品局部坐标中的抓取关系。
假设参考产品在基座中的位姿是 ,人工或治具引导工具准确到达期望抓取位姿,记录 。则:
生产时:
这类流程常被称为反向示教或抓取关系示教,各厂商名称和操作方式可能不同。若示教与拍照分两步执行,必须保证产品在两次记录之间没有移动,或者能够准确恢复其位姿。
二维情况下,若局部抓取偏移 d=(30,0) mm,产品转 90° 后,世界坐标中的偏移应变成 (0,30) mm。始终加固定的世界坐标 ΔX=30、ΔY=0,只在产品方向不变时才可能正确。
8. 一个可执行的标定工作流

图9:内参、工具定义、数据采集、求解和验证需要形成闭环。验证失败后,应定位模型或数据问题,再进行有针对性的重新采集。
8.1 先明确任务与模型
确认眼在手上还是眼在手外;任务需要二维还是六自由度;目标是否始终在同一高度;允许的位置和角度误差是多少;接口接收法兰目标还是 TCP 目标。
如果只需要二维平面引导,应采用满足误差预算的模型。若需要真实三维抓取,应保证深度信息和机器人运动能够约束所需自由度。
8.2 固定机械与成像条件
检查相机、镜头、支架、标定板及工具的刚性;在接近生产的温度与负载状态下采集;固定焦距、对焦、分辨率、ROI、光源与曝光策略。不要在标定后改变这些条件,却继续假定原模型仍然准确。
对于静态相机三维标定,要明确相机与基座是否固定在同一稳定机械结构上;对于眼在手上,支架挠曲可能随机器人姿态和负载变化,偏离“固定刚体变换”的假设。
8.3 保存能够复查的数据
每个有效样本至少保存原始图像、曝光或触发时间标识、配对的机器人实际位姿、坐标系名称、位姿格式与单位、检测结果和质量指标。使用样本 ID 配对,而不是单纯依赖文件排序。
静态采集中锁存位姿和拍照之间必须保持稳定;运动中采集要定义曝光时间对应哪个位姿,考虑滚动快门及插值误差。保存机器人目标指令并不能代替保存对应时刻的实际反馈。
8.4 求解并进行输入诊断
先检查数据方向、单位、旋转格式和标定板点序,再检查运动分布、矩阵秩、拟合残差与异常帧。异常帧应结合原始图像和采集记录判断原因,不能只删除所有“不好看”的残差。
8.5 独立验证并版本化保存
保留不参与求解的姿态和目标点,覆盖真实工作区。保存模型、原始数据索引、求解方法、软件版本、设备与坐标系标识、残差统计和独立验收结果。
同样是 4×4 或 3×3 矩阵,文件里也必须写清变换方向、输入输出单位、有效高度和适用坐标系。没有这些定义的矩阵很难安全地维护和复用。
9. 精度为什么会丢失:四类能量化的影响
9.1 安装角误差会被距离放大
小角度近似下,某方向的角误差 δθ 在距离 L 处产生的横向误差约为:
例如 L=200 mm、δθ=0.1°≈0.001745 rad,位置误差约为 0.349 mm。因此手眼旋转的微小误差,在远离参考原点的点上也可能产生明显偏差。

图10:曲线来自明确的几何公式,不是设备实测数据。左图采用小角度近似;右图采用正视针孔模型,标称相机到平面的距离为 500 mm。
9.2 工作高度变化会引入平面映射误差
对正视的理想针孔模型,标定平面距相机为 h,实际点比标定平面更靠近相机 Δz。若仍用标定平面反算,则离光轴横向距离为 r 的点,径向误差大小为:
例如 h=500 mm、r=100 mm、Δz=2 mm,误差约为 0.402 mm。这解释了为什么中心附近问题不明显、边缘却偏差更大。倾斜相机或复杂畸变下,误差场会更复杂,不能直接套用这个简化数值。
远心镜头能在设计范围内降低倍率对高度的敏感性,但不会自动提供缺失的 Z,也不能代替三维姿态测量和工具建模。
9.3 时间误差会变成空间误差
平移速度为 v、图像与位姿的时间偏差为 Δt 时:
例如 v=200 mm/s、Δt=10 ms,仅平移不同步就可能引入 2 mm 误差。旋转还会产生与角速度、杠杆臂和时间偏差有关的误差。
静态采集可以显著降低这种影响,但停止后的机械振动、相机曝光延迟和滚动快门仍需根据设备条件处理。
9.4 完整误差链包含多个来源
| 来源 | 常见影响 | 检查方式 |
|---|---|---|
| 图像特征定位 | 重复测量抖动、随光照变化 | 机器人与工件静止时重复拍摄 |
| 相机内参/畸变 | 视野边缘或距离相关误差 | 检查独立图像与不同区域的重投影和测量误差 |
| 板尺寸与平面度 | 尺度偏差、姿态相关偏差 | 核对物理尺寸、制造精度与安装变形 |
| 手眼安装关系 | 固定偏差或姿态相关偏差 | 独立闭环与不同姿态验证 |
| 机器人本体 | 位姿相关的绝对定位误差 | 外部测量或工作区内实际目标验证 |
| TCP 与工具刚性 | 工具点偏移、随角度或负载变化 | TCP 验证、不同角度与负载对比 |
| 时序 | 与运动速度相关的偏差 | 静止/运动对比、时间戳检查 |
| 工件高度与平面假设 | 视野位置和高度相关误差 | 多高度、边缘与中心对比 |
机器人重复定位精度与绝对定位精度是两个不同概念。重复回到同一位置很稳定,并不能证明其报告的笛卡尔位置在整个工作区都准确。
只有在误差近似独立、随机且定义一致时,才适合用均方根方式合成方差。固定尺度误差、坐标定义错误、温漂和相关误差,不能随意用平方和开根号“平均掉”。
10. 怎样做一次有意义的验收
10.1 区分三类指标
| 验证层次 | 测量对象 | 能说明什么 |
|---|---|---|
| 图像/PnP 层 | 像素重投影误差、重复检测误差 | 成像模型与视觉观测的一致程度 |
| 手眼几何层 | 独立帧的固定板或固定安装闭环 | 坐标链在验证姿态下的一致程度 |
| 实际任务层 | 工具到真实目标的偏差、装配或抓取结果 | 完整系统对工艺目标的满足程度 |
像素 RMSE 很小、标定闭环很紧、实际抓取准确,属于不同层次的结论。应分别报告,不应把其中一个直接改名为另一个。
10.2 给任务误差一个明确的定义
若独立参考测量给出真实目标点 pᵢ,ref,系统估计为 p̂ᵢ,可定义:
报告平均误差、RMSE、P95、最大误差,并按需要分别报告各轴的有符号偏差与方向误差。还应写清参考测量手段及其不确定度,否则“真值”的质量会限制结论。
如果验收要求是“每个工位位置的误差不超过某上限”,就不能只凭全体平均值或 P95 通过。判据必须匹配工艺要求,样本数量、区域覆盖和置信程度也应事先约定。
10.3 验证工况应覆盖什么
- 工作区中心、四角、边缘和关键装配区域;
- 生产使用的机器人姿态、产品方向、拍照高度与目标高度;
- 实际工具、夹持负载、速度和拍照方式;
- 连续运行后的温度状态,以及维护或换型后的状态。
对同一目标多次重复测量,主要体现重复性;对不同位置和姿态验证,才能进一步暴露空间相关的系统误差。实际执行验证还要把工具接触测量或其他参考测量与视觉估计分开记录。
11. 根据误差表现缩小排查范围
下表是排查线索,不是由单一症状直接确定故障的规则。
| 现象 | 优先检查 |
|---|---|
| 各处大致同向、同量偏移 | 原点定义、TCP、产品抓取关系、遗漏的固定变换 |
| 产品或机器人一旋转就明显偏移 | 局部偏移未旋转、旋转中心不对、工具参考系混用 |
| 视野中心好、四角差 | 畸变、工作高度、仿射模型不足、边缘检测质量 |
| 换拍照姿态后同一固定点坐标漂移 | 眼在手上安装关系、曝光时位姿、机器人模型、支架挠曲 |
| 误差随速度增大 | 时间同步、运动模糊、滚动快门、跟随误差 |
| 方向相反、角度翻倍或反复跳变 | 变换取逆、欧拉角约定、度/弧度、对称目标点序 |
| 位置有明显比例误差 | 毫米/米、板格尺寸、内参和图像缩放、平面高度 |
| 标定残差小但抓取差 | 数据覆盖不足、模型退化、TCP、工件高度、任务链中的其他误差 |
| 运行一段时间后逐渐变化 | 温漂、松动、对焦漂移、工具磨损与负载变化 |
高精度任务有时需要二次拍照或视觉伺服,在接近目标后再次测量并修正。它可以降低部分绝对定位和执行误差的影响,但仍然需要合适的几何模型、反馈特征和稳定的控制设计。
12. 哪些变化需要重新评估标定
相机或镜头重新安装、支架碰撞或松动、焦距与对焦改变、分辨率或 ROI 调整、机器人基座或工具定义变化、工具更换、工作高度改变,都应触发适用性检查。
并非所有变化都必须重做全部标定。例如只更换工具,若相机安装和相关参考系没有变化,可能只需更新 TCP 或抓取关系;如果基座参考系发生已知的刚体变换,也可以在经过验证后更新相应坐标链。应根据变化影响的物理关系更新参数,随后重新进行对应的独立验证。
13. 回到开头:手眼标定到底是什么
从机器人抓取的角度看,手眼标定建立视觉与机器人之间的几何联系。要把这件事做好,需要同时回答四个问题:测得的点和姿态是什么、在哪个坐标系中表达、所用变换在什么条件下恒定、最终误差怎样被独立检验。
三维 AX = XB、固定相机的二维平面映射、旋转中心求解和工具补偿,都是围绕这些问题建立的模型。选择正确模型、提供有信息量的数据,并验证实际任务结果,才能让“相机看见的目标”成为“机器人可靠到达的位置”。
参考与延伸阅读
- OpenCV,Camera Calibration and 3D Reconstruction:相机模型、平面单应性、PnP 与手眼标定。官方文档。
- Z. Zhang, “A Flexible New Technique for Camera Calibration”, IEEE Transactions on Pattern Analysis and Machine Intelligence, 2000。DOI。
- Tsai–Lenz、Park–Martin、Daniilidis 的原始论文见前文文末。
- 机器人位姿格式、TCP 定义、相机投影和软件矩阵含义,应以所使用型号和版本的官方手册为准。