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マーカーの総数を足して、グリッドの「高さ」を求めます(デフォルトのボードでは8)。
- 四角形とマーカーの側面の長さをミリメートル単位で測定して、「四角形サイズ」と「マーカーサイズ」の測定値を確認します。
- 四角形サイズとマーカーサイズの測定は重要なので、キャリパーを使用してください。
- 辞書タイプを確認します。ダウンロードページのデフォルトボードは5x5_100辞書を使用しています。
キャリブレーション画像の撮影
- ボードができるだけ平らになるようにしてください。
- ボードが平らでない場合、キャリブレーションを実行すべきではありません。calib.ioから特別なボードを購入するか、印刷したボードをクリ ップボードに固定してください。
- ロボットの電源を入れ、Limelight Web UIにアクセスします。
- 1280x960のAprilTagパイプラインを作成します。
- 「入力」ソースタイプを「カメラ」から「スナップショット」に変更し、「すべてのスナップショットを削除」をクリックして、保存されているすべてのスナップショットを削除します。
- 「入力」ソースタイプを「カメラ」に戻します。
- まずはChArUcoボードのスナップショットを少なくとも25枚撮影します。プロセスに慣れたら、合計で少なくとも50枚の画像を撮影することをお勧めします。
- 標準的なチェッカーボードキャリブレーションに比べてChArUcoキャリブレーションの主な利点は、ボードの一部しかカメラに見えない場合でも機能することです。この利点を活用することが重要です。
- 画像は以下の特性をバランスよく含むようにしてください:
- ボードが画像の広い領域を占めている
- ボードが画像の少なくとも1つの端または角を超えて伸びている(これは画像の端の歪みを計算するのに役立ちます)
- ボードが遠近法の歪みを持つように配置されている(ボードが画像平面と平行でない)
- ボードの位置、視点、カバレッジの多様性を広く確保する
- 画像の50%は著しい前後圧縮を示すべきです。これは近いマーカーが遠いマーカーより大きく見える効果です。以下のスクリーンショットの最初と最後の画像が前後圧縮を示しています
キャリブレーションの実行
- 「キャリブレーション」タブに移動します。これは垂直サイドバーの3番目のタブです。
- 「ボードの準備」ステップで見つけた5つの値を入力します。
- 「スナップショットでキャリブレーション」ボタンをクリックします。プロセスは1〜2分かかる場合があります。
- 成功すると、「最新のキャリブレーション結果」カードに最新のキャリブレーション結果が表示されます。
- 「最新のキャリブレーション結果」カードで、再投影誤差が低い(理想的には1未満)合理的な結果を確認します。
- 最新のキャリブレーション結果をダウンロードし、「カスタム - ファイル」キャリブレーションスロットにアップロードします。
- これで3つのキャリブレーション結果カードが表示されるはずです。
- 「優先キャリブレーション」を「カスタム - ファイル」に変更して、カスタムキャリブレーション結果を使用します。すべてのパイプラインがあなたのキャリブレーション結果を使用します。
- プロセスに慣れたら、さらにスクリーンショットを撮影して再キャリブレーションすることを検討してください。