【ROS】usb_cam相机标定

这篇具有很好参考价值的文章主要介绍了【ROS】usb_cam相机标定。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

1. 唠叨两句

当我们要用相机做测量用途时,就需要做相机标定了,不然得到的计算结果会有很大误差,标定的内容包括三部分:内参,外参还有畸变参数。所以标定的过程就是要求得上面这些参数。
以前弄这个事估计挺麻烦,需要做实验和计算才能得到,现在通过ros的开源包几分钟就能完成相机标定,感激!
具体的内外参和畸变系数的说明,可以看看Reference里面的第一个链接,写得很详细。

2. 准备工作

要准备三样东西:

  • usb_cam的ROS启动包
  • 相机标定的ROS包
  • 还有一个用于标定的棋盘格

1)usb_cam启动包
使用我上传的usb_cam版本,不知道为什么用GitHub下载的版本不行,这个usb_cam版本也是别人发的,很奇怪,之后有时间可以研究一下,看看有什么不同,它们两个包都可以打开摄像头,就是用GitHub的版本打开后,apriltag_ros不输出正确的数值。下载点这里

下载解压后,放到对应的work space中src文件里面,例如catkin_ws
然后用catkin_make编译
然后用ls /dev/video*看看usb摄像头的编号,如果

will@will-Dell-G15-5511:~/omni_ws$ ls /dev/video*
/dev/video0  /dev/video1  /dev/video2  /dev/video3

我的笔记本上有webcam又连了一个外接的摄像头,实际是两个摄像头有四个编号,其实只用0和2就行,分别对应webcam和usb cam,其他两个用不了,然后修改 usb_cam/launch/usb_cam-test.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>

主要就是修改里面的 <param name="video_device" value="/dev/video0" />这一项就行,默认是0,改成/dev/video2就行

然后启动roslaunch usb_cam usb_cam-test.launch

有图像出来就成功了。
【ROS】usb_cam相机标定

2)ROS的相机标定包
很方便,直接apt-get就能下载使用:
sudo apt-get install ros-melodic-camera-calibration

3)打印棋盘格
可以到Google或Baidu上搜一个,像下面这样的
【ROS】usb_cam相机标定
然后弄清楚两个事情就行:
第一个,就是这个棋盘格的size,比如上图这个是一个4x6的,就数四个格子的交点一行有几个,和一列有几个就行
第二个,确定格子的大小,要根据打印出来的结果进行测量,上面这张图,我用A4纸打印,打印出来的格子边长是0.026m,也就是2.6cm,还要量一下格子的长宽,看看是不是真的是正方形。
确定上面这两点很重要,后面的输入会用到

3. 开始标定

先启动相机,再启动标定程序
roslaunch usb_cam usb_cam-test.launch
rosrun camera_calibration cameracalibrator.py --size 4x6 --square 0.026 image:=/usb_cam/image_raw camera:=/usb_cam
上面第二条指令就是启动标定程序的,里面需要输入棋盘的size和square对应的就是上面提到的两个数值

然后就会看到如下的界面:
【ROS】usb_cam相机标定在标定程序的界面能看到右侧有X Y Size Skew 还有CALIBRATE, SAVE 和COMMIT的标识
X:表示标定板在视野中的左右位置
Y:表示标定板在视野中的上下位置
Size:表示标定板在视野中的尺寸大小,其实就是离相机的远近
Skew:表示标定板在视野中的倾斜角度

打开程序后,就可以开始调整标定板的位置,让它在相机视野中各个位置移动和转动,让X Y Size和Skew这四个值下面的长条变成绿色,然后就可以看到CALIBRATE这个按钮变成青色,点击就会开始计算相机的参数,这个过程需要等一会,耐心等待
【ROS】usb_cam相机标定
当计算完毕,就可以在terminal中看到如下数据
【ROS】usb_cam相机标定
然后SAVE按钮也会变成青色,点击SAVE按钮就会把数据保存到默认的目录下.
【ROS】usb_cam相机标定
这个目录在/tmp/calibrationdata.tar.gz

【ROS】usb_cam相机标定
打开这个压缩包,里面有刚刚采集的图片,还有保存相机的参数,如下:
【ROS】usb_cam相机标定
把里面的这个ost.yaml解压放到usb_cam的src目录下,然后改下名字,比如camera_calibration20220531.yaml,我喜欢把这些配置文件放到一个文件夹里,然后记下路径

然后就是最后一步了,打开launch文件,加多一行导入相机参数:

<launch>
  <node name="usb_cam" pkg="usb_cam" type="usb_cam_node" output="screen" >
    <param name="video_device" value="/dev/video2" />
    <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/camera_calibration20220531.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>

之后照常用roslaunch启动usb cam就可以了,然后可以对比一下标定前后的测量结果,会发现精度有了很大提升。文章来源地址https://www.toymoban.com/news/detail-478886.html

Reference

  1. Step1:模型 16个相机参数(内参、外参、畸变参数):
    https://blog.csdn.net/weixin_43206570/article/details/84797361

到了这里,关于【ROS】usb_cam相机标定的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • ROS进行深度相机的标定

    自己使用标定板对深度相机进行标定。 参考:http://wiki.ros.org/camera_calibration/Tutorials/MonocularCalibration 在下面的网站中可下载棋盘格标定板,可用A4纸打印下来。 http://wiki.ros.org/camera_calibration/Tutorials/MonocularCalibration?action=AttachFiledo=viewtarget=check-108.pdf 1.1 进入ROS内核 1.2 打开相机

    2024年02月09日
    浏览(57)
  • ROS学习——利用电脑相机标定

    一、 安装usb-cam包和标定数据包 要把kinetic改成你自己的ros版本 。 二、启动相机 就会出现一个界面  可以通过下面命令查看相机发布了哪些参数:  可以通过下面命令查看发布消息的具体类型: 我们可以看到发布者和接收者: 三、启动相机标定包 出现黑白相机  四、进行相

    2024年02月10日
    浏览(43)
  • ros2 基础教程-使用ROS 2进行相机标定

    相机(摄像头)是一种非常精密的光学仪器,对外界环境的感知非常敏感。由于摄像头内部和外部的一些原因,摄像头采集的图像常常会发生一定的畸变。如果直接将采集到的图像拿来进行图像处理,会产生很大的问题。为了避免图像数据源造成的误差,需要对摄像头的相关

    2024年01月21日
    浏览(50)
  • ROS功能包camera_calibration标定相机内参

    目录 1 安装 2启动相机程序 3启动功能包 4 采集图像进行标定 Ubuntu 20.04 + ROS Noetic 单目相机:basler Ubuntu20.04对应的ROS版本号为 noetic basler相机外部硬触发,转换图像格式并发送到ROS下的topic_basler软件手动硬触发信号 Ubuntu20.04 ROS读取basler相机图像步骤 根据自己标定板尺寸,输入

    2024年02月04日
    浏览(39)
  • 使用Matlab、Opencv、Ros三种方法完成相机标定

    1、相机标定的意义         在机器视觉领域,相机的标定是一个关键的环节,它决定了机器视觉系统能否有效的定位,能否有效的计算目标物。相机标定意义在于将现实世界中的三维物体与相机图像对应的二维物体映射起来,实际上就是透视投影。 2、相机标定原理   

    2024年04月13日
    浏览(61)
  • ROS系统读取USB相机图像数据

    usb_cam功能包简介 为了丰富机器人与外界的交互方式,已经增加了与机器人的语音交互方式,不仅使机器人能够说话发声,还能听懂我们说的话,但是如果只有语音交互的话机器人就是一个盲人,无法看到这个色彩斑斓的大千世界,因此我们就需要为机器人增加视觉识别功能

    2024年04月08日
    浏览(47)
  • ubuntu20.04下的USB摄像头使用与标定(单目相机)一.使用

    A.查找摄像头接口 B.在该路径下修改launch文件,换成你自己的摄像头接口 C.运行摄像头节点(此时就能看到画面了) ⭐可能会出现的错误 1.终端会warning是因为还没有进行摄像头标定,后续会进行讲解 2.若用的是虚拟机但发出了error,看看你的usb是接入3.0还是2.0处,然后在如下

    2024年02月04日
    浏览(156)
  • ORBBEC(奥比中光)AstraPro相机在ROS2下的标定与D2C(标定与配准)

    相机自带的D2C效果不好,颜色和点云没有很好地匹配上,自己按照下面的介绍手动匹配一下。 在下载来的sdk,里面没有标定的文件:ost.yaml. 需要自己进行标定、生成。 我所使用的相机型号是Astra_pro,它是一个单目结构光相机,有一个RGB摄像头+一个IR摄像头。从数量上算是一个

    2024年02月06日
    浏览(43)
  • 使用ROS功能包camera_calibration进行单目相机和双目相机的内参和外参标定

    本文总结使用ROS标定单目和双目相机的过程,同时提供生成棋盘格文件的方法。 参考链接: [1]使用ros标定相机的内参和外参 [2]ROS下采用camera_calibration进行双目相机标定 棋盘格可以自己买一个,或者打印一个粘在板子上,棋盘格电子版生成可以参考博客《使用kalibr标定工具进

    2024年02月11日
    浏览(45)
  • 基于虚拟机安装Ubuntu18.04+ROS的2D相机或电脑自带摄像头的在线标定方法

    硬件 :笔记本电脑自带摄像头或者通过usb接口连接的相机 软件 :虚拟机+ubuntu18.04+ROS1 melodic(针对ubuntu18.04对应的ROS版本) 首先确保在主目录下,创建ROS工程 克隆代码 编译代码 这个地方我报错了 – No package ‘libv4l2’ found CMake Error at /usr/share/cmake-3.10/Modules/FindPkgConfig.cmake:419

    2024年02月02日
    浏览(56)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包