camera_calibration/Tutorials/MonocularCalibration - ROS Wiki
说明:本教程介绍使用camera_calibration的cameracalibrator.py节点在 ROS 上使用原始图像校准单目相机。
确保您具备以下条件:
具有已知尺寸的大型棋盘。本教程使用 108 毫米正方形的 8x6 棋盘。校准使用棋盘的内部顶点,因此“9x7”棋盘使用内部顶点参数“8x6”,如下例所示。
sudo apt-get install ros-noetic-usb-cam
查看接入的USB摄像头的设备号
ls /dev/video*
修改launch文件,设置USB摄像头的编号
roscd usb_cam
cd launch
sudo gedit usb_cam-test.launch
修改的参数
启动摄像头
roslaunch usb_cam usb_cam-test.launch
首先获取依赖项并编译驱动程序。
$ rosdep install camera_calibration
确保您的单目相机通过 ROS 发布图像。让我们列出主题以检查图像是否已发布:
$ rostopic list
这将显示所有已发布的主题,检查是否有image_raw主题。大多数 ROS 相机驱动程序提供的默认主题是:
/camera/camera_info
/camera/image_raw
如果您有多个摄像头或在其自己的命名空间中运行驱动程序,您的主题名称可能会有所不同。
要开始校准,您需要加载将要校准的图像主题:
$ rosrun camera_calibration cameracalibrator.py --size 8x6 --square 0.108 image:=/camera/image_raw camera:=/camera
这将打开校准窗口,该窗口将突出显示棋盘:
如果它没有打开窗口,请尝试以下参数:
--no-service-check
New in D
从 Diamondback 开始,您将能够使用多种尺寸的棋盘格来校准相机。
要使用多个棋盘格,请为其他棋盘提供多个--size和--square选项。确保电路板具有不同的尺寸,以便校准系统可以区分它们。
为了获得良好的校准,您需要在相机框架中移动棋盘格,以便:
在每一步,保持棋盘静止,直到图像在校准窗口中突出显示。
当您四处移动棋盘时,您会看到校准侧边栏上的三个条形长度增加。当CALIBRATE按钮亮起时,您有足够的数据进行校准,可以单击CALIBRATE查看结果。
校准可能需要大约一分钟。窗户可能是灰色的,但请稍等,它正在工作。
校准完成后,您将在终端中看到校准结果,在校准窗口中看到校准后的图像:
成功的校准将导致现实世界中的直边在校正后的图像中显得笔直。
校准失败通常会导致空白或无法识别的图像,或不保留直边的图像。
校准成功后,您可以使用校准窗口顶部的滑块来更改校正图像的大小。比例为 0.0 意味着图像的大小使校正后的图像中的所有像素都有效。校正后的图像没有边框,但原始图像中的一些像素被丢弃。比例为 1.0 意味着原始图像中的所有像素都是可见的,但校正后的图像具有黑色边框,原始图像中没有输入像素。
D = [-0.33758562758914146, 0.11161239414304096, -0.00021819272592442094, -3.029195446330518e-05]
K = [430.21554970319971, 0.0, 306.6913434743704, 0.0, 430.53169252696676, 227.22480030078816, 0.0, 0.0, 1.0]
R = [1.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 1.0]
P = [1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0]
# oST version 5.0 parameters
[image]
width
640
height
480
[narrow_stereo/left]
camera matrix
430.215550 0.000000 306.691343
0.000000 430.531693 227.224800
0.000000 0.000000 1.000000
distortion
-0.337586 0.111612 -0.000218 -0.000030 0.0000
rectification
1.000000 0.000000 0.000000
0.000000 1.000000 0.000000
0.000000 0.000000 1.000000
projection
1.000000 0.000000 0.000000 0.000000
0.000000 1.000000 0.000000 0.000000
0.000000 0.000000 1.000000 0.000000
如果您对校准感到满意,请单击COMMIT将校准参数发送到相机进行永久存储。GUI 退出,您应该在控制台中看到“将校准数据写入...”。
Camera Calibration Parser帮助您创建一个 yml 文件,您可以使用camera_info_url参数加载几乎所有 ros 相机驱动程序。
简单地加载校准文件并不能纠正图像。要进行整改,请使用image_proc 包。