1. 程式人生 > >學習Kalibr工具--Camera標定過程

學習Kalibr工具--Camera標定過程

這裡介紹用kalibr工具對相機進行單目和雙目的標定;
在kalibr中不僅提供了IMU與camera的聯合標定工具,也包含了camera的標定工具箱;


- 準備:
安裝好kalibr之後,開始準備標定板,在kalibr中適用於三種標定板,分別是:Aprilgrid,Checkerboard和Circlegrid。其中checkboard最常用,但是aprilgird精度最好,因為它可以提供序號資訊,能夠防止姿態計算時出現跳躍的情況。
- 製作標定板:
這裡使用aprilgrid標定板,可以使用kalibr自帶工具自定義生成不同大小的標定板,命令列如下:

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

將以上命令生成的標定板PDF格式,直接無縮放比例打印出來,就可以直接使用。
- 資料採集:
製作好標定板之後,就可以使用相機對標定板進行拍攝,進行資料採集,相機要從多個角度對標定進行拍攝,這樣相機pose要足夠多。命令列如下:(若是單目標定,則執行一行)

 rosrun topic_tools throttle messages /mynteye/left/image_raw 4.0 /left
 rosrun topic_tools throttle messages /mynteye/right/image_raw 4.0 /right

命令列中 topic_tools throttle 為ROS中改變topic釋出頻率的命令,通常裝置採集頻率為30左右,這會使得標定的影象太多,急劇增加計算量,最好將ros topic降到 4hz左右進行資料採集。要確保影象不要模糊,運動不要太快!
- 製作 rosbag:


資料採集好了之後就可以進行 bag 的製作了,命令列如下:(若是單目標定,則執行一行)

rosbag record -O stereo_calibra.bag /left /right

上述的stereo_calibra.bag就是生成的bag.
- 標定:
使用前邊的 bag 與 採集的影象進行標定,命令列如下:

source /home/kalibr/devel/setup.bash

kalibr_calibrate_cameras --bag /home/stereoCamData/stereo_calibra.bag --topics /left /right --models pinhole-radtan pinhole-radtan --target /home/stereoCamData/april_6x6_80x80cm_A0.yaml

- 標定驗證:
可以使用calibration validator進行標定結果的驗證,原理是對重投影誤差進行量化分析。命令列如下:

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

命令列中 camchain.yaml 與 target.yaml 分別為上述中camera標定的結果以及 標定板的yaml檔案。

相機標定之後就可以進行 camera 與IMU 的聯合標定。

參考部落格:
https://blog.csdn.net/wwchen61/article/details/78013962
https://blog.csdn.net/heyijia0327/article/details/83583360
https://www.jianshu.com/p/34c301cdc312