ROS中的OpenCV摄像头标定(二)

ROS中的OpenCV摄像头标定(二)

上一篇博客介绍了ROS中利用OpenCV例程进行摄像头标定的方法:ROS中的OpenCV摄像头标定(一), 这篇博客将介绍如何使用 Camera Calibration 功能包进行摄像头标定

ros wiki上的参考教程:

单目摄像机标定例程

双目摄像机标定例程

(一)图像读取

使用usb_cam读取图像,launch文件如下:

<launch>
    <arg name="device" default="/dev/video0" />
    <node name="usb_cam_node" pkg="usb_cam" type="usb_cam_node" output="screen">
        <param name="video_device" value="$(arg device)" />
        <param name="image_width" value="640" />
        <param name="image_height" value="480" />
        <param name="framerate" value="30" />
        <param name="brightness" value="128" />
        <param name="contrast" value="128" />
        <param name="saturation " value="70" />
    </node>
</launch>

usb_cam pkg安装方法如下:

  1. 直接用apt-get install命令

    sudo apt-get install ros-melodic-usb-cam
  2. 下载github源码后编译

    git clone https://github.com/ros-drivers/usb_cam.git

安装后通过ls /dev/video*查看一下是否有驱动

(二)检查usb_cam package发布的消息

rostopic list

查看是否有如下消息,并记住他们的名称:

/usb_cam_node/camera_info
/usb_cam_node/image_raw

(三)运行标定程序

rosrun camera_calibration cameracalibrator.py --size 11x8 --square 0.03 image:=/usb_cam_node/image_raw camera:=/usb_cam_node

其中参数size 11x8 注意是棋盘内部角点个数,如下图所示。square为棋盘正方形边长,注意刚刚开始标定的时候,CALIBRATE按钮是灰色的。

image-20210427190108017

(四)标定程序使用方法

为了得到一个好的标定结果,应该使得标定板尽量出现在摄像头视野的各个位置里:如标定板出现在视野中的左边,右边,上边和下边,标定板既有倾斜的,也有水平的

  • x:表示标定板在视野中的左右位置
  • y:表示标定板在视野中的上下位置
  • size:标定板在占视野的尺寸大小,也可以理解为标定板离摄像头的远近
  • skew:标定板在视野中的倾斜位置

image-20210427190324982

还要有棋盘占住大部分视野的图片,如下图所示:

image-20210427190350831

按着上述方式不断移动标定板,直到CALIBRATE按钮变亮,点击该按钮就会进行标定。标定过程将持续一两分钟,并且标定界面会变成灰色,无法进行操作,耐心等待即可。

标定完成以后,你将看到如下图所示的窗口,窗口中的图像为标定后的结果,纠正了畸变

image-20210427190421560

并且,摄像机的各个参数会出现在标定程序的终端窗口中,如下:

image-20210427190448127

如果对标定结果满意,点击COMMIT按钮将结果保存到默认文件夹,在usb_cam窗口中可以看到如下信息,说明标定结果已经保存在相应文件夹下下次启动usb_cam节点时,会自动调用。

image-20210427190508838


ROS中的OpenCV摄像头标定(二)
http://example.com/2021/04/27/ROS中的OpenCV摄像头标定(二)/
Author
Zachary Deng
Posted on
April 27, 2021
Licensed under