ハンドアイキャリブレーションソリューション

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 マーカー)については、このチュートリアルの次のパートで説明します。

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

キャリブレーション対象物は既知の形状を持っています。そのため、カメラ画像から検出することができます。


さらに、カメラに対するその姿勢( \(H^{CAM}_{OBJ}\) )を推定することができます。

../../../../_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

この姿勢を解消または固定するには、キャリブレーションオブジェクトをエンドエフェクタに取り付けることができます。

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

これで、姿勢の循環を閉じるためのすべてが揃ったように思われ、ロボットに対するカメラの姿勢( \(H^{ROB}_{CAM}\) )を計算できます。しかし、それほど単純ではありません。

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

これは、相対姿勢( \(H^{EE}_{OBJ}\) )を完全に除去したわけではないためです。ただし、相対姿勢を一定に保つことで、ロボットの動作中にエンドエフェクタに対するキャリブレーションオブジェクトの姿勢( \(H^{EE}_{OBJ}\) )が変化しないようにしています。


これにより、ロボットをさまざまな姿勢に動かすことが可能になります。


それぞれについて、 \(H^{ROB}_{CAM}\) は残りの 2 つの変数である既知の姿勢の関数として表すことができます:

  • ロボットからエンドエフェクタへ \(H^{ROB}_{EE}\)

  • カメラからキャリブレーション対象物へ \(H^{CAM}_{OBJ}\)

そして、一つの定数である未知の姿勢:

  • エンドエフェクタからキャリブレーションオブジェクトへ \(H^{EE}_{OBJ}\)

この一連の方程式を使用すると、Tsai の方法などの最適化手法を利用して、目的の姿勢 \(H^{ROB}_{CAM}\) を計算することができます。

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

最初のステップは、キャリブレーション対象物(例えば、チェッカーボード)を選択することです。


Zivid のキャリブレーションオブジェクト (チェッカーボードと ArUco マーカー)については、このチュートリアルの次のパートで説明します。

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

キャリブレーション対象物は既知の形状を持っています。そのため、カメラ画像から検出することができます。


さらに、カメラに対するその姿勢( \(H^{CAM}_{OBJ}\) )を推定することができます。

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

カメラとエンドエフェクタ間の相対姿勢( \(H^{EE}_{CAM}\) )を計算するには、何らかの方法で姿勢間の循環を閉じる必要があります。

../../../../_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

姿勢の循環を閉じるために不足している姿勢は、ロボットベースに対するオブジェクトの姿勢( \(H^{ROB}_{OBJ}\) )です。

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

この姿勢を解消または固定するには、キャリブレーション対象物をしっかりと固定する必要があります。


これは、ロボットの動作中に、ロボットベースに対するキャリブレーションオブジェクトの姿勢( \(H^{ROB}_{OBJ}\) )が一定に保たれるようにするためです。

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

これで姿勢の循環を閉じ、エンドエフェクタに対するカメラの姿勢( \(H^{EE}_{CAM}\) )を計算するためのすべてが揃いました。


ハンドアイキャリブレーションのプロセス中、ロボットは一連の異なる姿勢に動かされます。


それぞれについて、 \(H^{EE}_{CAM}\) は残りの 2 つの変数である既知の姿勢の関数として表すことができます:

  • ロボットからエンドエフェクタへ \(H^{ROB}_{EE}\)

  • カメラからキャリブレーション対象物へ \(H^{CAM}_{OBJ}\)

そして、一つの定数である未知の姿勢:

  • ロボットからオブジェクトへ \(H^{ROB}_{OBJ}\)

この一連の方程式を使用すると、Tsai の方法などの最適化手法を利用して、目的の姿勢 \(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 learn about ハンドアイキャリブレーション用オブジェクト options.