双目相机标定

1、事前准备

  1. 一个棋盘格标定板,本例为6x9的标定板,每个方格的尺寸为0.02m

  2. 光线充足的5m x 5m区域,无障碍物和其他棋盘格标定盘

  3. 双目立体摄像机,通过ROS发布左右图像(如果要将两个独立的摄像机用作双目立体摄像机,则必须确保两个摄像机的图像具有相同的时间戳)

2、编译

获取依赖并编译驱动

rosdep install camera_calibration
rosmake camera_calibration

3、发布相机数据

执行

rosrun my_stereo_camera stereo.py

确保我们的双目立体相机通过ROS发布相机左右目的图像,我们可以通过以下命令确保图片数据已经被发布:

rostopic list

4、开始标定

在开启标定前,请确保/stereo/right/image_raw/stereo/left/image_raw发布图片的话题已开启。

rosrun camera_calibration cameracalibrator.py --approximate 0.1 --size 9x6 --square 0.02 --no-service-check right:=/stereo/right/image_raw left:=/stereo/left/image_raw right_camera:=/stereo/right left_camera:=/stereo/left

--approximate 0.1的值表示,左右两张图片的时间戳差值只要小于0.1秒,就认为是同时拍照的,继而进行标定操作。此命令会开启一个下面这样的窗口,窗口会彩色高亮显示棋盘格,棋盘格以外的内容将会是黑白色的。

我们不断变换标定板方向,建议多一些横向摆放的,软件自动采集40个之后,右边的CALIBRATE将会亮起,此时可以进行标定计算了,计算完毕后,可以通过SAVE对结果进行保存,输出文件在/tmp/calibrationdata.tar.gz

参考:ROS-3D相机标定