手首にカメラを固定する構成は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↔gripper | gripper→baseの向きを逆に読む |
| Eye-to-Hand | カメラ・ベース | グリッパー・ターゲット | camera↔base | ターゲット姿勢を逆変換しない |
| 共通 | 寸法・座標定義 | ロボット姿勢 | 一貫したSE(3) | mとmm、回転表現の混在 |
内部パラメータとターゲットを先に検査する
ハンドアイ校正は不正確なカメラ内部校正を直してくれません。実運用と同じレンズ、焦点、解像度、露光、保護窓を使い、CameraInfoと映像が一致するか確認します。焦点や筐体を変えた場合は再利用せず再校正します。
OpenCVのパターン作成ガイドを参考に、平面性と実寸を確認したターゲットを使います。小さ過ぎる像、ぼけ、欠け、極端な斜視は、ターゲット姿勢を不安定にし、その誤差が最終変換へ入ります。
枚数よりも回転方向の多様性を確保する
同じ姿勢のまま平行移動を繰り返してもAX=XBは安定しません。MoveItの公式チュートリアルでは、五つの観測から計算でき、少なくとも二つの回転軸が必要で、12~15姿勢ほどで改善が落ち着く例を示しています。これは保証値ではなく収集設計の目安です。
中央と周辺、近距離と遠距離、正負の回転を組み合わせます。関節限界と衝突余裕を守り、停止後に画像と関節状態を同じ時刻基準で保存します。検出が弱い画像やモーションブラーは、計算前に除外理由を記録します。

ソルバーの順位付けより入力の一貫性を見る
OpenCVにはTsai、Park、Horaudのような分離解法と、Andreff、Daniilidisのような同時解法があります。複数手法が近い結果を返すならデータが良好である可能性が高く、大きく違うなら座標方向、姿勢の偏り、外れ値を調べるべきです。
同じデータを複数手法で計算し、並進・回転差と残差を保存します。一姿勢ずつ外したときに結果が急変しないかも見ます。最終選択は学習データの最小誤差ではなく、未使用姿勢と実作業で決めます。
| 評価量 | 使うデータ | 確認できること | 見逃し得ること |
|---|---|---|---|
| 再投影誤差 | 画像コーナー | 検出と内部校正 | ロボット座標の誤差 |
| AX=XB残差 | 計算用姿勢 | 方程式の整合性 | 作業域への偏り |
| ホールドアウト誤差 | 未使用姿勢 | 新しい姿勢への一般化 | TCPずれ |
| ピック・プローブ誤差 | 独立した作業点 | 工程に必要な精度 | 動的遅延・バックラッシュ |
未使用姿勢と作業空間全体で精度を測る
調整を始める前に一部の観測をホールドアウトとして分けます。推定変換でターゲットをベース座標へ移し、ロボット姿勢を変えたときに位置が漂わないかを確認します。平均だけでなく最大値と方向別の偏りを残します。
次に実際のグリッパーまたは測定プローブで、近い点、遠い点、高低、作業域の四隅へ接近します。画像中央の一点だけを合わせてはいけません。TCPを別途検証し、ツール誤差とHand-Eye誤差を分けます。

誤差の変わり方から原因を絞り込む
全姿勢で一定方向にずれる場合はターゲット寸法、TCP、固定変換を疑います。姿勢に応じて誤差方向が回る場合は回転推定、逆変換、時刻同期、機構たわみを確認します。画面端だけ悪化するなら内部校正やレンズモデルを見直します。
動作中だけ悪化するなら、画像と関節状態のタイムスタンプ、露光時刻、ローリングシャッターを調べます。ブラケットの微動やケーブル荷重も無視できません。一姿勢だけに合う補正値で機械・同期問題を隠さないことが重要です。
行列だけでなく再現条件と再検査基準を残す
カメラ番号、レンズ、解像度、ターゲット種類と実寸、ロボット・ファームウェア、TCP、姿勢一覧、ソルバー、除外データ、検証結果を一緒に保存します。始点フレーム、終点フレーム、単位は機械可読なメタデータにします。
カメラやツールの脱着、衝突、ブラケット交換、焦点や映像経路の変更後は再検査します。運用中は基準ターゲットを定期観測し、工程ごとに定めた許容値を超えたら作業を止めて再校正します。どの用途にも通用する許容誤差(mm)はありません。
よくある質問
Hand-Eye Calibrationには何姿勢必要ですか?
実務では、二軸以上の回転を含む12~15姿勢前後と、別の検証用姿勢を出発点にします。固定枚数よりも回転の多様性と検出品質が重要です。
再投影誤差が小さければ校正は正しいですか?
それだけでは不十分です。再投影誤差は主に画像検出とカメラモデルを見ます。AX=XB残差、未使用姿勢、実際のピック・プローブ誤差も必要です。
Eye-in-Handの変換をEye-to-Handで使えますか?
そのままでは使えません。固定・移動フレームと逆変換が異なります。同じ解法を利用しても、入力と出力の座標関係を構成し直します。
確認した公式情報
最終確認日:2026年8月7日