使用ROS-UsbCam节点驱动相机并进行标定(支持realsense)

  • Post author:
  • Post category:其他


大家好,我是小鱼,今天来说一首如果使用ros自带的相机驱动来进行相机标定。

还有一个小技能,当我们使用realsense相机时,不安装驱动也可以使用其相机的RGB通道,只要对应的video编号能对上即可。



1.使用ROS usb_cam驱动相机



1.1 安装usbcam

Kinetic:

sudo apt-get install ros-kinetic-usb-cam

Melodic:

sudo apt-get install ros-melodic-usb-cam

其他版本

sudo apt-get install ros-版本名称-cam



1.2 修改launch文件

进入目录:

roscd usb_cam
cd launch
sudo gedit usb_cam-test.launch 

目前主要修改device和width两个参数,可以使用

ls /dev/video*

查看系统视频设备。

<launch>
  <node name="usb_cam" pkg="usb_cam" type="usb_cam_node" output="screen" >
    <!-- modify the video device to your device -->
    <param name="video_device" value="/dev/video2" />
    <!-- modify the size of your device -->
    <param name="image_width" value="1280" />
    <param name="image_height" value="720" />
    <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" ou$
    <remap from="image" to="/usb_cam/image_raw"/>
    <param name="autosize" value="true" />
  </node>
</launch>



1.3 启动相机

roslaunch usb_cam usb_cam-test.launch



2 使用ROS进行相机标定



2.1 使用ROS自带的标定程序进行标定。

  • 小工具:

    棋盘格pdf在线生成网站:后台回复标定板即可获取

    ,生成后使用一比一打印要比手动量的要精准哦。
  • 标定完成后点击Save可以保存标定所用的图片和参数矩阵。在终端里会输出标定产生的压缩包,默认放在

    /tmp

    目录下。



2.2 运行标定程序

首先运行4.1中的相机程序

roslaunch usb_cam usb_cam-test.launch

运行前需要根据你的棋盘格修改参数

  • 一个是size参数为棋盘格角点数量比如8×9=72个格子的棋盘格,角点个数为7×8=63个,size参数就要写7×8
  • 另外一个参数为square,传入的参数为棋盘格一个小格子的宽度(注意单位为m)

  • image

    ,图像话题的原始数据默认为

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



2.3 生成标定文件

标定完成后点击Calculate会稍微有点卡顿,不要担心后台正在进行标定,完成后下面的SAVE和COMMIT按钮变为可用状态,点击SAVE即可保存标定完成后的文件。

点击commit即可把标定文件存储到系统的

~/.ros/camera_info/xxx.yaml

目录



2.4 在ROS中使用该参数

可以在usb_cam的launch文件中增加以下参数,重新启动usb_cam节点,即可使用该标定参数。

参数值小鱼这里写的是

file:///home/dev/.ros/camera_info/ost.yaml

,可打开目录

~/.ros/camera_info/

进行查看

<param name="camera_info_url" type="string" value="file:///home/dev/.ros/camera_info/ost.yaml"/>

添加完成后结果~

<launch>
  <node name="usb_cam" pkg="usb_cam" type="usb_cam_node" output="screen" >
    <!-- modify the video device to your device -->
    <param name="video_device" value="/dev/video2" />
    <param name="camera_info_url" type="string" value="file:///home/dev/.ros/camera_info/ost.yaml"/>
    <!-- modify the size of your device -->
    <param name="image_width" value="1280" />
    <param name="image_height" value="720" />
    <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" ou$
    <remap from="image" to="/usb_cam/image_raw"/>
    <param name="autosize" value="true" />
  </node>
</launch>



版权声明:本文为qq_27865227原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。