ROS系统上的单目相机标定步骤

2023-10-29

单目相机标定步骤

前置条件

  1. 已经安装完usb_cam包,Git链接
  2. 已经安装完camera_calibration包,安装了完整的ROS系统就有,可以通过下面的命令来检查:
rosdep install camera_calibration

如果输出All required rosdeps installed successfully就是成功的。

标定步骤

  1. 打印一张棋盘标定板,各种规格参数的都可以,点击官方链接下载。我下载的是
    8x6的标定板(板内十字长宽上的点),square 0.0245 是标定板每个小格的尺寸(单位米)。
  2. 修改usb cam的launch文件,修改的地方是选择摄像头和设置标定后文件保存位置。文件默认的video_device是video0,也就是电脑自己的摄像头,改为video1就是外接摄像头,添加参数camera_info_url是设置标定后的保存位置,如果不设置会出现标定后无法保存的情况。
<launch>
<node name="usb_cam" pkg="usb_cam" type="usb_cam_node" output="screen" >
<param name="video_device" value="/dev/video1" />
<param name="camera_info_url" value="package://usb_cam/camera_info/head_camera.yaml"/>
<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>  
</launch> 
  1. 开启roscore
  2. 打开相机
roslaunch usb_cam usb_cam-test.launch
  1. 打开矫正窗口,注意8x6是字母x,而不能用* 号,square后是每个小方格的尺寸,单位为米。
rosrun camera_calibration cameracalibrator.py --size 8x6 --square 0.0245 image:=/usb_cam/image_raw camera:=/usb_cam
  1. 采集样本数据。
    为了得到一个好的标定结果,应该使得标定板尽量出现在摄像头视野的各个位置里:标定板出现在视野中的左边,右边,上边和下边,标定板既有倾斜的,也有水平的,也要有离得近的、远的。
    x:表示标定板在视野中的左右位置。
    y:表示标定板在视野中的上下位置。
    size:标定板在占视野的尺寸大小,也可以理解为标定板离摄像头的远近。 skew:标定板在视野上下左右中的倾斜位置。
  2. 计算矫正参数。
    经过一番采集,当calibrate按钮亮起时,点击按钮,稍等几分钟,就可以在命令窗中看到标定参数,点击COMMIT将结果保存到电脑路径:/home/sun/.ros/camera_info/head_camera.yaml,再次启动相机时就不会有Camera Calibration文件找不到的警告了。只需加载校准文件不会纠正图像。 为了矫正图像,可以使用image_proc包。如果没有自动载入矫正文件,那么就需要调用下image_proc这个包。
    两种解决方案:
    1.在启动usb_cam的launch文件下面再加上
<node name="image_proc" pkg="image_proc" type="image_proc" ns="usb_cam"/>

2.启动usb_cam后,在终端命令窗口加上

ROS_NAMESPACE=usb_cam rosrun image_proc image_proc

参数意义

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

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

ROS系统上的单目相机标定步骤 的相关文章

  • ROS系统基本功能的使用详解(基本指令/节点/服务/启动文件/动态参数)

    ROS系统基本功能的使用详解 一 创建工作空间 二 创建与编译ROS功能包 三 ROS的基本命令 3 1 节点 3 2 主题 3 3 服务 3 4 参数服务器 四 节点的创建与运行 4 1 创建源文件 4 2 修改CMakeLists tx
  • 关于相机与激光雷达数据采集与标定

    最近在做一个关于车路协同的项目 需要做一个路侧系统 传感器有摄像头和激光雷达 相机和激光雷达联合标定费了老半天劲 在此记录一下 雷达时间戳不对 导致摄像头和雷达的数据无法对齐 解决办法 修改雷达驱动发布点云消息时的时间戳 相机内参标定可以使
  • 1-如何安装ROS

    如何安装ROS 大家好 我是如何 今天尝试在Ubantu下安装ROS Robot Operating System 测试环境 虚拟机VMware Ubantu20 04 准备步骤 添加ROS软件源 sudo sh c echo deb ht
  • ROS2踩坑记录

    Vscode 显示 找不到module 以此选择 设置 Python 在setting json中编辑 在 python autoComplete extraPaths 中添加额外的第三方库路径 如 opt ros foxy lib pyt
  • Ubuntu18.04配置Seetaface6

    目录 一 下载安装Qt软件 1 安装包下载 2 安装Qt 3 配置 二 下载源码 三 编译工具 四 编译 1 编译OpenRoleZoo 2 编译SeetaAuthorize 3 编译TenniS 五 运行 1 修改lib路径 2 buil
  • 在Ubuntu 14.04.2 LTS上安装Qt

    Qt是一个跨平台的应用程序框架 广泛用于开发具有GUI界面的应用软件以及命令行工具 几乎所有操作系统都可以使用Qt 如Windows Mac OS X Android等 用于开发Qt应用程序的主要编程语言是C 但是可以使用诸如Python
  • 解决ros安装 使用roscore命令测试问题

    本人安装教程完成ROS的安装后 在进行测试如图1命令 出现 解决办法输入完命令1后要输入命令2才行 即可测试成功 测试成功的界面如下
  • ROS 第四天 ROS中的关键组件

    1 Launch文件 通过XML文件实现多节点的配置和启动 可自动启动ROS Master
  • 树莓派配置wifi做热点方法

    http wiki jikexueyuan com project raspberry pi wifi html
  • (ros/qt报错) FATAL: ROS_MASTER_URI is not defined in the environment

    安装qt之后 明明打开roscore但是qt运行跟ros有关的节点时报错 FATAL 1450943695 306401842 ROS MASTER URI is not defined in the environment Either
  • ROS1 ROS2学习

    ROS1 ROS2学习 安装 ROS ROS1 ROS2 命令行界面 ROS2 功能包相关指令 ROS 命令行工具 ROS1 CLI工具 ROS2 CLI工具 ROS 通信核心概念 节点 Node 节点相关的CLI 话题 Topic 编写发
  • roslaunch error: ERROR: cannot launch node of type

    今天在因为github上有个之前的包更新了 重新git clone后出现了一个问题 ERROR cannot launch node of type crazyflie demo controller py can t locate nod
  • 不使用ros编译roscpp(使用g++)

    我正在尝试在不使用ROS其余部分的情况下编译roscpp 我只需要订阅一个节点 但该节点拥有使用旧版本ROS的节点 并且由于编译问题 我无法将我的程序与他的程序集成 我从git下载了源代码 https github com ros ros
  • 无法在 ROS 中使用本地安装的 Protocol Buffer

    我已经安装了协议缓冲区 https developers google com protocol buffers 本地 ROS包的目录结构如下 CMakeLists txt package xml include addressbook p
  • ROS 从 python 节点发布数组

    我是 ros python 的新手 我正在尝试从 python ros 节点发布一个一维数组 我使用 Int32MultiArray 但我无法理解多数组中布局的概念 谁能给我解释一下吗 或者还有其他方式发布数组吗 Thanks usr bi
  • 可以在catkin工作区之外创建ROS节点吗?

    我想在catkin工作区之外创建一个ROS发布者节点 可以创建吗 当然可以 像对待任何其他 cpp 库或 python 包一样对待 ROS 在Python中你必须保留PYTHONPATH环境变量指向ros包 opt ros kinetic
  • ROS 问题:libQt5Core.so.5:无法打开共享对象文件:没有这样的文件或目录

    当我跑步时 rosrun turtlesim turtlesim node 在 Ubuntu 上 我收到以下消息 opt ros noetic lib turtlesim turtlesim node 加载共享库时出错 libQt5Core
  • 如何从里程计/tf数据获取投影矩阵?

    我想将视觉里程计的结果与 KITTI 数据集提供的事实进行比较 对于地面中的每一帧 我都有一个投影矩阵 例如 1 000000e 00 9 043683e 12 2 326809e 11 1 110223e 16 9 043683e 12
  • 如何在Windows上安装机器人操作系统ROSJava?

    ROS 的文档很糟糕 一个很大的讽刺是 ROS 的 Groovy 和 ROSJava 版本的创建是为了让 Windows 等平台上的开发人员能够利用出色的机器人 SDK 而所有安装说明仍然面向 Linux ubuntu 用户 The ROS
  • VideoCapture 未检测到 uEye 摄像头

    我的 uEye 相机遇到了一个问题 使用我的笔记本电脑摄像头 id 0 或 USB 上的网络摄像头 id 1 此行完美运行 TheVideoCapturer open 1 TheVideoCapturer 属于 VideoCapture 类

随机推荐

  • Android 蓝牙笔记-底层RFKILL驱动

    概念 RFKill 就是RF 射频 设备的开关 有类似一键关闭所有射频外设的功能 比如当我们在飞机上飞行开启飞行模式时候 所有这些RF相关的设备都需要关闭 linux的rfkill子系统提供了用于禁用系统中任何无线电发射器的通用接口 发射设
  • AD20-封装的创作及添加

    原理图你是可以画的大一点 丑一点 但是封装库一定要按一比一的比例去画 否者是会影响后期的制作 也有可能是不能做出来的 画原理图是在 这个文件中进行 Ctrl m 是测量中心距离 先选中一个中心 在选中另一个中心 gg 按两次 是设置栅格的长
  • 浅谈数组与链表的区别

    1 区别 1 数组元素地址需要连续内存空间 链表节点地址不需要连续内存空间 2 数组在最初就确定了成员数量 后期无法修改 链表的节点个数可动态增减 3 数组元素只能是同1种数据类型 链表节点可携带多种数据类型 4 数组从栈中分配空间 链表从
  • java元注解

    java元注解 本文涉及以下这些内容 如果不清楚的话 可以看一下 相信会对你有些许帮助 1 使用IntelliJ IDEA 2018查看字节码 2 使用IntelliJ IDEA 2018生成帮助文档 本文主要针对于java8 java8定
  • 第十四届蓝桥杯B组第一期模拟题

    1 十进制整数 2 在十进制中是 1 位数 在二进制中对应 10 是 2 位数 十进制整数 22 在十进制中是 2 位数 在二进制中对应 10110 是 5 位数 请问十进制整数 2022 在二进制中是几位数 include
  • Python响应式类库RxPy简介

    RxPy是非常流行的响应式框架Reactive X的Python版本 其实这些版本都是一样的 只不过是各个语言的实现不同而已 因此 如果学会了其中一种 那么使用其他的响应式版本也是轻而易举的 之前我就听说过这个框架 最近决定好好研究一下 基
  • Jmeter(三十六) - 从入门到精通进阶篇 - 设置负载阶梯式压测场景(详解教程)

    1 简介 在性能测试中 有时需要模拟一种实际生产中经常出现的情况 即 从某个值开始不断增加压力 直至达到某个值 然后持续运行一段时间 然后继续加压达到某个值持续运行 如此循环直到达到预期的峰值 运行一段时间 在jmeter中 有这样一个插件
  • SASS 中的占位符%,@extend,@mixin(@include)的使用场景

    SASS在线编译网站 https www sassmeister com 占位符 被声明为占位符的CSS类 不会出现在最终生成的CSS中 SASS代码 log display block color black log debug exte
  • SQL删除重复数据,保留ID最大的一条

    在数据库中可能会存在重复数据 需要删除并且保留其中一条 这里我们保留其中id最大的一条 DELETE FROM T Dat BankData WHERE BankCode IN SELECT BankCode FROM T Dat Bank
  • Idea在plugin的marketplace中一直查不到东西&安装插件

    1 问题出现 我在Intellij IDEA 2018中搜索安装我们想要的插件时 有时候发现打开Setting gt Plugins Marketplace搜索插件页面加载不出来 而且搜索插件也搜索不出来 2 原因分析 IDEA的模块系统加
  • 解决 Access denied for user'root'@'IP地址'

    解决mysql Access denied for user root IP地址 问题 在MYSQL 中 用远程软件登陆服务器 有时出现 Access denied for user root localhost www 2cto com
  • jQuery 入门教程(29): jQuery UI Datepicker 示例(二)

    显示月份和年份选择下拉框 changeMonth 和changeYear 选择可以打开和关闭月份和年份下拉选择框 1 2
  • 数码管原理

    今天有师弟问我数码管的问题 我想起我刚学单片机的时候 好像也在数码管的地方迷糊了一段时间 就简单写写数码管的原理 首先 什么是数码管 百度百科解答 数码管 也称作辉光管 是一种可以显示数字和其他信息的电子设备 玻璃管中包括一个金属丝网制成的
  • 多处理器的基本概念

    SISD 单指令流单数据流 特性 各指令序列只能并发 不能并行 每条指令处理一两个数据 不是 数据级并行技术 硬件组成 一个处理器 一个主存储器 若采用指令流水线 需设置多个功能部件 采用多模块交叉存储器 SIMD 单指令流多数据流 特性
  • 使用较广泛的安全测试工具有哪些?

    使用较广泛的安全测试工具有哪些 安全测试是一个非常复杂的过程 安全测试所使用到的工具也非常多 而且种类不一 如漏洞扫描工具 端口扫描工具 抓包工具 渗透工具等 一 Web漏洞扫描工具 AppScan AppScan是IBM公司开发的一款We
  • mysql未开启binlog恢复数据_MYSQL bin_log 开启及数据恢复

    参考博客 A https www jianshu com p 55b0d52edca2 B https www cnblogs com martinzhang p 3454358 html C https www cnblogs com x
  • C语言-从txt文件中读取数据,忽略换行及回车

    long file size char filename FILE fp fopen filename r if fp return 1 fseek fp 0L SEEK END long size ftell fp fclose fp r
  • Mysql安装,控制台安装

    控制台安装要比exe方式安装简单很多 下载mysql 官网地址 mysql 解压下载的文件后 在生成的主目录里面创建一个my ini文件 文件内容如下 mysqld 端口号 port 3306 mysql安装目录 basedir C Pro
  • 步进电机S型曲线加速的实现

    之前做电机相关的项目比较少 最近有个项目涉及到步进电机的精确控制 参考了一些资料研究了一下S型曲线加减速 这里总结一下分享给大家 硬件是 STM32 驱动器 步进电机 STM32定时器输出PWM 控制驱动器来驱动步进电机 单片机只要控制电机
  • ROS系统上的单目相机标定步骤

    单目相机标定步骤 前置条件 已经安装完usb cam包 Git链接 已经安装完camera calibration包 安装了完整的ROS系统就有 可以通过下面的命令来检查 rosdep install camera calibration