手眼标定解决方案

上一篇教程介绍了手眼标定需要解决的问题, 本篇教程将描述手眼标定解决方案的背景思想。eye-to-hand和eye-in-hand的核心思想是一样的, 因此我们将先详细描述eye-to-hand的解决方案,然后再说明eye-in-hand与之的区别。

备注

You don't need an end-of-arm tooling, or to know its pose (if you have one attached) to do the hand-eye calibration. The Tool Center Point (TCP) value does not affect the hand-eye calibration result. In this article and later tutorials, the term end-effector refers to the tool flange (last link of the robot).

How to solve the hand-eye calibration?

The first step is choosing a calibration object, e.g. a checkerboard.


Zivid calibration objects (checkerboards and ArUco markers) will be covered in the next part of this tutorial.

../../../_images/hand-eye-robot-and-calibration-board.png

The calibration object is of known geometry. Thus, it can be detected from the camera image.


Further, its pose relative to the camera (\(H^{CAM}_{OBJ}\)) can be estimated.

../../../_images/hand-eye-robot-and-calibration-board-camera-object-pose.png

要计算相机和机器人之间的相对位姿 (\(H^{ROB}_{CAM}\)),我们需要以某种方式关联位姿。

../../../_images/hand-eye-robot-and-calibration-board-camera-object-pose-and-rob-cam-pose.png

末端执行器相对于机器人基座的位姿 (\(H^{ROB}_{EE}\)) 是已知的,由机器人控制器提供。

../../../_images/hand-eye-robot-and-calibration-board-camera-object-pose-and-rob-cam-pose-and-rob-ee.png

右图中缺失的一环是标定对象相对于末端执行器的位姿 (\(H^{EE}_{OBJ}\))。

../../../_images/hand-eye-robot-and-calibration-board-all-poses.png

To get rid of this pose or fix it, we can mount the calibration object onto the end-effector.

../../../_images/hand-eye-calibration-board-mounted-on-camera.png

现在看来我们已经具备了关闭位姿闭环的一切条件,从而计算出相机相对于机器人的位姿 (\(H^{ROB}_{CAM}\))。然而,事情并没有那么简单。

../../../_images/hand-eye-calibration-board-mounted-on-camera-with-poses.png

This is because we haven't really got rid of the relative pose (\(H^{EE}_{OBJ}\)). However, we have made it constant, ensuring that pose of the calibration object relative to the end-effector (\(H^{EE}_{OBJ}\)) will not change during the motion of the robot.


This enables us to move a robot to a set of different postures.


For each one, \(H^{ROB}_{CAM}\) can be expressed as a function of the remaining two variable, known poses:

  • 机器人到末端执行器 \(H^{ROB}_{EE}\)

  • Camera to calibration object \(H^{CAM}_{OBJ}\)

and one constant, unknown pose:

  • End-effector to calibration object \(H^{EE}_{OBJ}\).

通过这组方程,可以利用最佳的方式(例如蔡氏方法)来计算所需的位姿 \(H^{ROB}_{CAM}\).

../../../_images/hand-eye-calibration-board-mounted-on-camera-with-all-poses.png

The first step is choosing a calibration object, e.g. a checkerboard.


Zivid calibration objects (checkerboards and ArUco markers) will be covered in the next part of this tutorial.

../../../_images/hand-eye-robot-and-calibration-board-camera-on-robot.png

The calibration object is of known geometry. Thus, it can be detected from the camera image.


Further, its pose relative to the camera (\(H^{CAM}_{OBJ}\)) can be estimated.

../../../_images/hand-eye-robot-and-calibration-board-camera-object-pose-on-arm.png

To calculate the relative pose between the camera and the end-effector (\(H^{EE}_{CAM}\)), we somehow need to close the circle between the poses.

../../../_images/hand-eye-robot-and-calibration-board-camera-object-pose-and-rob-cam-pose-on-arm.png

末端执行器相对于机器人基座的位姿 (\(H^{ROB}_{EE}\)) 是已知的,由机器人控制器提供。

../../../_images/hand-eye-robot-and-calibration-board-camera-object-pose-and-rob-cam-pose-and-rob-ee-on-arm.png

The missing pose that will close the pose circle is the pose of the object relative to robot base (\(H^{ROB}_{OBJ}\)).

../../../_images/hand-eye-robot-and-calibration-board-all-poses-on-arm.png

To get rid of this pose or fix it, we must rigidly mount the calibration object.


This is to ensure the pose of the calibration object relative to the robot base (\(H^{ROB}_{OBJ}\)) remains constant during the motion of the robot.

../../../_images/hand-eye-robot-and-calibration-board-camera-on-robot-obj-pose.png

Now we have everything to close the pose circle and thus calculate the pose of the camera relative to the end-effector (\(H^{EE}_{CAM}\)).


During the hand-eye calibration process, the robot is moved to a set of different postures.


For each one, \(H^{EE}_{CAM}\) can be expressed as a function of the remaining two variable, known poses:

  • 机器人到末端执行器 \(H^{ROB}_{EE}\)

  • Camera to calibration object \(H^{CAM}_{OBJ}\)

and one constant, unknown pose:

  • Robot to object \(H^{ROB}_{OBJ}\).

With this set of equations, it is possible to utilize an optimization technique, such as Tsai's method, to calculate the desired pose \(H^{EE}_{CAM}\).

../../../_images/hand-eye-calibration-board-with-all-poses-eye-in-hand.png

Now that we've explained how to solve the hand-eye calibration problem, let's see learn about Hand-Eye Calibration Object options.