相机标定

Wiki:http://wiki.ros.org/camera_calibration

普通相机:https://github.com/bosch-ros-pkg/usb_cam.git

单目教学:http://wiki.ros.org/camera_calibration/Tutorials/MonocularCalibration

由于摄像头内部与外部的一些原因会给图像带来极大的失真,主要是径向变形和切向变形,导致直线变的弯曲,离图像中心越远的像素,失真越严重。为了避免数据源造成的误差,需要针对摄像头的参数进行标定。标定本质上是借助一个已知确定的空间关系(标定板),通过分析拍照的图片像素,逆向推出相机固有且真实的参数(内参)。

1、标定前准备

2、开始标定

安装标定的功能包camera_calibration,docker终端输入,(出厂docker已经安装,不需要重新安装)

在标定之前启动相机,直到全部标定完毕再关闭相机,启动相机,Docker终端中输入,

使用以下命令查看话题,Docker终端中输入,

image-20240123181535694

我们标定RGB彩色图像需要用到的话题是/image_raw.

运行标定的程序,Docker终端中输入,

size:标定棋盘格的内部角点个数,例如9X6,角点一共六行九列。

square:棋盘格的边长,单位是米。

话题名字:/image_raw

1706005168211_35AB1EAE-8F46-435c-AFFE-1AC1CE945026

X:棋盘格在摄像头视野中的左右移动

Y:棋盘格在摄像头视野中的上下移动

Size :棋盘格在摄像头视野中的前后移动

Skew:棋盘格在摄像头视野中的倾斜转动

如上图所示,需要通过上下前后左右左右翻转来采集图像,使得右边的X、Y、Size、Skew变成绿色,如下图所示,然后点击CALIBRATE,开始标定。

1706005190581_CA35EDDB-6837-4171-806A-9BFFE29F9149

标定结束后,点击SAVE,如下图所示,

image-20240123182058311

标定结果保存至【/tmp/calibrationdata.tar.gz】,保存的路径为标定程序启动的终端目录下。标定结束后,可以移动出来【/tmp/calibrationdata.tar.gz】文件看看内容

docker终端输入,

会在终端目录下得到标定的png文件、ost.yaml和ost.txt文件

启动usb摄像头时是需要加载参数的,因此,标定后需要把参数替换原来的内置参数,把标定好的ost.yaml改名为camera_info.yaml,然后替换原来的camera_info.yaml,docker终端输入,