這裡介紹用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