由於diy的雙目相機沒有做時間上的硬件同步,想着看看標定一下內外參能不能湊合用。首先試了一下采用ros自帶的camera_calibration,感覺還行,在--approxiamte_sync=0.1的情況下能夠正常標定。於是想着試一下kalibr...
1. 參照之前博客標定d435i時候的操作,錄製數據集
$ rosrun topic_tools throttle messages /camera/stereo/left/image_rect 4.0 /left
這裏降頻到4Hz錄製圖像數據集,左右目都錄製。這裏錄製的是通過ros的stereo_image_proc發佈出來的rect_image話題。
2. 運行kalibr,這裏也不贅述了,參考我之前標定d435i時候的博客,進入到kalibr_ws工作空間下:
$ kalibr_calibrate_cameras --target /home/nan/dev/kalibr_ws/src/kalibr/data/checkerboard.yaml --bag /home/nan/dataset/labdata/diycams.bag --models pinhole-equi pinhole-equi --topics /left /right --show-extraction
然後報錯了:
1569208515.99 - 88
1569208516.23 88 -
1569208516.27 - 88
1569208516.5 88 -
1569208516.53 - 88
1569208516.77 88 -
1569208516.8 - 88
1569208517.04 88 -
Cameras are not connected through mutual observations, please check the dataset. Maybe adjust the approx. sync. tolerance.
Traceback (most recent call last):
File "/home/nan/dev/kalibr_ws/devel/bin/kalibr_calibrate_cameras", line 15, in <module>
exec(compile(fh.read(), python_script, 'exec'), context)
File "/home/nan/dev/kalibr_ws/src/kalibr/aslam_offline_calibration/kalibr/python/kalibr_calibrate_cameras", line 444, in <module>
main()
File "/home/nan/dev/kalibr_ws/src/kalibr/aslam_offline_calibration/kalibr/python/kalibr_calibrate_cameras", line 201, in main
graph.plotGraph()
File "/home/nan/dev/kalibr_ws/src/kalibr/aslam_offline_calibration/kalibr/python/kalibr_camera_calibration/MulticamGraph.py", line 308, in plotGraph
edge_label=self.G.es["weight"],
KeyError: 'Attribute does not exist'
3. 接下來解決這個報錯的問題
於是:
$ kalibr_calibrate_cameras --target /home/nan/dev/kalibr_ws/src/kalibr/data/checkerboard.yaml --bag /home/nan/dataset/labdata/diycams.bag --models pinhole-equi pinhole-equi --topics /left /right --show-extraction --approx-sync 0.04
就正常出結果了