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

このチュートリアルの前の部分では、ハンドアイキャリブレーションで解決する必要がある問題について説明しました。このチュートリアルでは、ソリューションの背景となるアイデアについて説明します。基本的な考え方は、eye-to-hand システムと eye-in-hand システムで同じです。そのため、まず eye-to-hand 構成についての詳細なソリューションを説明します。次に、eye-in-hand 構成における違いを指摘します。

注釈

ハンドアイキャリブレーションを行うのに、エンドエフェクタやその姿勢(装着されている場合)を知る必要はありません。ツールセンターポイント(TCP)の値は、ハンドアイキャリブレーションの結果に影響しません。この記事および以降のチュートリアルでは、「エンドエフェクタ」という用語は、ツールフランジ(ロボットの最後のリンク)を指します。

ハンドアイキャリブレーションを解決するにはどうすればよいですか?

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


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

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


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

ハンドアイキャリブレーション問題を解決する方法を説明しましたので、次は ハンドアイキャリブレーション用オブジェクト オプションについて学びましょう。