ROS进行深度相机的标定

news/2024/4/26 14:23:38/文章来源:https://blog.csdn.net/weixin_44934373/article/details/129067568

前言

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


参考: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提供了大量能使我们快速便捷地处理数据的函数和方法。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.luyixian.cn/news_show_74595.aspx

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【华为OD机试模拟题】用 C++ 实现 - 单词倒序(2023.Q1)

最近更新的博客 【华为OD机试模拟题】用 C++ 实现 - 去重求和(2023.Q1) 文章目录 最近更新的博客使用说明单词倒序 【华为OD机试模拟题】题目输入输出描述备注示例一输入输出示例二输入输出思路Code使用说明 参加华为od机试,一定要注意不要完全背诵代码,需要理解之后模仿…

SVG实例详解系列(一)(svg概述、位图和矢量图区别(图解)、SVG应用实例)

SVG实例详解系列(一) (svg概述、位图和矢量图区别(图解)、SVG应用实例) 目录 一、什么是SVG? (1)、位图和矢量图概念(图解) (2)、SVG的小例子…

为什么我会选择 AI-TestOps 让测试更智能

catalogue写在前面背景纵观AI-TestOps云平台进入平台自动化测试主流程AI视频流程图写在前面 如今在IT行业中的测试岗位尤为重要,可谓是生产环境的最后一道防线,我们的愿景都是测试点头后绝无BUG,可见测试工程师在项目中的重要程度&#xff0…

正态分布、Q函数、误差函数erf()和互补误差函数erfc()

1、正态分布(高斯分布) 若随机变量 X服从一个位置参数为 μ、尺度参数为 σ 的概率分布,且其概率密度函数为 则这个随机变量就称为正态随机变量,正态随机变量服从的分布就称为正态分布,记作 X∼N(μ,σ2) 。 当μ0,σ…

QML Item

在QML中所有的可视项目都继承自Item,虽然Item本身没有可视化的外观,但它定义了可视化项目的所有属性。 Item可以作为容器使用: Item{Rectangle{id:retc}Rectangle{id:retc1}Rectangle{id:retc2}Rectangle{id:retc3}} item拥有children属性…

【C语言每日一题】杨氏矩阵(源码以及改进源码)

【C语言每日一题】—— 杨氏矩阵😎😎😎 目录 💡前言🌞: 💛杨氏矩阵题目💛 💪 解题思路的分享💪 😊题目源码的分享😊 &#x1f4…

SSM知识快速复习

SSM知识快速复习SpringIOCDIIOC容器在Spring中的实现常用注解Autowired注解的原理AOP相关术语作用动态代理实现原理事务Transactional事务属性:只读事务属性:超时事务属性:回滚策略事务属性:事务隔离级别事务属性:事务…

Windows下载安装Prometheus

目录 资料 下载 解压 点击prometheus.exe运行 资料 Prometheus是一个开源的系统监控和报警系统,同时也支持多种exporter采集数据,还支持pushgateway进行数据上报,Prometheus性能足够支撑上万台规模的集群。 官网:https://pr…

阿里大数据之路总结

一、数据采集 二、数据同步 2.1、数据同步方式: 数据同步的三种方式:直连方式、数据文件同步、数据库日志解析方式 关系型数据库的结构化数据:MYSQL、Oracle、DB2、SQL Server非关系型数据库的非结构化数据(数据库表形式存储&am…

【ESP 保姆级教程】疯狂毕设篇 —— 案例:基于ESP8266和EMQX的教室灯光控制系统

忘记过去,超越自己 ❤️ 博客主页 单片机菜鸟哥,一个野生非专业硬件IOT爱好者 ❤️❤️ 本篇创建记录 2023-02-26 ❤️❤️ 本篇更新记录 2022-02-26 ❤️🎉 欢迎关注 🔎点赞 👍收藏 ⭐️留言📝🙏 此博客均由博主单独编写,不存在任何商业团队运营,如发现错误,请…

智慧物联网源码带手机端源码 物联网系统源码

在智慧工厂领域,智慧城市领域,都需要对设备进行监控。比如工厂需要对周围环境温度、湿度、气压、电压,灯的开关进行监控。这时候就需要物联网平台来进行管理。 推荐一个基于java开发的物联网平台,前端HTML带云组态、可接入视频监…

酷炫的数据可视化,背后的制作工具究竟是什么?

数据可视化已经成为当代互联网的热词,不论是哪个行业都在使用。那么背后制作出数据可视化的可视化工具是什么呢?它又有哪些呢? 一、可视化工具是什么 可视化工具其实是 Visual Studio 调试器用户界面的组件,听起来很复杂对吧。但…

图节点嵌入相关算法学习笔记

引言 本篇笔记为coggle 2月打卡任务,正好也在学习cs224w,干脆就一起做了,以下是任务列表: 任务名称难度任务1:图属性与图构造低、1任务2:图查询与遍历低、2任务3:节点中心性与应用中、2任务4&…

redis(10)事务和锁机制

Redis事务定义 Redis 事务是一个单独的隔离操作:事务中的所有命令都会序列化、按顺序地执行。事务在执行的过程中,不会被其他客户端发送来的命令请求所打断。 Redis 事务的主要作用就是串联多个命令防止别的命令插队。 Multi、Exec、discard Redis 事务中…

15 Nacos客户端实例注册源码分析

Nacos客户端实例注册源码分析 实例客户端注册入口 流程图&#xff1a; 实际上我们在真实的生产环境中&#xff0c;我们要让某一个服务注册到Nacos中&#xff0c;我们首先要引入一个依赖&#xff1a; <dependency><groupId>com.alibaba.cloud</groupId>&l…

idea debug elasticsearch8.6.2 源码

前置依赖&#xff1a; gradle 7.5.1&#xff1a;Gradle | Releases openJDK 17&#xff1a;https://download.oracle.com/java/17/latest/jdk-17_windows-x64_bin.exe idea&#xff1a;IntelliJ IDEA 2022.1 (Ultimate Edition) 1、下载源码 8.6.2 zip包 并解压 地址&…

在 Flutter 中使用 webview_flutter 4.0 | 基础用法与事件处理

大家好&#xff0c;我是 17。 Flutter WebView 一共写了四篇文章 在 Flutter 中使用 webview_flutter 4.0 | 基础用法与事件处理在 Flutter 中使用 webview_flutter 4.0 | js 交互Flutter WebView 性能优化&#xff0c;让 h5 像原生页面一样优秀&#xff0c;已入选 掘金一周 …

「回顾RKDC2023」飞凌嵌入式受邀亮相第七届瑞芯微开发者大会

2023年2月23-24日&#xff0c;第七届瑞芯微开发者大会&#xff08;RKDC2023&#xff09;在福州隆重举行&#xff0c;飞凌嵌入式作为瑞芯微生态合作伙伴受邀参会&#xff0c;并与数千名开发者科技公司代表及行业领袖共同聚焦行业新兴产品需求&#xff0c;探讨新硬件发展趋势&…

STC32单片机 普通 I/O 口中断功能介绍和使用

STC32单片机 普通 I/O 口中断功能和使用✨STC32单片机普通 I/O 口中断&#xff0c;不是传统外部中断. &#x1f516;手册上描述&#xff1a;STC32G 系列支持所有的 I/O 中断&#xff0c;且支持 4 种中断模式&#xff1a;下降沿中断、上升沿中断、低电平中断、高电平中断。每组 …

网络方面的复习

这个博客参考了许多up主的视频和网上其他的博主的文章&#xff0c;还有我老师的ppt 这里是目录一、osi七层模型&#xff08;参考模型&#xff09;1.物理层2.数据链路层&#xff08;数据一跳一跳进行传递&#xff09;3.网络层&#xff08;端到端传输&#xff09;4.传输层&#x…