D435 カメラ + pixhwak フライト コントロール IMU キャリブレーション (内部参加および外部参照)

序文

最近、浙江大学の自律飛行ロボットプロジェクトが再現されましたが、その過程で多くの問題に遭遇しましたが、一つ一つ解決されました。ビデオの教え方によると、基本的な走行距離計はドリフトしにくいとのことですが、ネット上で昔から出回っているKalibrのキャリブレーションはやはりやってみたいと思っています。主な理由は、データを調べたときに、外部パラメーター マトリックスが正確であればあるほど、VINS の効果が向上することがわかったので、始めましょう。

D435 カメラの内部パラメータの校正

1. 事前作業この記事
を参考に、キャリブレーションボードなど必要なファイルをダウンロードし、ビデオを2回視聴します2. realsenseを起動し、px4を起動します

roslaunch realsense2_camera rs_camera.launch
roslaunch mavros px4.launch

トピックを確認して、必要なトピックを見つけてください。ros の基本を理解している人は問題ありません。
3. 録画パッケージ
ビデオで教えられた動作に従って録画します

rosbag record -O stereo_calibra.bag /camera/infra1/image_rect_raw /camera/infra2/image_rect_raw /mavros/imu/data /mavros/imu/data_raw

Stereo_calibra.bag 自体のパッケージ名 /camera/infra1/image_rect_raw /camera/infra2/image_rect_raw /mavros/imu/data /mavros/imu/data_raw はトピック名であり、トピックの頻度を減らすために上記で言及しません
。減らす必要があると思います。キャリブレーションはリアルタイムで実行されるプログラムではありません。もちろん、精度が高ければ高いほど良いのです。
誤解がある場合はコメントでご指摘ください。
4. 調整プログラムを実行して
環境変数を追加します。

source devel/setup.bash

調整プログラムを実行します。

rosrun kalibr kalibr_calibrate_cameras --bag stereo_calibra.bag --topics /camera/infra1/image_rect_raw /camera/infra2/image_rect_raw  --models pinhole-equi pinhole-equi --target /home/liuzao/april_6x6_80x80cm.yaml

ここではパスの問題に特に注意してください。数回実行してエラーを報告しました。最後に、以前に記録した Stereo_calibra.bag を Kalibr_ws/ の下に置きます。これは、kalibr をコンパイルしたワークスペースです

エラー 1:
エラーの種類があり、エラー メッセージのスクリーンショットはありませんが、プロンプトに従うことで解決できます。
ここに画像の説明を挿入
エラー 2:
RuntimeError: [CameraChainParameters Reader]: 構成を camchain-/home/liuzao/ に書き込めませんでした。 Stereo_calibra.yaml
このエラーは非常に厄介で、パスの問題です。何度か試し、4 番目の手順のコマンドを何度も試し、最終的に解決します。

pixhwak IMU 内部基準キャリブレーション

全体としては上記リンクも参考にしながら、私が踏んだ落とし穴について書いていきます。
起動ファイルの実行後、つまりこのコマンドの実行後

roslaunch imu_utils px4_imu.launch

ここに画像の説明を挿入

ウィンドウには「wait for imu data」と表示されます。
プログラムが実行されていないとは考えないでください。実際、プログラムにはフィードバック情報がありませんが、実行されています。
それを確認したい場合は、max_time_min を 1 に設定すると、その効果をすぐに確認できます。
正しく設定する必要がある番号は、私の写真の注釈と一致している必要があります。

カメラとIMUの共同校正

次のように分類される標準テンプレートをダウンロードします。
カメラ内部基準キャリブレーション ファイル: cam_april-camchain.yaml Stereo_calibra.bag (これは自己記録であり、ダウンロードされません)
IMU 内部基準キャリブレーション ファイル: imu_adis16448.yaml
キャリブレーション ボード ファイル: april_6x6_80x80cm.yaml

テンプレート ファイル内のパラメータを、前に測定したパラメータに置き換えます。

Bag-from-To は、傍受されたパッケージの実行時間であり、実際の状況に応じて推定できます。通常、頭と尾が削除されるのに 5 秒かかります。私の場合と同様、時間は 91 秒なので、傍受は 5 です〜86秒。
Kalibr_ws フォルダーに入り、コマンドを実行します。
ここに画像の説明を挿入
コマンドとファイルの場所を比較するためにこの図を置きました。これは初心者が混乱しやすく、一部のファイルが他の場所からコピーされているためです。

rosrun kalibr kalibr_calibrate_imu_camera --target april_6x6_80x80cm.yaml --cam cam_april-camchain.yaml --imu imu_adis16448.yaml --bag stereo_calibra.bag --bag-from-to 5 86

ここからがポイントです!
cam_april-camchain.yaml は次のようになりますが、それ以外の場合はエラーが報告されます。以前に T_cn_cnm1 マトリックスを見逃したため、ベースラインが見つからないというエラーが表示されました。
ここに画像の説明を挿入

エラー 1:
RuntimeError: [CameraChainParameters Reader]: 無効なカメラ ベースライン (cam_april-camchain.yaml の cam1)
これは、上記のベースラインが見つからないというエラーです。

参考リンク

https://blog.csdn.net/qinqinxiansheng/article/details/108629530
https://zhuanlan.zhihu.com/p/309287821
http://admin.guyuehome.com/34592

おすすめ

転載: blog.csdn.net/private_Jack/article/details/131122949