手眼标定简介
0.参考链接
[1]标定学习笔记(四)-- 手眼标定详解
[2]工业机器人手眼标定实战:眼在手上/眼在手外怎么标(2026)
[3]完整教程:手眼标定:九点标定、十二点标定、OpenCV 手眼标定
[4]机器人手眼标定详解:Tsai–Lenz、EasyHandEye2 与常用标定方法
[5]手眼标定解析——从原理到工程实践的两种经典方法
1.如何理解手眼标定
我们不妨想象,在生活中,我们需要用手移动某一物体时,需要经过哪些步骤?
第一步:通过眼睛去观察三维世界,将三维世界的信息传递至视网膜,转换成二维平面的信息传递给我们的大脑;
第二步:假设,当我们需要移动三维空间下的物体时,对我们的大脑而言,是将一个物体从二维平面的 A’ 点移动至 B’ 点,因此大脑需要计算从二维坐标转换到三维坐标 A 点和 B 点。
第三步:当大脑获得了 A 点和 B 点的坐标,就可以用手将物体进行相应的移动。
其中,第二步就是进行手眼标定,即得到二维坐标(像素坐标系)到三维坐标(世界坐标系)的转换矩阵。
在实际的控制过程中,相机在检测到目标在图像中的像素位置后,通过标定好的坐标转换 矩阵将相机的像素坐标变换到机械手的空间坐标系中,然后根据机械手坐标系计算出各个电机该如何运动,从而控制机械手到达指定位置。
2.坐标系与转换关系
2.1 基础坐标系

对于上面的讲解我们将其推及一个简单的机械手系统,我们不难得知其中涉及的坐标系包括:
-
1)机械手基础坐标系:

-
2)机械手末端夹具坐标系:

-
3)相机坐标系:

由之前介绍的相机标定相关知识,我们也可以知道,这里说的相机坐标系不仅包括相机本身的坐标系,还包括像素坐标系。
- 4)工件坐标系(标定板坐标系):

2.2 坐标系转换关系
坐标系之间的转换关系可以记为:
- 1)机械手末端夹具坐标系到机械手基础坐标系的转换关系:

该转换关系可以通过机器人系统得出,在手眼标定过程中我们认为其是已知的,其转换关系用矩阵进行表示可以记为: 。
- 2)相机坐标系到机械手末端夹具坐标系的转换关系:

尽管该转换关系视相机的装载方式有所区别,但相同点是我们认为其是未知的,也正是我们需要去进行求解的,其转换关系用矩阵进行表示可以记为: 。
- 3)相机坐标系到标定板坐标系的转换关系:

该转换关系我们可以通过相机标定进行获得,因此我们也认为其是已知的,其转换关系用矩阵进行表示可以记为: 。
- 4)标定板坐标系到机械手基础坐标系的转换关系:

该转换关系也正是我们最终希望求解的,只要机械手整体与标定板的相对位置不发生变化,这个变换矩阵也就不发生变化。
3. 先分清两种构型:眼在手上 vs 眼在手外
手眼标定的第一步不是动手标,是先想清楚你的相机是哪种装法。相机装在哪,决定了要求解的变换是谁、标定模型怎么列。
| 维度 | 眼在手上(eye-in-hand) | 眼在手外(eye-to-hand) |
|---|---|---|
| 相机位置 | 装在机器人末端法兰/工具上,随机器人一起动 | 固定在机器人之外(支架/龙门),不随机器人动 |
| 要求解的变换 | 相机坐标系 → 机器人末端法兰坐标系 | 相机坐标系 → 机器人基坐标系 |
| 标定板放哪 | 固定不动,机器人带相机从多个位姿拍它 | 固定在机器人末端,机器人带板从多个位姿给相机拍 |
| 视野特点 | 视野随臂动、可凑近看局部、覆盖大工作空间 | 视野固定、一次看全局、适合来料定位 |
| 典型场景 | 焊缝跟踪、精密插装、随动检测 | 上下料抓取、传送带分拣、来料定位 |
选构型的判断口径:需要相机凑近工件、或工作范围大到一个固定视野盖不住的,用眼在手上;来料在固定区域、要一次看全局再引导抓取的,用眼在手外。 两种构型的标定数学同源,但求解的目标变换不同,代码里选错模式,结果会整体错位。
3.1 眼在手(Eye-in-Hand)系统
相机直接安装在机器人末端执行器上,与机械臂同步运动。相机视野随机械臂移动而动态变化。

典型应用场景:工业精密装配、抓取,医疗机器人(如手术导航内窥镜)、无人机自主抓取。
技术优势:可对操作对象进行近距离高精度观测、灵活调整视角以适应不同工序。
工程挑战:相机随机械臂高频运动,易受振动、光照变化干扰,频繁运动可能导致标定参数漂移。
3.2 眼在外(Eye-to-Hand)系统
相机固定安装在机器人工作区域外,独立于机械臂运动。相机的全局视角覆盖整个工作空间,机械臂运动被动呈现在视野中。

典型应用场景:工厂流水线质量监控(如汽车焊接检测)、AGV(自动导引车)导航、仓储机器人货架管理。
技术优势:全局视野,适合大范围或轨迹监控、标定后长期有效,无需频繁更新。
工程约束:对远距离测量精度有一定损失,存在视野遮挡风险。
4. 手眼标定到底在解什么:AX = XB
不管哪种构型,手眼标定的数学核心都归结为一个经典方程:AX = XB。
- X:就是我们要求的手眼变换(相机相对法兰,或相机相对基座),它在整个标定过程中是固定不变的常量。
- A:机器人两次运动之间,末端位姿的相对变化(由机器人正运动学/示教器读数给出,认为是已知且相对可靠的)。
- B:同样两次运动之间,标定板在相机里位姿的相对变化(由相机拍标定板、经相机外参解算得到)。
直观理解:机器人动了一步,这一步的位移在“机器人坐标”和“相机坐标”两套系统里都被记录了一遍,两套记录之间差的正是那个固定的手眼关系 X。采集足够多组、且姿态变化足够丰富的运动,就能把 X 稳定地解出来。一条本质判据:手眼标定的精度上限,取决于每步运动里旋转分量是否充分——只做纯平移、几乎不转姿态的采集,方程会病态,X 解不准。 这条和 TCP 标定“四个姿态要张得开”是同一个道理,务必让每次采集的姿态差异拉大。
求解 X 的算法有好几种经典方法,工程上不用自己从零实现,OpenCV 已内置:
| 方法 | 代号(OpenCV) | 特点 |
|---|---|---|
| Tsai-Lenz | CALIB_HAND_EYE_TSAI | 经典分步法,先解旋转再解平移,工程常用 |
| Park | CALIB_HAND_EYE_PARK | 李群方法,稳定性好 |
| Horaud | CALIB_HAND_EYE_HORAUD | 四元数思路 |
| Andreff | CALIB_HAND_EYE_ANDREFF | 旋转平移联合求解 |
| Daniilidis | CALIB_HAND_EYE_DANIILIDIS | 对偶四元数,旋转平移一起解 |
5. 标定流程:一步步怎么做
以工程上最常用的棋盘格/标定板 + OpenCV 方案为例,把流程拆成可执行的清单。眼在手上和眼在手外的动作略有差异,先说共通骨架,再点出区别。
标定前的准备:
- 准备一块精度可靠的标定板(棋盘格或 ArUco/圆点板),已知格距,平整不变形。
- 相机先做内参标定,拿到相机内参矩阵和畸变系数——手眼标定前必须先完成相机内参标定,内参不准,B 就不准,X 一定跑偏。
- 确认机器人 TCP 已标准、位姿读数可信。
采集与求解步骤:
- 布置标定板:眼在手上→板固定在工作台不动;眼在手外→板固定在机器人末端随臂动。
- 规划采集位姿:设计 10~20 组机器人位姿,要求每组之间旋转和平移都有明显差异,让相机始终能完整、清晰地拍到标定板。
- 逐位姿采集:每到一个位姿,同时记录两份数据——机器人当前末端位姿(从控制器读)、相机此刻拍到的标定板图像。两份必须严格对应同一时刻,别错位。
- 解相机外参:对每张图像用内参解出标定板相对相机的位姿,得到一组 B 所需的相机侧位姿。
- 喂进求解器:把机器人侧位姿序列和相机侧位姿序列一起送进 cv2.calibrateHandEye,选一种方法解出手眼变换 X。
- 验证与复标:用下一节的验证法核对,不达标就补采位姿或排查误差源,重标。
眼在手外时,输入的机器人侧位姿要换成“基座相对末端”(即末端->基座的逆),求出的 X 是“相机相对基座”的变换。构型和输入位姿方向必须成套对应,混用是新手最常见的整体错位原因。
6. 误差从哪来:逐类排查
手眼标定标不准,别急着怀疑算法,OpenCV 那几种方法本身很成熟,问题绝大多数出在数据采集这一侧。对照下表一项项过:
| 误差来源 | 典型表现 | 排查对策 |
|---|---|---|
| 姿态变化不足 | 换方法都收不下来、结果不稳 | 每步加大旋转分量,别只平移 |
| 相机内参不准 | B 侧外参系统性偏 | 重做内参标定,保证畸变系数可靠 |
| 数据不同步 | 结果随机跳、复现性差 | 机器人停稳再拍,位姿与图像严格对时 |
| 标定板质量差 | 角点检测抖、外参噪声大 | 用高精度平整标定板,光照均匀避免反光 |
| TCP/位姿读数错 | 整体偏移 | 先确认 TCP 标准、位姿读数系正确坐标系 |
| 采集组数太少 | 抗噪差、易过拟合 | 采集 10 组以上,覆盖工作空间 |
核心口径:手眼标定的误差,大头都压在“姿态多样性不足”和“相机内参/数据同步”这类采集环节上,而非求解算法本身。 把姿态张开、内参标准、位姿与图像对齐,多数标定问题当场就收敛。这一点和现场调 TCP 的经验一脉相承——地基(内参、TCP、同步)没打好,后面怎么算都是错的往下传。
7. 标完怎么验收:两招现场验证
和 TCP 标定一样,手眼标定标完不能只看求解器有没有报错,得靠实打实的动作来验收。工程上常用两招:
- 重投影/复现验证:在标定板上取几个已知特征点,用求解出的 X 把它们从相机坐标换算到机器人坐标,再让机器人末端实际去到那些点,量偏差。判据:让机器人依据视觉结果去触碰或对准若干已知点,实测偏差稳定收在工艺允许范围内,才算标准。
- 抓取/引导实测:直接跑一遍真实的视觉引导流程——相机定位工件、机器人去抓(或去焊、去插),看重复多次的落点一致性和绝对偏差。这是最贴近产线的验证,纸面残差再好看,抓不准都白搭。
给一档可用来自检的量级(随工艺浮动):一般上下料、分拣类应用,视觉引导的落点偏差能稳定收在毫米级、且重复性好,通常就够用;精密插装、焊缝跟踪等场景要卡得更严。 这个量级随应用工艺浮动,没有放之四海的统一数——精度 诉求越高,对内参、标定板、采集姿态和相机分辨率的要求就越苛刻。
DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。
更多推荐


所有评论(0)