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

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マーカーの総数を足して、グリッドの「高さ」を求めます(デフォルトのボードでは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. プロセスに慣れたら、さらにスクリーンショットを撮影して再キャリブレーションすることを検討してください。