摄像头这种精密仪器对光学器件的要求较高,由于摄像头内部与外部的一些原因,生成的物体图像往往会发生畸变,为了避免数据源造成的误差,需要针对摄像头的参数进行标定。ROS官方提供了用于双目和单目摄像头标定的功能包——camera_calibration。 机器视觉功能包下载地址,包含了摄像头标定、OpenCV、人脸识别、物体跟踪、二维码识别和物体识别等: //download.csdn.net/download/weixin_44827364/12147918
camera_calibration功能包
先使用以下命令安装摄像头标定功能包camera_calibration:
$ sudo apt-get install ros-kinetic-camera-calibration
标定需要用到如图所示棋盘格图案的标定靶。 大家可以打印出来,不打印直接用电脑屏幕也是可以的。
启动标定程序
可以下载整理好的功能包,直接使用下面这些代 码://download.csdn.net/download/weixin_44827364/12147918 一切就绪后准备开始标定摄像头。首先使用以下命令启动USB摄像头:
$ roslaunch robot_vision usb_cam.launch
然后使用以下命令启动标定程序:
$ rosrun camera_calibration cameracalibrator.py ——size 8x6 ——square 0.024 image:=/usb_cam/image_raw camera:=/usb_cam
cameracalibrator.py标定程序需要以下几个输入参数。 1)size:标定棋盘格的内部角点个数,这里使用的棋盘一共有6行,每行有8个内部角点。 2)square:这个参数对应每个棋盘格的边长,单位是米。 3)image和camera:设置摄像头发布的图像话题。 根据使用的摄像头和标定靶棋盘格尺寸,相应修改以上参数,即可启动标定程序。
标定摄像头
标定程序启动成功后,将标定靶放置在摄像头视野范围内,应该可以看到如图所示的图形界面。
在没有标定成功前,右边的按钮都为灰色,不能点击。为了提高标定的准确性,应该尽量让标定靶出现在摄像头视野范围内的各个区域,界面右上角的进度条会提示标定进度。 1)X:标定靶在摄像头视野中的左右移动。 2)Y:标定靶在摄像头视野中的上下移动。 3)Size:标定靶在摄像头视野中的前后移动。 4)Skew:标定靶在摄像头视野中的倾斜转动。 不断在视野中移动标定靶,直到“CALIBRATE”按钮变色,表示标定程序的参数采集完成。点击“CALIBRATE”按钮,标定程序开始自动计算摄像头的标定参数,这个过程需要等待一段时间,界面可能会变成灰色无响应状态,注意千万不要关闭。 参数计算完成后界面恢复,而且在终端中会有标定结果的显示
点击界面中的“SAVE”按钮,标定参数将被保存到默认的文件夹下,并在终端中看到该路径,如图所示。 这时候需要等一会,电脑需要进行一会计算,不要以为是卡了。
点击“COMMIT”按钮,提交数据并退出程序。然后打开/tmp文件夹,就可以看到标定结果的压缩文件calibrationdata.tar.gz;解压该文件后的内容如图所示,从中可以找到ost.yaml命名的标定结果文件,将该文件复制出来,重新命名就可以使用了。
打开文件可以看到,摄像头已经标定好了,其实现在照片已经无所谓了,最重要的是那个ost.yaml文件。 把文件内容复制并替换robot_vision目录下camera_calibration.yaml中的内容。