序文
最近、浙江大学の自律飛行ロボットプロジェクトが再現されましたが、その過程で多くの問題に遭遇しましたが、一つ一つ解決されました。ビデオの教え方によると、基本的な走行距離計はドリフトしにくいとのことですが、ネット上で昔から出回っている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