[Nav2中国のウェブサイト]ROS2単眼カメラキャリブレーションチュートリアル

この記事の出典:Nav2中国ネットワークチュートリアル

Nav2の完全なドキュメントとチュートリアルについては、http://nav2.fishros.comにアクセスしてください

Nav2通信グループ:139707339

WeChatパブリックアカウント:Yuxiang ROS

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

概要

このチュートリアルでは、キャリブレーションを通じて単眼カメラのパラメータを取得する方法を示します。

必要とする

1-オペレーティングシステムのパッケージマネージャーを使用して、カメラのキャリブレーションに必要なソフトウェアパッケージをインストールします

sudo apt install ros-<ros2-distro>-camera-calibration-parsers

sudo apt install ros-<ros2-distro>-camera-info-manager

sudo apt install ros-<ros2-distro>-launch-testing-ament-cmake

2-イメージパイプラインパッケージは、次のコマンドを使用して、ワークスペースのソースからビルドする必要があります。

git clone – b <ros2-distro> [email protected]:ros-perception/image_pipeline.git

また、次のものがあることを確認してください。 

  • 既知のサイズの大きなチェス盤。このチュートリアルでは、200mmx200mmの正方形のチェス盤を使用します。**カメラのキャリブレーションはチェッカーボードの内側の頂点を使用するため、「8x10」のチェッカーボードが必要です。したがって、以下の例に示すように、内部頂点パラメータの使用は正確に「7x9」です。** ここから  ダウンロードできます

  • 障害物を取り除き、市松模様をチェックするための明るい5mx5mのエリア

  • ROSで画像を公開できる単眼カメラ

チュートリアルの手順

1-GUIで端末を起動します 

2-使用しているカメラのROSドライバーを起動します。

3-カメラがROSを介して画像を公開していることを確認します。これは、以下を実行することでテストできます。 

ros2 topic list

4-これにより、投稿されたすべてのスレッドが表示されます。/ camera/image_raw内に画像スレッドがあることを確認してください。image_rawトピックが実際のトピックであり、画像を投稿していることを確認してください。トピックが投稿される頻度を確認する必要があります。

ros2 topic hz /camera/image_raw

5-カメラキャリブレーションノードを開始します 

ros2 run camera_calibration cameracalibrator --size 7x9 --square 0.20 image:=/my_camera/image_raw camera:=/my_camera

カメラ名:

-c、-camera_name
        キャリブレーションファイルに表示されるカメラの名前


チェス盤オプション:

1つまたは複数のチェス盤を--sizeオプションと--squareオプションのペアとして指定する必要があります。

  -p PATTERN、-pattern =
                    検出するPATTERNキャリブレーションパターン-'チェス盤'、'circles'、'acircles'、'charuco' 
  -s SIZE、-size = SIZE
                    チェス盤のサイズをNxMとして、内部の角を数えます(例:標準チェス盤は7x7)
  -q SQUARE、-square = SQUARE
                    チェス盤の正方形のサイズ(メートル単位) 

ROS通信オプション:

 -approximate = APPROXIMATE
                    同期されていないステレオカメラからの画像をペアリングするときに、指定されたスロップ(秒単位)を許可します
 --no-service-check
                    起動時にset_camera_infoサービスのチェックを無効にします

キャリブレーションオプティマイザーオプション: -fix 

 -principal-point
                    画像の中心にある主点を修正します
 --fix -アスペクト比
                    強制焦点距離(fx、fy)は等しい
 --zero-tangent-dist
                    接線歪み係数(p1、p2)を
                    ゼロに設定
 -k NUM_COEFFS、-k-coefficients=NUM_COEFFS
                    使用する放射状歪み係数の数(最大
                    6、デフォルト2)
 --disable_calib_cb_fast_check
                    はfindChessboardCornersにCALIB_CB_FAST_CHECKフラグを使用します

    これにより、チェッカーボードを強調表示するキャリブレーションウィンドウが開きます。

6より良いキャリブレーション結果を得るには、カメラの視野内でチェッカーボードを継続的に移動する必要があります。

  • チェッカーボードをカメラの視野の左、右、上、下に到達させます 

    ◦カメラの視野でのX-左/右方向

    Y-カメラの視野内で上下 

    ◦サイズ-カメラに近づいたり遠ざかったり、カメラに対して傾けたりします

  • 視野全体を埋めるチェッカーボード

  • チェッカーボードを左、右、上、下にスキューします(スキュー)

7チェッカーボードが連続的に移動すると、キャリブレーションウィンドウのサイドバーにある4本の水平バーの長さが長くなります。「CALIBRATE」ボタンは、4つのバーがすべて緑色で、キャリブレーションに使用できる十分なデータがある場合に点灯します。クリックして結果を表示します。キャリブレーションには約1分かかります。

8-キャリブレーションが完了すると、保存ボタンと送信ボタンが点灯します。校正結果はターミナルでも確認できます。

9-保存ボタンを押すと結果が表示されます。データは「/tmp/calibrationdata.tar.gz」に保存されます 

10-カメラのキャリブレーション結果ファイルを使用するには、次のコマンドを実行してファイル(calibration.tar.gz)を解凍します。 

tar -xvf calibration.tar.gz

11-キャリブレーション結果フォルダーには、「ost.yaml」ファイルと「ost.txt」ファイルとともに、キャリブレーションに使用されたすべての画像が表示されます。カメラドライバーのキャリブレーションパラメーターを含むyamlファイルを使用できます。

おすすめ

転載: blog.csdn.net/qq_27865227/article/details/123198498