手眼标定解决方案
Hand-Eye Calibration Problem presented the problem that hand-eye calibration needs to solve; this tutorial describes the background idea for a solution. The core idea is the same for eye-to-hand systems and eye-in-hand systems. Therefore, we first provide a detailed solution for the eye-to-hand configuration. Then, we point out the differences in the eye-in-hand configuration.
备注
您无需使用末端执行器,也无需知道其位姿(如果您已安装末端执行器)即可进行手眼标定。工具中心点 (TCP) 值不影响手眼标定结果。在本文及后续教程中, 末端执行器 一词指的是工具法兰(机器人的最后一个连接件)。
Hand-eye calibration is solved by closing a circle of known and unknown poses (camera, end-effector, robot base, and calibration object) and using that circle to compute the unknown camera-to-robot transform.
Eye-to-hand
第一步是选择标定对象,例如棋盘格。 Zivid 标定对象 (棋盘格和 ArUco 标记)将在本教程的下一部分中进行介绍。 |
|
标定物体的几何形状已知,因此可以从相机图像中检测到。 此外,还可以估计其相对于相机的位姿( \(H^{CAM}_{OBJ}\) )。 |
|
要计算相机和机器人之间的相对位姿 (\(H^{ROB}_{CAM}\)),我们需要以某种方式关联位姿。 |
|
末端执行器相对于机器人基座的位姿 (\(H^{ROB}_{EE}\)) 是已知的,由机器人控制器提供。 |
|
右图中缺失的一环是标定对象相对于末端执行器的位姿 (\(H^{EE}_{OBJ}\))。 |
|
为了*消除*这个位姿的影响,或者说把它*固定*下来,我们可以把标定对象直接安装在机械臂的末端执行器上。 |
|
现在看来我们已经具备了关闭位姿闭环的一切条件,从而计算出相机相对于机器人的位姿 (\(H^{ROB}_{CAM}\))。然而,事情并没有那么简单。 |
|
这是因为我们并没有真正*消除*相对位姿( \(H^{EE}_{OBJ}\) )。但是,我们已经将其设为常数,以确保标定对象相对于末端执行器的位姿( \(H^{EE}_{OBJ}\) )在机器人运动过程中不会改变。 这使我们能够将机器人移动到一系列不同的位姿。 对于其中任何一个而言, \(H^{ROB}_{CAM}\) 都可以表示为其余两个已知位姿变量的函数:
以及一个恒定的、未知的位姿:
通过这组方程,可以利用最佳的方式(例如蔡氏方法)来计算所需的位姿 \(H^{ROB}_{CAM}\). |
|
Eye-in-hand
第一步是选择标定对象,例如棋盘格。 Zivid 标定对象 (棋盘格和 ArUco 标记)将在本教程的下一部分中进行介绍。 |
|
标定物体的几何形状已知,因此可以从相机图像中检测到。 此外,还可以估计其相对于相机的位姿( \(H^{CAM}_{OBJ}\) )。 |
|
为了计算相机和末端执行器之间的相对位姿( \(H^{EE}_{CAM}\) ),我们需要以某种方式使多个位姿之间形成闭环。 |
|
末端执行器相对于机器人基座的位姿 (\(H^{ROB}_{EE}\)) 是已知的,由机器人控制器提供。 |
|
能够使位姿环闭合的缺失位姿是物体相对于机器人基座的位姿( \(H^{ROB}_{OBJ}\) )。 |
|
为了*消除*这个位姿的影响或者将其*固定*下来,我们必须将标定对象进行刚性安装。 这样可以确保标定对象相对于机器人基座( \(H^{ROB}_{OBJ}\) )的位姿在机器人运动过程中保持不变。 |
|
现在我们有了闭合位姿环所需的一切,从而可以计算相机相对于末端执行器的位姿( \(H^{EE}_{CAM}\) )。 在手眼标定过程中,机器人被移动到一系列不同的位姿。 对于其中任何一个而言, \(H^{EE}_{CAM}\) 都可以表示为其余两个已知位姿变量的函数:
以及一个恒定的、未知的位姿:
利用这组方程,我们就可以采用优化过的技术(例如 Tsai 方法)来计算出所需的位姿 \(H^{EE}_{CAM}\) 。 |
|
Now that we've explained how to solve the hand-eye calibration problem, let's learn about 手眼标定对象 options.