1.概述
本文总结使用ROS标定单目和双目相机的过程,同时提供生成棋盘格文件的方法。
参考链接:
[1]使用ros标定相机的内参和外参
[2]ROS下采用camera_calibration进行双目相机标定
2.生成棋盘格文件
棋盘格可以自己买一个,或者打印一个粘在板子上,棋盘格电子版生成可以参考博客《使用kalibr标定工具进行单目相机和双目相机的标定》
2.单目相机标定
2.1 运行命令
rosrun camera_calibration cameracalibrator.py --size 8x6 --square 0.1 image:=/camera/color/image_raw camera:=/camera --no-service-check
2.2 参数解释
- –size:棋盘格尺寸参数,8x6指的是标定板小方格交点的数量,如果黑白方格的数量是9个x7个,则尺寸参数为8x6
- –square:为每个小棋盘格的边长,单位是米
- /camera/color/image_raw:为相机topic的名字
- 其他参数不需要修改
标定节点运行后界面如下:
2.3 数据采集
为了得到一个好的标定结果,应该使得标定板尽量出现在摄像头视野的各个位置里,如标定板出现在视野中的左边,右边,上边和下边,标定板既有倾斜的,也有水平的.
以下四个参数表示标定板在x,y方向,缩放情况,倾斜程度的进度,需要不停的在相机视野中上下左右旋转靠近原理等等,让四个参数下面的进度全部变成绿色
x:表示标定板在视野中的左右位置。
y:表示标定板在视野中的上下位置。
size:标定板在占视野的尺寸大小,也可以理解为标定板离摄像头的远近。
skew:标定板在视野中的倾斜位置。
2.4 参数标定
当四个都变绿色时,下面的三个按钮也会变成青色,此时点击CALIBRATE
开始标定,过程大约1,2分钟,标定结束后终端会打印标定结果
点击SAVE
按钮会保存采集的数据和标定结果
3.双目相机标定
双目相机标定命令如下,修改相应的左右目相机名称运行命令即可,标定过程和单目标定一致
rosrun camera_calibration cameracalibrator.py --approximate 0.1 --size 8x6 --square 0.1 left:=/camera/infra1/image_rect_raw right:=/camera/infra2/image_rect_raw right_camera:=/camera/right left_camera:=/camera/left --no-service-check
标定界面: