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行の黒いマスの総数とArUcoマーカーの総数を足して、グリッドの「幅」を求めます( デフォルトのLimelightキャリブレーションボードでは11)。
- 1列の黒いマスの総数とArUcoマーカーの総数を足して、グリッドの「高さ」を求めます(デフォルトのLimelightキャリブレーションボードでは8)。
- マスとマーカーの辺の長さをミリメートル単位で測定して、「マスサイズ」と「マーカーサイズ」の測定値を確認します。
- マスサイズとマーカーサイズの測定は重要なので、ノギスを使用してください。
- 辞書タイプを確認します。ダウンロードページのデフォルトボードは5x5_100辞書を使用しています。
キャリブレーション画像のキャプチャ
- ボードができるだけ平らであることを確認します。
- ボードが平らでない場合はキャリブレーションを行わないでください。calib.ioから専用ボードを購入するか、印刷したボードをクリップボードに固定してください。
- ロボットの電源を入れ、Limelight Web UIにアクセスします。
- 1280x960のAprilTagパイプラインを作成します。
- 「入力」ソースタイプを「Camera」から「Snapshot」に変更し、「Delete all snapshots」をクリックして、保存されているすべてのスナップショットを削除します。
- 「入力」ソースタイプを「Camera」に戻します。
- 開始するには、ChArUcoボードのスナップショットを少なくとも25枚キャプ チャします。プロセスに慣れたら、合計で少なくとも50枚の画像をキャプチャするために戻ってください。
- ChArUcoキャリブレーションが標準のチェッカーボードキャリブレーションより優れている主な利点は、ボードの一部しかカメラに見えていなくても機能することです。この利点を活用することが重要です。
- 画像には以下の特性を適切に組み合わせる必要があります:
- ボードが画像の広い領域にわたっている。
- ボードが画像の少なくとも1つの端または角を超えて延びている(これにより、画像の端周辺の歪みを計算するのに役立ちます)。
- ボードが遠近法による歪みを持つように配置されていることが多い(ボードは画像平面と平行であってはならない)。
- ボードの位置、視点、カバレッジに幅広い多様性を目指す。
- 画像の50%は顕著な短縮効果を示す必要があります。これは、近いマーカーが遠いマーカーより大きく見える効果です。以下のスクリーンショットの最初と最後の画像は短縮効果を示しています

キャリブレーション
- 「Calibration」タブに移動します。縦のサイドバーの3番目のタブです。
- 「ボードの準備」ステップで見つけた5つの値を入力します。
- 「Calibrate with Snapshots」ボタンをクリックします。プロセスが完了するまで1〜2分かかる場合があります。
- 成功すると、「Latest Calibration Result」カードに最新のキャリブレーション結果が表示されます。
- 「Latest Calibration Result」カードで、再投影誤差が低い(理想的には1未満)妥当な結果を確認します。
- 最新のキャリブレーション結果をダウンロードし、「custom - file」キャリブレーションスロットにアップロードします。
- これで3つのキャリブレーション結果カードが表示されるはずです。
- 「preferred calibration」を「custom - file」に変更して、カスタムキャリブレーション結果を使用します。すべてのパイプラインがキャリブレーション結果を使用します。
- プロセスに慣れたら、より多くのスクリーンショットをキャプチャして再キャリブレーションすることを検討してください。