1、相机标定

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.1、标定前准备

棋盘格(标定板)

image-20210907171706358

1.2、标定

启动相机

输入rostopic list可以查看图像话题

启动标定节点

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

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

image和camera:设置摄像头发布的图像话题。

image-20210907180204879

标定界面

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

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

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

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

启动成功后,将棋盘格放入画面中心,变换不同位姿。系统会自主识别,最好的情况是【X】、【Y】、【Size】、【Skew】下面的线条随着数据的收集先由红色变黄再变绿,尽可能填充满。

image-20210907183329713

点击【CALIBRATE】计算相机内参,图片越多,时间越久,等待就好。(六七十张就差不多了,太多容易卡死)

image-20210907184245152

点击【SAVE】保存不标定结果,出现最下面一行,点击【COMMIT】,退出。

image-20210907184525814

标定结束后,标定结果存在【/tmp/calibrationdata.tar.gz】,可以移动出来看看内容

解压后,里面有刚刚标定的图片,一个ost.txt文件和一个ost.yaml文件。yaml文件是我们需要的,不过还需要修改才可以使用。