メインコンテンツまでスキップ

ChArUco カメラキャリブレーション

なぜこれが重要なのか?

完全にキャリブレーションされたカメラは、より正確な2Dおよび3D測定を提供します。これは「サーボイング」に基づかないタスクに役立ちます。

とはいえ、可能な限り「サーボイング」方式を使用することをお勧めします。これは高速で正確であり、物体の取得、照準、ターゲットへの位置合わせなどのタスクに適しています。より高い精度が必要だと判断しない限り、キャリブレーションについて心配する必要はありません。すべてのLLユニットには、ほとんどのユースケースで十分に良い結果を提供するデフォルトのキャリブレーションが付属しています

「サーボイング」とは、ターゲットが設定可能な「十字線」と完全に一致するまでロボットを回転させるプロセスです。これはロボット工学におけるビジョン問題に取り組む最も簡単で、多くの場合、最も信頼性の高い方法です。

カメラキャリブレーションとは?

内部パラメータのキャリブレーションは、以下の2つのコンポーネントを決定するプロセスです:

1. カメラ行列

カメラ行列(Kと表記されることが多い)は、レンズとセンサーが3D世界を2D画像に変換する方法を記述する3x3行列です。

[fx  0   cx]
[0 fy cy]
[0 0 1]

cxとcyは主点/主要ピクセルの座標です。主点/主要ピクセルは、光軸/レンズの中心と直接一致するピクセルです。製造過程では、カメラレンズはほとんど常に画像センサーの中心と完全に一致することはありません。どのピクセルが真の「中心」ピクセルであるかを理解することが重要です

fxとfyはピクセル単位で計算された焦点距離です。fxとfyはカメラの視野角/ズームレベルを理解するのに役立ちます。

2. 歪み係数

5つの歪み係数を計算します:

[k1, k2, p1, p2, k3]

k1、k2、k3は放射状歪み係数で、直線が曲線に見える原因となります。

p1、p2は接線方向歪み係数で、レンズが画像平面と平行でないことによって発生します。

ChArUcoキャリブレーションの実行

LimelightでのChArUcoキャリブレーションは、できるだけシームレスで確実に行えるように設計されています。以下の手順を読み、その後のビデオを見て、精度を向上させるためにカメラをキャリブレーションする方法を学びましょう。

備考

キャリブレーションは1つの解像度でのみ行う必要があります(LL3では1280x960、LL3Gでは1280x800をお勧めします)。内部パラメータはパイプラインの選択した解像度に合わせて自動的にスケーリングされ、歪み係数はアスペクト比とFOVが固定されている場合、解像度に依存しません。ハードウェアズームパイプラインと5メガピクセルパイプラインは、カスタムキャリブレーションを使用しない唯一のパイプラインです。

ボードの準備

任意のラップトップ画面を使用してカメラをキャリブレーションできます。ただし、最大限の精度を得るには、calib.ioの800mmx600mmの粗いボードの購入をお勧めします。

ChArUcoボードの例

  1. ChArUcoキャリブレーションボードを印刷するか、大きなラップトップやコンピュータ画面にボードの画像を表示します。ダウンロードページから入手できるボードを使用するか、独自のボードを生成してください。
  2. 1行の黒い四角形の総数とArUcoマーカーの総数を足して、グリッドの「幅」を求めます(Limelightのデフォルトキャリブレーションボードでは11)。
  3. 1列の黒い四角形の総数とArUcoマーカーの総数を足して、グリッドの「高さ」を求めます(Limelightのデフォルトキャリブレーションボードでは8)。
  4. 四角形とマーカーの辺の長さをミリメートル単位で測定して、「四角形サイズ」と「マーカーサイズ」の測定値を確認します。
    • 四角形サイズとマーカーサイズの測定は重要なので、キャリパーを使用してください。
  5. 辞書タイプを確認します。ダウンロードページのデフォルトボードは5x5_100辞書を使用しています。

キャリブレーション画像の撮影

  1. ボードができるだけ平らであることを確認します。
    • ボードが平らでない場合はキャリブレーションを行わないでください。calib.ioから特別なボードを購入するか、印刷したボードをクリップボードに固定することができます。
  2. ロボットの電源を入れ、Limelight Web UIにアクセスします。
  3. 1280x960のAprilTagパイプラインを作成します。
  4. 「入力」ソースタイプを「カメラ」から「スナップショット」に変更し、「すべてのスナップショットを削除」をクリックして、保存されているすべてのスナップショットを削除します。
  5. 「入力」ソースタイプを「カメラ」に戻します。
  6. まずはChArUcoボードのスナップショットを少なくとも25枚撮影します。プロセスに慣れたら、合計で少なくとも50枚の画像を撮影するとよいでしょう。
  7. 標準的なチェッカーボードキャリブレーションに比べてChArUcoキャリブレーションの主な利点は、ボードの一部だけがカメラに見えていても機能することです。この利点を活用することが重要です。
  8. 画像には以下の特性が適切に混在しているべきです:
    • ボードが画像の広い領域にまたがっている。
    • ボードが画像の少なくとも1つの端または角を超えて伸びている(これにより画像の端の歪みを計算するのに役立ちます)。
    • ボードが透視変形を持つように配置されていることが多い(ボードは画像平面と平行であるべきではありません)。
    • ボードの位置、視点、カバレッジの多様性を広く確保する。
    • 画像の50%は著しい遠近短縮を示すべきです。これは近くのマーカーが遠くのマーカーよりも大きく見える効果です。以下のスクリーンショットの最初と最後の画像は遠近短縮を示しています。

キャリブレーションの例

キャリブレーション

  1. 「キャリブレーション」タブに移動します。これは垂直サイドバーの3番目のタブです。
  2. 「ボードの準備」ステップで見つけた5つの値を入力します。
  3. 「スナップショットでキャリブレーション」ボタンをクリックします。プロセスが完了するまで1〜2分かかる場合があります。
  4. 成功すると、「最新のキャリブレーション結果」カードに最新のキャリブレーション結果が表示されます。
  5. 「最新のキャリブレーション結果」カードで、再投影誤差が低い(理想的には1未満)合理的な結果を確認します。
  6. 最新のキャリブレーション結果をダウンロードし、「カスタム - ファイル」キャリブレーションスロットにアップロードします。
  7. これで3つのキャリブレーション結果カードが表示されるはずです。
  8. 「優先キャリブレーション」を「カスタム - ファイル」に変更して、カスタムキャリブレーション結果を利用します。すべてのパイプラインがキャリブレーション結果を使用します。
  9. プロセスに慣れたら、さらにスクリーンショットを撮影して再キャリブレーションすることを検討してください。