ロボットのHand-Eye Calibration AX=XB:Eye-in-Hand・Eye-to-Hand実践ガイド

手首にカメラを固定する構成はEye-in-Hand、セル側にカメラを固定する構成はEye-to-Handです。最初に各変換の始点と終点を書き出してください。OpenCVのcalibrateHandEye公式文書は、グリッパーからベース、ターゲットからカメラへの姿勢列を受け取り、カメラとグリッパーの関係を求めます。入力を逆にしても行列は出るため注意が必要です。

信頼できる結果には、二軸以上の独立した回転、計算に使わない検証用姿勢、実作業範囲での測定が必要です。校正全体の分類はロボットキャリブレーション、変換の読み方は座標系とTF2、ターゲット姿勢は6D物体姿勢推定で補えます。

カメラ配置と座標変換の向きを先に確定する

Eye-in-Handではカメラとエンドエフェクタが一緒に動き、ターゲットは作業空間に固定されます。Eye-to-Handではカメラが固定され、ターゲットがツールとともに動きます。どちらもAX=XBとして扱えますが、逆変換の位置と最終結果の意味は同じではありません。

base、gripper、camera optical frame、targetの四つを図にし、矢印の向きを明記します。光学座標系の軸、ドライバーが出す姿勢の向き、検出器の出力、mとmmの単位を、記録・計算・TF配信の全工程でそろえます。

構成固定されるもの動くもの求める関係起こりやすい誤り
Eye-in-Handターゲット・ベースグリッパー・カメラcamera↔grippergripper→baseの向きを逆に読む
Eye-to-Handカメラ・ベースグリッパー・ターゲットcamera↔baseターゲット姿勢を逆変換しない
共通寸法・座標定義ロボット姿勢一貫したSE(3)mとmm、回転表現の混在

内部パラメータとターゲットを先に検査する

ハンドアイ校正は不正確なカメラ内部校正を直してくれません。実運用と同じレンズ、焦点、解像度、露光、保護窓を使い、CameraInfoと映像が一致するか確認します。焦点や筐体を変えた場合は再利用せず再校正します。

OpenCVのパターン作成ガイドを参考に、平面性と実寸を確認したターゲットを使います。小さ過ぎる像、ぼけ、欠け、極端な斜視は、ターゲット姿勢を不安定にし、その誤差が最終変換へ入ります。

枚数よりも回転方向の多様性を確保する

同じ姿勢のまま平行移動を繰り返してもAX=XBは安定しません。MoveItの公式チュートリアルでは、五つの観測から計算でき、少なくとも二つの回転軸が必要で、12~15姿勢ほどで改善が落ち着く例を示しています。これは保証値ではなく収集設計の目安です。

中央と周辺、近距離と遠距離、正負の回転を組み合わせます。関節限界と衝突余裕を守り、停止後に画像と関節状態を同じ時刻基準で保存します。検出が弱い画像やモーションブラーは、計算前に除外理由を記録します。

Curiosityのロボットアーム先端に搭載されたMAHLIカメラ
アーム先端カメラの実例ですが、AX=XBのハンドアイ校正、ターゲット、変換行列、誤差結果を示すものではありません。 出典: NASA. ライセンス: Public domain.

ソルバーの順位付けより入力の一貫性を見る

OpenCVにはTsai、Park、Horaudのような分離解法と、Andreff、Daniilidisのような同時解法があります。複数手法が近い結果を返すならデータが良好である可能性が高く、大きく違うなら座標方向、姿勢の偏り、外れ値を調べるべきです。

同じデータを複数手法で計算し、並進・回転差と残差を保存します。一姿勢ずつ外したときに結果が急変しないかも見ます。最終選択は学習データの最小誤差ではなく、未使用姿勢と実作業で決めます。

評価量使うデータ確認できること見逃し得ること
再投影誤差画像コーナー検出と内部校正ロボット座標の誤差
AX=XB残差計算用姿勢方程式の整合性作業域への偏り
ホールドアウト誤差未使用姿勢新しい姿勢への一般化TCPずれ
ピック・プローブ誤差独立した作業点工程に必要な精度動的遅延・バックラッシュ

未使用姿勢と作業空間全体で精度を測る

調整を始める前に一部の観測をホールドアウトとして分けます。推定変換でターゲットをベース座標へ移し、ロボット姿勢を変えたときに位置が漂わないかを確認します。平均だけでなく最大値と方向別の偏りを残します。

次に実際のグリッパーまたは測定プローブで、近い点、遠い点、高低、作業域の四隅へ接近します。画像中央の一点だけを合わせてはいけません。TCPを別途検証し、ツール誤差とHand-Eye誤差を分けます。

ロボットのHand-Eye Calibration AX=XB:Eye-in-Hand・Eye-to-Hand実践ガイドの重要な確認点4項目をまとめたモバイルカード
記事で引用した公式情報と比較表を基にPhysical AI Labが制作した編集カードです。 出典: Physical AI Lab. ライセンス: Owned original.

誤差の変わり方から原因を絞り込む

全姿勢で一定方向にずれる場合はターゲット寸法、TCP、固定変換を疑います。姿勢に応じて誤差方向が回る場合は回転推定、逆変換、時刻同期、機構たわみを確認します。画面端だけ悪化するなら内部校正やレンズモデルを見直します。

動作中だけ悪化するなら、画像と関節状態のタイムスタンプ、露光時刻、ローリングシャッターを調べます。ブラケットの微動やケーブル荷重も無視できません。一姿勢だけに合う補正値で機械・同期問題を隠さないことが重要です。

行列だけでなく再現条件と再検査基準を残す

カメラ番号、レンズ、解像度、ターゲット種類と実寸、ロボット・ファームウェア、TCP、姿勢一覧、ソルバー、除外データ、検証結果を一緒に保存します。始点フレーム、終点フレーム、単位は機械可読なメタデータにします。

カメラやツールの脱着、衝突、ブラケット交換、焦点や映像経路の変更後は再検査します。運用中は基準ターゲットを定期観測し、工程ごとに定めた許容値を超えたら作業を止めて再校正します。どの用途にも通用する許容誤差(mm)はありません。

よくある質問

Hand-Eye Calibrationには何姿勢必要ですか?

実務では、二軸以上の回転を含む12~15姿勢前後と、別の検証用姿勢を出発点にします。固定枚数よりも回転の多様性と検出品質が重要です。

再投影誤差が小さければ校正は正しいですか?

それだけでは不十分です。再投影誤差は主に画像検出とカメラモデルを見ます。AX=XB残差、未使用姿勢、実際のピック・プローブ誤差も必要です。

Eye-in-Handの変換をEye-to-Handで使えますか?

そのままでは使えません。固定・移動フレームと逆変換が異なります。同じ解法を利用しても、入力と出力の座標関係を構成し直します。

確認した公式情報

最終確認日:2026年8月7日