雙目相機與IMU camera IMU 聯合標定工具箱使用方法——Kalibr

https://github.com/ethz-asl/kalibrpython

1.安裝git

Kalibr 提供兩種使用方式。第一種爲CDE下直接使用,做者將所需的庫文件打包好,省去了配置dependency的步驟,能夠直接從github

https://github.com/ethz-asl/kalibr/wiki/downloads工具

下載, 注意須要科學瀏覽。ui

下載以後直接用spa

./cde-exec+命令 便可使用對應的工具。code

例如若是咱們想使用kalibr內的kalibr_calibrate_cameras功能,blog

使用terminal

./ced-exec kalibr_calibrate_cameras --target april_6x6.yaml --bag static.bag --models pinhole-equi pinhole-equi omni-radtan omni-radtan --topics /cam0/image_raw /cam1/image_raw /cam2/image_raw /cam3/image_raw

便可。get

可是此方法不能使用其中的某些功能,例如咱們想使用calibration validator,在CDE環境下是沒法使用的。

因此做者建議咱們build from source。

根據https://github.com/ethz-asl/kalibr/wiki/installation的part B中的描述進行安裝。

在安裝過程當中,可能會遇到wget相關的錯誤,好比說在安裝到suitesparse庫的時候,對應的cmakelists中會經過wget 下載壓縮包,若沒法下載則整個kalibr都沒法成功安裝,那麼咱們須要進行一番修改。

固然你也能夠本身編寫cmakelists,不過我的以爲有點麻煩。

首先打開對應的cmakelists。

找到DOWNLOAD_COMMAND那一行,添加host agent 信息,將語句替換相似以下

DOWNLOAD_COMMAND rm -f SuiteSparse-${VERSION}.tar.gz && wget "http://faculty.cse.tamu.edu/davis/SuiteSparse/SuiteSparse-${VERSION}.tar.gz" --user-agent="Mozilla/5.0 (Ubuntu;U; Linux x86_64; rv:53.0) Gecko/20100101 Firefox/53.0"

便可,若terminal提示沒法解析你的host agent部分,能夠將此行註釋掉,由於文件已經下載,加入一行

DOWNLOAD_COMMAND wget "https://www.baidu.com"

便可進行下面的步驟。

到了這裏應該沒有問題了,等待半個小時左右便可build完畢。

 

ps: 在非CDE環境下使用須要注意python版本爲2.7時能夠正常使用。使用anaconda或者其餘python版本的須要將python版本切換。

 

2.開始標定

Kalibr不只提供了IMU以及camera的聯合標定工具箱,也提供了camera標定工具箱。

在此咱們先使用camera標定工具對相機進行標定。

首先咱們須要製做標定板,在此推薦使用april tag,可使用kalibr自帶工具自定義生成不一樣大小的標定板,命令以下

kalibr_create_target_pdf --type apriltag --nx [NUM_COLS] --ny [NUM_ROWS] --tsize [TAG_WIDTH_M] --tspace [TAG_SPACING_PERCENT]

將生成的pdf打印出來,置於平穩,光照充足的地方,注意要保持平整。

Kalibr做者推薦將camera固定,而後移動標定板,這樣能夠提升標定的穩定性,可是鑑於我使用場景受限,我使用的是晃動camera方法。

以後就能夠開始錄製bag了,使用

rosbag record /cam0/image_raw /cam1/image_raw /imu0

標定時注意激活全部的軸,便可錄製包含三個topic的rosbag了。

注意錄製過程當中camera不要距離標定板太近,不然會出現沒法初始化focal length的錯誤。

Kalibr是一個十分強大的工具箱,提供了不少工具。咱們可使用calibration validator進行標定的驗證,原理是對重投影偏差進行量化分析。你們能夠自行驗證。工具使用上一步驟的camera標定結果以及標定板的yaml文件,具體命令以下:

kalibr_camera_validator --cam camchain.yaml --target target.yaml

若對相機標定結果滿意咱們能夠繼續進行camera以及imu的聯合標定步驟,此步使用了以下信息:

1. 標定板yaml

2. 相機標定結果yaml

3. imu內參yaml

4. 前面使用的對應bag

有了如上材料便可進行聯合標定,具體以下

kalibr_calibrate_imu_camera --target aprilgrid6x4.yaml --cam camchain-2017-06-14-09-13-29.yaml --imu imu.yaml --bag 2017-06-14-09-13-29.bag --bag-from-to 5 45

最後的--bag_from_to是選取地5-45s的bag數據,去除了拾取防止設備產生的抖動部分影響。咱們建議進行多組標定以後將標定結果進行最佳無偏估計,不建議對R部分直接取平均值,能夠將多組數據的R部分轉換成四元數。以後進行處理。

到此就將聯合標定簡單介紹完了。

相關文章
相關標籤/搜索