前言

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


参考: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

即可进入标定界面:

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

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
640height
480[narrow_stereo]camera matrix
1135.135073 0.000000 41.113237
0.000000 1067.941517 509.184576
0.000000 0.000000 1.000000distortion
0.232448 -0.085733 0.050082 -0.080673 0.000000rectification
1.000000 0.000000 0.000000
0.000000 1.000000 0.000000
0.000000 0.000000 1.000000projection
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,终端会出现:
在此路径下会出现保存的文件:

里面存放的是标定的图片和求得参数的txt文件和yaml文件:

7. 创建yaml文件

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

8. 校正图像

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


总结

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

ROS进行深度相机的标定相关推荐

  1. RGBD深度相机如何标定?

    文章:Robust Intrinsic and Extrinsic Calibration of RGB-D Cameras 作者:Filippo Basso, Emanuele Menegatti, ...

  2. ROS与深度相机入门教程:(1)Ubuntu16.04 在ROS中驱动Intel D435i深度相机

    Intel在Github上开源了支持所有RealSense系列相机的SDK,包括了D400.SR300系列深度相机和T265双目跟踪相机,支持Linux.Windows.Mac OS以及Android ...

  3. ROS与深度相机入门教程:(2) 在ROS中驱动Intel D435i深度相机采集数据(遇到的问题)

    在ROS环境下完成数据的安装,需要安装基于ROS使用RealSense的包(包含安装RealSense SDK和ROS Kinetic) 接上篇:https://blog.csdn.net/m0_37 ...

  4. 小觅深度相机kalibr标定

    双目相机标定 0.介绍几个实用的ROS小技巧 这几个命令在标定遇到问题的时候可以分析错误 rostopic list /topic 查看topic rostopic hz /topic 查看topic ...

  5. 奥比中光深度摄像头_ros与深度相机入门教程-在ROS使用奥比中光Orbbec Astra Pro

    ros与深度相机入门教程-在ROS使用奥比中光Orbbec Astra Pro 说明: 介绍如何在ros安装和使用奥比中光Orbbec Astra Pro OrbbecAstra介绍 astra_ca ...

  6. 图漾深度相机开发-PCL点云实时显示

    目录 1. 从示例程序 SimpleView_FetchFrame 开始 程序功能 程序解读 2. 创建自己的点云处理程序 文件结构 创建点云 点云图实时显示完整代码 3. 新建工程 相机型号:图漾科 ...

  7. Ubuntu16.04 在ROS中配置RealSence D435 并标定深度相机与rplidar外参

    Ubuntu16.04系统,在ROS中配置RealSence D435 ,并标定其与rplidar的外参 主要目的是为rplidar标定深度相机外参,为机器人导航的过程提供障碍物识别的功能,因此需要知 ...

  8. 使用Ubuntu20.04+ROS标定Azure Kinect DK深度相机

    目录 一.软件准备 1.创建一个 ros 工作空间并初始化 2. 下载 kinect 的 ros 驱动 Azure_Kinect_ROS_Driver 3. 下载深度相机标定的 ros 包 image ...

  9. 使用camera_calibration对xtion pro live深度相机进行参数标定,rosdep install camera_calibration报错Rosdep cannot find

    在图像处理中,一般都涉及相机参数标定,但网上看了好多博客中相机标定步骤挺复杂的,所以特来记录.本文使用的ubuntu系统.ROS Kinetic, xtion深度相机, 使用camera_calibr ...

最新文章

  1. 如何用Pandas处理文本数据?
  2. re模块与正则表达式
  3. haproxy配置参数详解
  4. Multi-Range Read (MRR)原理
  5. WPF实现用户头像裁剪
  6. php正则获取标签,PHP通过正则匹配中文字符 过滤html标签 获取文本内容
  7. 剑指offer-面试题6.重建二叉树
  8. 二位数组按某一个或多个字段值(升序/降序)排序
  9. Linux虚拟化KVM-Qemu分析(二)之ARMv8虚拟化
  10. make clean、make mrproper、make distclean的区别【转】
  11. Java并发面试,幸亏有点道行,不然又被忽悠了 1
  12. Tomcat----windows系统通过命令符“强制关闭Tomcat”
  13. python基础——使用list和tuple
  14. 五笔打字简明教程(86版)
  15. 用几行代码写的bat小病毒
  16. 懵逼树上懵逼果:探索二分法搜索
  17. MySql(三)——事务和锁
  18. 3d Max 2014设置背景没有锁定选项的解决方法
  19. 数字孪生的思考 05 - VAM/XR
  20. 论文结尾参考文献形式

热门文章

  1. java中BitSet详解
  2. 实现xxxxxxx系统六大质量属性战术
  3. java毕业设计鸿鹄教育培训(附源码、数据库)
  4. 递归查找树形状结(利用steam流的方式)leval值标明
  5. SIMXXX 在高德地图定位到我的位置
  6. 手机APP(功能)测试重点
  7. git fork 远端仓库协作开发
  8. 找不到com.sun.beans.introspect.PropertyInfo的类文件问题
  9. 递归函数——上台阶问题
  10. HTML和CSS隐藏元素的四种方法