ROS-机器视觉 ①:摄像头的标定

127
0
2021年1月8日 09时01分

摄像头这种精密仪器对光学器件的要求较高,由于摄像头内部与外部的一些原因,生成的物体图像往往会发生畸变,为了避免数据源造成的误差,需要针对摄像头的参数进行标定。ROS官方提供了用于双目和单目摄像头标定的功能包——camera_calibration。

 

机器视觉功能包下载地址,包含了摄像头标定、OpenCV、人脸识别、物体跟踪、二维码识别和物体识别等:
//download.csdn.net/download/weixin_44827364/12147918

 

camera_calibration功能包

 

先使用以下命令安装摄像头标定功能包camera_calibration:

 

$ sudo apt-get install ros-kinetic-camera-calibration

 

标定需要用到如图所示棋盘格图案的标定靶。
大家可以打印出来,不打印直接用电脑屏幕也是可以的。

 

微信图片_20210106155748

 

启动标定程序

 

可以下载整理好的功能包,直接使用下面这些代

码://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:设置摄像头发布的图像话题。

 

根据使用的摄像头和标定靶棋盘格尺寸,相应修改以上参数,即可启动标定程序。

 

标定摄像头

 

标定程序启动成功后,将标定靶放置在摄像头视野范围内,应该可以看到如图所示的图形界面。

 

微信图片_20210106155824

 

在没有标定成功前,右边的按钮都为灰色,不能点击。为了提高标定的准确性,应该尽量让标定靶出现在摄像头视野范围内的各个区域,界面右上角的进度条会提示标定进度。

 

1)X:标定靶在摄像头视野中的左右移动。
2)Y:标定靶在摄像头视野中的上下移动。
3)Size:标定靶在摄像头视野中的前后移动。
4)Skew:标定靶在摄像头视野中的倾斜转动。

 

不断在视野中移动标定靶,直到“CALIBRATE”按钮变色,表示标定程序的参数采集完成。点击“CALIBRATE”按钮,标定程序开始自动计算摄像头的标定参数,这个过程需要等待一段时间,界面可能会变成灰色无响应状态,注意千万不要关闭。

 

参数计算完成后界面恢复,而且在终端中会有标定结果的显示

 

微信图片_20210106155842

 

点击界面中的“SAVE”按钮,标定参数将被保存到默认的文件夹下,并在终端中看到该路径,如图所示。
这时候需要等一会,电脑需要进行一会计算,不要以为是卡了。

 

微信图片_20210106155902

 

点击“COMMIT”按钮,提交数据并退出程序。然后打开/tmp文件夹,就可以看到标定结果的压缩文件calibrationdata.tar.gz;解压该文件后的内容如图所示,从中可以找到ost.yaml命名的标定结果文件,将该文件复制出来,重新命名就可以使用了。

 

微信图片_20210106155920

 

打开文件可以看到,摄像头已经标定好了,其实现在照片已经无所谓了,最重要的是那个ost.yaml文件。
把文件内容复制并替换robot_vision目录下camera_calibration.yaml中的内容。

发表评论

后才能评论