由于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
就正常出结果了