ROS进行深度相机的标定

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


前言

自己使用标定板对深度相机进行标定。


参考:http://wiki.ros.org/camera_calibration/Tutorials/MonocularCalibration

一、准备标定板

在下面的网站中可下载棋盘格标定板,可用A4纸打印下来。
http://wiki.ros.org/camera_calibration/Tutorials/MonocularCalibration?action=AttachFile&do=view&target=check-108.pdf

二、使用ROS工具包进行标定

1. 打开相机

1.1 进入ROS内核

roscore

1.2 打开相机

roslaunch realsense2_camera demo_pointcloud.launch

2. 安装标定工具包

$ rosdep install camera_calibration

3. 查看话题

rostopic list

RGB图像的话题:
/camera/color/camera_info
/camera/color/image_raw
Depth图像的话题:
/camera/depth/camera_info
/camera/depth/image_rect_raw
注意:我的depth的为_rect_raw,在修改标定代码中的路径时要注意。

4. 运行标定代码

4.1 标定RGB相机
rosrun camera_calibration cameracalibrator.py --size 8x6 --square 0.243 image:=/camera/color/image_raw camera:=/camera/color 

说明:

  • size:棋盘内部角点个数
  • square:棋盘格的单元格的边长,单位为m
  • image:图像的话题路径
  • camera:相机的信息路径

若是上面的代码报错:
“ Waiting for service /camera/color/set_camera_info …
Service not found “
则在上述代码后面加上”–no-service-check“:

rosrun camera_calibration cameracalibrator.py --size 8x6 --square 0.0243 image:=/camera/color/image_raw camera:=/camera/color --no-service-check

即可进入标定界面:
ROS进行深度相机的标定
上下左右移动标定板,当“CALIBRATE”变为绿色的时候,就可以了。
ROS进行深度相机的标定点击“CALIBRATE”后,稍作等待,即可在终端看到标定的参数:
ROS进行深度相机的标定

4.2 标定depth

注意此处的图像路径为“/camera/depth/image_rect_raw”。

rosrun camera_calibration cameracalibrator.py --size 8x6 --square 0.0243 image:=/camera/depth/image_rect_raw camera:=/camera/depth --no-service-check

目前还没有解决的问题:
深度相机标定depth要将红外发射器用不透光的材质的东西遮住,并且在黑暗环境下,用红外光照射
这里有两个红外摄像头,是否是要进行双目相机的标定?
双目相机标定官方文档:http://wiki.ros.org/camera_calibration/Tutorials/StereoCalibration
我的标定界面一片漆黑
我在网上见到的对深度图进行标定的相机都是kinect相机,而kinect有些型号的相机是基于TOF的,realsense d435是基于结构光的,有可能这是我进行深度图标定失败的原因。
改天试一试kinect。

5.标定参数的意义

ROS中的camera_calibration包,其代码实现主要使用了OpenCV中的calibration模块 。
得到的标定结果如下:

 = [0.23244826907781227, -0.08573299096457011, 0.05008213017343726, -0.08067275070179597, 0.0]
K = [1135.1350732747046, 0.0, 41.11323684505894, 0.0, 1067.9415171380786, 509.1845758553174, 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 = [1086.77734375, 0.0, 18.500314902303217, 0.0, 0.0, 1084.970458984375, 527.9177954151601, 0.0, 0.0, 0.0, 1.0, 0.0]
None
# oST version 5.0 parameters


[image]

width
640

height
480

[narrow_stereo]

camera matrix
1135.135073 0.000000 41.113237
0.000000 1067.941517 509.184576
0.000000 0.000000 1.000000

distortion
0.232448 -0.085733 0.050082 -0.080673 0.000000

rectification
1.000000 0.000000 0.000000
0.000000 1.000000 0.000000
0.000000 0.000000 1.000000

projection
1086.777344 0.000000 18.500315 0.000000
0.000000 1084.970459 527.917795 0.000000
0.000000 0.000000 1.000000 0.000000

各标定参数的意义:
image_width、image_height代表图片的长宽
camera_name为摄像头名
camera_matrix规定了摄像头的内部参数矩阵
distortion_model指定了畸变模型
distortion_coefficients指定畸变模型的系数
rectification_matrix为矫正矩阵,一般为单位阵
projection_matrix为外部世界坐标到像平面的投影矩阵

6. 保存参数

点击SAVE,保存校准参数和校准中使用的图像。一切都将在压缩文件夹/tmp/calibrationdata.tar.gz中提供。

点击save,终端会出现:
ROS进行深度相机的标定在此路径下会出现保存的文件:
ROS进行深度相机的标定
里面存放的是标定的图片和求得参数的txt文件和yaml文件:
ROS进行深度相机的标定

7. 创建yaml文件

Camera Calibration Parser帮助您创建一个 yml 文件,您可以使用camera_info_url参数加载几乎所有 ros 相机驱动程序。

8. 校正图像

简单地加载校准文件并不能纠正图像。要进行整改,请使用image_proc 包。


总结

提示:这里对文章进行总结:
例如:以上就是今天要讲的内容,本文仅仅简单介绍了pandas的使用,而pandas提供了大量能使我们快速便捷地处理数据的函数和方法。文章来源地址https://www.toymoban.com/news/detail-484099.html

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

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

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

相关文章

  • 【机器视觉】线阵相机模型说明以及使用HALCON标定助手对线阵相机进行标定

    线阵相机矫正所需参数共17个,其中11个参数为内参,6个参数为外参。 线阵相机内参 CamParam 数量共11个,模型如下: CamParam:= [Focus, Kappa, Sx, Sy, Cx, Cy, ImageWidth, ImageHeight, Vx, Vy, Vz]  Focus : 镜头焦距;  Kappa : 镜头畸变系数;正:枕形畸变 负:桶状畸变  Sx : 传感器像元宽度

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

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

    2024年02月10日
    浏览(45)
  • 使用opencv-python(cv2)库进行相机标定

    2023年09月11日
    浏览(53)
  • 【ROS】usb_cam相机标定

    1. 唠叨两句 当我们要用相机做测量用途时,就需要做相机标定了,不然得到的计算结果会有很大误差,标定的内容包括三部分:内参,外参还有畸变参数。所以标定的过程就是要求得上面这些参数。 以前弄这个事估计挺麻烦,需要做实验和计算才能得到,现在通过ros的开源

    2024年02月08日
    浏览(48)
  • 使用kaliber与imu_utils进行IMU、相机+IMU联合标定

    目录 1 标定工具编译 1.1 IMU标定工具 imu_utils 1.2 相机标定工具 kaliber 2 标定数据录制 3 开始标定 3.1 IMU标定 3.2 相机标定 3.3 相机+IMU联合标定 4 将参数填入ORBSLAM的文件中         标定IMU我们使用imu_utils软件进行标定:         首先我们安装标定软件的依赖项:Eigen、Ceres

    2024年02月07日
    浏览(40)
  • 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)
  • ORBBEC(奥比中光)AstraPro相机在ROS2下的标定与D2C(标定与配准)

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

    2024年02月06日
    浏览(45)
  • 在ROS中使用奥比中光Orbbec Astra Pro深度相机(二)

    在之前外面已经介绍过Orbbec Astra Pro深度相机,同学们可以点击☞☞☞了解详情,接着再来介绍介绍。 有兴趣的可以看一下ROS Wiki上的介绍: Orbbec Astra Pro介绍 astra_camera包介绍 astra_launch包介绍 功能包下载地址,可以直接用步骤里的git clone 发现一篇好文:https://www.ncnynl.com/arc

    2024年02月05日
    浏览(46)
  • 用HALCON标定助手对相机进行标定

    任务要求: 已知相机镜头焦距 f 为 8mm ,相机单个 CCD 像素在水平和竖直两个方向上的尺寸均为 3.75 微米,相机为普通透光镜头和面阵相机,对相机进行标定,测量相机的内外参数。 操作步骤: 1. 在 HALCON 中运行 gen_caltab 算子,生成标定板和标定描述文件。 gen_caltab ( : : XNu

    2024年02月04日
    浏览(41)
  • 基于ros和openpcdet使用自己的雷达进行实时三维目标检测

    参考博主hello689的教程,文中主要介绍了对于kitti的三维目标检测,本文对代码进行修改,添加旋转坐标轴的代码,以适配自己的雷达,可以参考这个博主的流程,再看本文对旋转参数的修改。 3.1 ros.py代码修改 3.2 pointpillar.launch代码修改 3.3 pointpillar.rviz代码修改 3.4 ros.py订阅话

    2024年01月23日
    浏览(40)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包