【ROS】单目摄像机的标定

在上节: ROS 教程之 vision : 用笔记本摄像头获取图像
能够使用相机后,就需要对相机进行标定,在ROS上使用原始图像校准单目相机。

操作步骤

1、首先将catkin_ws/src/usb_cam/launch/usb_cam-test.launch的文件内容修改掉。

【ROS】单目摄像机的标定_第1张图片
原有内容:

<launch>
  <arg name="image_view" default="false" />
  <node name="usb_cam" pkg="usb_cam" type="usb_cam_node" output="screen" >
      <rosparam command="load" file="$(find usb_cam)/config/usb_cam.yml"/>
  node>
  <node if="$(arg image_view)" name="image_view" pkg="image_view" type="image_view"
        respawn="false" output="screen">
    <remap from="image" to="/usb_cam/image_raw"/>
    <param name="autosize" value="true" />
  node>
launch>

修改后内容:

<launch>
  <node name="usb_cam" pkg="usb_cam" type="usb_cam_node" output="screen" >
    <param name="video_device" value="/dev/video0" />
    <param name="image_width" value="640" />
    <param name="image_height" value="480" />
    <param name="pixel_format" value="yuyv" />
    <param name="camera_frame_id" value="usb_cam" />
    <param name="io_method" value="mmap"/>
  node>
  <node name="image_view" pkg="image_view" type="image_view" respawn="false" output="screen">
    <remap from="image" to="/usb_cam/image_raw"/>
    <param name="autosize" value="true" />
  node>
launch>

启动roslaunch usb_cam usb_cam-test.launch,发现摄像头可正常使用。

2、下载ROS的相机标定包

在终端下载:

sudo apt-get install ros-melodic-camera-calibration

3、打印标定板

可以自己随便搜一个,我参考了Will_Ye博主的。如下:
【ROS】单目摄像机的标定_第2张图片
标定板最重要的属性:
(1)、size用于指明标定板的内角点数量,比如上图是4x6。否则相机识别不出来标定板,就不显示x,y,size和skew。
(2)、格子的大小,打印后量一下,上图在A4纸打印出来后。每个正方形边长为4cm=0.04m。

4、 开始标定

开启两个终端,第一个终端在~/catkin_ws/src/usb_cam/launch文件夹下开启,输入

roslaunch usb_cam usb_cam-test.launch

启动相机后,再开启第二个终端,启动标定程序

rosrun camera_calibration cameracalibrator.py --size 4x7 --square 0.04 image:=/usb_cam/image_raw camera:=/usb_cam

如图:
【ROS】单目摄像机的标定_第3张图片

之后移动标定板到界面中,:

当识别出标定板,标定程序的界面右侧才能看到一些标识:
X:表示标定板在视野中的左右位置
Y:表示标定板在视野中的上下位置
Size:表示标定板在视野中的尺寸大小,离相机的远近
Skew:表示标定板在视野中的倾斜角度。

不断上下左右,来回靠近,转动标定板位置,直至X Y Size和Skew四个值下面长条全变绿,点击CALIBRATE按钮,开始计算相机的参数,稍等一会,出现如下画面,表示计算完毕。
【ROS】单目摄像机的标定_第4张图片
点击变青的SAVE按钮,就会把数据保存到默认的目录/tmp/calibrationdata.tar.gz

【ROS】单目摄像机的标定_第5张图片

【ROS】单目摄像机的标定_第6张图片

打开这个压缩包,里面大概是这些内容,有一些图片,ost.yaml文件是我们需要的标定结果。

【ROS】单目摄像机的标定_第7张图片
由于/tmp目录中的文件随时可能会被系统删除,于是将标定的文件ost.yaml拷贝到/catkin_ws/src/usb_cam/camera_info下。
【ROS】单目摄像机的标定_第8张图片
【ROS】单目摄像机的标定_第9张图片

在功能包的launch目录中创建launch文件,例如命名为camera.launch
内容:

<launch>
  <node name="usb_cam" pkg="usb_cam" type="usb_cam_node" output="screen" >
    <param name="video_device" value="/dev/video0" />
    <param name="image_width" value="640" />
    <param name="image_height" value="480" />
    <param name="pixel_format" value="yuyv" />
    <param name="camera_info_url" value="package://usb_cam/camera_info/ost.yaml"/>
    <param name="camera_frame_id" value="usb_cam" />
    <param name="io_method" value="mmap"/>
  node>
  <node name="image_view" pkg="image_view" type="image_view" respawn="false" output="screen">
    <remap from="image" to="/usb_cam/image_raw"/>
    <param name="autosize" value="true" />
  node>
launch>

在~/catkin_ws/src/usb_cam/launch文件夹下开启终端,输入

roslaunch usb_cam camera.launch

效果好很多。
【ROS】单目摄像机的标定_第10张图片

参考链接: 1、【ROS】usb_cam相机标定
2、官方单目的标定教程
3、ROS 教程之 vision: 摄像头标定camera calibration
4、摄像头标定–camera_calibration

你可能感兴趣的:(数码相机,计算机视觉,人工智能)