ROS 教程之 vision: 摄像头标定camera calibration

2023-05-16

        在上一个ROS教程视觉文章中,我们使用usb_cam包读入并发布了图像消息,但是图像没有被标定,因此存在畸变。ROS官方提供了用于单目或者双目标定的camera_calibration包。这个包是使用opencv里的张正友标定法,所以如果你有使用opencv标定的经验,可以直接标定,而不使用官方的程序。

        官方也给出了单目的标定教程和双目视觉的标定教程。本教程基于usb_cam  package 读取图像,然后使用官方例程进行标定。

1.使用usb_cam 读取图像,launch文件如下:

<launch>
    <arg name="device" default="/dev/video0" />
    <node name="usb_cam_node" pkg="usb_cam" type="usb_cam_node" output="screen">
        <param name="video_device" value="$(arg device)" />
        <param name="image_width" value="640" />
        <param name="image_height" value="480" />
        <param name="framerate" value="30" />
        <param name="brightness" value="128" />
        <param name="contrast" value="128" />
        <param name="saturation " value="70" />
    </node>
</launch>

2.检查usb_cam package发布的消息:

$ rostopic list
看是否有如下消息,并记住名称

  • 
    /usb_cam_node/camera_info
    /usb_cam_node/image_raw  
3.启动标定程序:

$ rosrun camera_calibration cameracalibrator.py --size 11x8 --square 0.03 image:=/usb_cam_node/image_raw camera:=/usb_cam_node

其中参数size 11x8 注意是字母x,他是棋盘内部角点个数,如下图所示。square为棋盘正方形边长,注意刚刚开始标定的时候,CALIBRATE按钮是灰色的。

                         

4.标定程序使用方法:

       为了得到一个好的标定结果,应该使得标定板尽量出现在摄像头视野的各个位置里:

       如标定板出现在视野中的左边,右边,上边和下边,标定板既有倾斜的,也有水平的,。

       界面中的x:表示标定板在视野中的左右位置。

                     y:表示标定板在视野中的上下位置。

                size:标定板在占视野的尺寸大小,也可以理解为标定板离摄像头的远近。

                skew:标定板在视野中的倾斜位置。

还要有棋盘占住大部分视野的图片,如下图所示:

       按着上述方式不断移动标定板,直到CALIBRATE按钮变亮,点击该按钮就会进行标定。标定过程将持续一两分钟,并且标定界面会变成灰色,无法进行操作,耐心等待即可。

       标定完成以后,你将看到如下图所示的窗口,窗口中的图像为标定后的结果,纠正了畸变

                           

        并且,摄像机的各个参数会出现在标定程序的终端窗口中,如下:

                        

如果对标定结果满意,点击COMMIT按钮将结果保存到默认文件夹,在usb_cam窗口中可以看到如下信息,说明标定结果已经保存在相应文件夹下下次启动usb_cam节点时,会自动调用。


 

(转载请注明作者和出处:http://blog.csdn.net/heyijia0327 未经允许请勿用于商业用途)

reference:

1.ROS官方:单目标定


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

ROS 教程之 vision: 摄像头标定camera calibration 的相关文章

  • 【深度学习】训练模型结果同时显示,模型结果对比

    码字不易 xff0c 如果各位看官感觉该文章对你有所帮助 xff0c 麻烦点个关注 xff0c 如果有任何问题 xff0c 请留言交流 如需转载 xff0c 请注明出处 xff0c 谢谢 文章链接 xff1a 深度学习 训练模型结果同时显示
  • 【问题与方法】如何使用vscode配置远程git仓库

    码字不易 xff0c 如果各位看官感觉该文章对你有所帮助 xff0c 麻烦点个关注 xff0c 如果有任何问题 xff0c 请留言交流 如需转载 xff0c 请注明出处 xff0c 谢谢 配置git xff0c 看我这一篇其实就够了 问题与
  • 【车道线算法】GANet-车道线检测环境配置一文通关

    目录 GANet配置全纪录 下载代码 conda环境部署 安装torch和cudatoolkit 安装其他包 编译 总结 GANet配置全纪录 下载代码 GitHub Wolfwjs GANet A Keypoint based Globa
  • 【雷达】如何将三维点云映射到二维平面

    最近在做基于雷达点云的交通标识牌识别时 xff0c 需要按照HAD格式进行输出 xff0c 由于交通标识牌不一定会与坐标轴垂直 xff0c 那么如何找到矩形标识牌的四个顶点 xff0c 是待解决的问题 由于标识牌一定是平面的 xff0c 三
  • ceres 拟合曲线

    假设有一条满足以下方程的曲线 xff1a 其中a b c为曲线的参数 xff0c w为高斯噪声 这是一个非线性模型 假设我们有N个关于x y的观测数据点 xff0c 想根据这些数据点求出曲线的参数 那么 xff0c 可以求解下面的最小二乘问
  • 独家!了不起的UP系列产品,不一样的开发板—UP Board(一)

    AAEON自2016年推出第一代UP board问世以来 xff0c 其信用卡大小的苗条小身材 xff08 世界首创Intel平台信用卡大小开发板 xff09 xff0c 配备上Intel Atom x5 z8350 处理器 xff0c 兼
  • 追求技术之路 - 那些陪伴我的书籍

    如今已经在广州一家嵌入式公司实习 xff0c 分享大学里度过的一些书籍 xff0c 有些还没读完 xff0c 个人比较喜欢经典书籍 xff0c 研读起来就有种奇妙的感觉 xff0c 比起人与人之间的复杂的关系 xff0c 书籍带给我的感觉很
  • 编程之美 -- 中国象棋将帅问题

    下过中国象棋的朋友都知道 xff0c 双方的 将 和 帅 相隔遥远 xff0c 并且它们不能照面 在象棋残局中 xff0c 许多高手能利用这一规则走出精妙的杀招 假设棋盘上只有 将 和 帅 二子 xff08 为了下面叙述方便 xff0c 我
  • C++单元测试工具 -- CppUnit

    CppUnit 作为C 43 43 语言的一款测试工具 xff0c 其实也是一个开源项目 xff0c 与JUnit一样 xff0c 用来方便开发人员进行单元测试的工具 项目地址 xff1a http sourceforge net apps
  • 拒绝游戏!发愤图强!

    立帖为证 xff01 xff01 xff01
  • C++ STL — 第6章 STL容器(二)deque

    C 43 43 STL容器deque和vector很类似 xff0c 也是采用动态数组来管理元素 使用deque之前需包含头文件 xff1a include lt deque gt 它是定义在命名空间std内的一个class templat
  • C++ STL — 第6章 STL容器(三)list

    一 list基础 List使用一个双向链表来管理元素 图一显示了list的结构 图一 list的结构 任何型别只要具备赋值和可拷贝两种性质 xff0c 就可以作为list的元素 二 list的功能 list的内部结构和vector和dequ
  • STL list remove和sort函数

    include lt iostream gt include lt list gt include lt iterator gt using namespace std bool cmp int a int b return a gt b
  • 排序 -- 简单选择排序

    选择排序 思想 xff1a 每一趟 n i 43 1 xff08 i 61 1 2 3 n 1 xff09 个记录中选择关键字最小的记录作为有序序列的第i个记录 简单选择排序 xff1a 通过n i次关键字间的比较 xff0c 从n i 4
  • HDOJ 1106 排序

    题目地址 xff1a http acm hdu edu cn showproblem php pid 61 1106 Problem xff1a 输入一行数字 xff0c 如果我们把这行数字中的 5 都看成空格 xff0c 那么就得到一行用
  • Jetson Xavier、Jetson TX2、 1080(Ti)、2080显卡运行深度学习模型性能对比(英伟达开发平台VS常用显卡)

    前言 xff1a 英伟达的Jetson TX2使得很多人认为深度学习模型终于可以像嵌入式开发平台那样做到小型化了 xff0c 不用再跑在高配计算机或者服务器上面了 xff0c 但是实际上Jetson TX2开发板的性能和深度学习常用到的10
  • 独家!了不起的UP系列产品,不一样的开发板 — UP Squared Board(二)

    UP 系列家族的成员 xff0c 经过团队经年累月的精心研发 xff0c 产品已不断丰富起来 先后开发出了第二代产品UP Squared 与第一代产品UP Board相比 xff0c 拥有 高性能低功耗的 UP Squared 似乎更令人兴
  • STM32连接--OneNET,阿里云(MQTT协议)详细教程

    x1f495 对于物联网工程 xff0c 不可或缺的必然是连接上云 xff0c 今天本人总结了上云经验 xff0c 希望对大家起到帮助哦 有用的话记得点赞收藏哦 关于如何连接OneNET OneNET https open iot 1008
  • HTTP Digest接入方式鉴权认证流程

    HTTP Digest接入方式鉴权认证流程 一 摘要认证原理 摘要认证与基础认证的工作原理很相似 xff0c 用户先发出一个没有认证证书的请求 xff0c Web服务器回复一个带有WWW Authenticate头的响应 xff0c 指明访
  • 6.2随笔

    今天打牛客 xff0c 用python写了一题 xff0c 结果发现用空格隔开的两个数不知道怎么输入 代码 xff1a n span class token punctuation span m span class token opera

随机推荐

  • 蓝牙Mesh简介

    蓝牙mesh简介 蓝牙Mesh的基本概念 蓝牙Mesh是2017年7月蓝牙技术联盟 xff08 Bluetooth SIG xff09 正式推出的蓝牙设备组网标准 我们知道蓝牙ble设备可以与其他设备建立GATT连接 xff0c 然后进行
  • 蓝牙Mesh的基本概念

    蓝牙mesh简介 蓝牙Mesh的基本概念 蓝牙Mesh是基于ble广播进行消息传递的一种蓝牙组网通讯网络 xff0c 是一种采用网络洪泛的方式无中心 无路由的对等网络 以实现蓝牙设备与蓝牙设备之间的多对多通讯 xff0c 使蓝牙在物联网智能
  • JLink Commander调试方法

    JLink Commander调试方法 1 背景 目前开发中常用的调试手段主要有串口 IO口输出作为调试方式 目前串口的限制较多 xff0c 有些硬件不太方便接串口或者一些实时的数据 xff0c 当时没有接串口则无法实时获取调试信息 IO调
  • 物联网安全系列 - 非对称加密算法 ECDH

    非对称加密算法 ECDH 背景 之前的章节讲到了对称加密算法AES xff0c 发送方和接收方需要使用相同的密钥进行通讯 xff0c 但是发送方怎么将密钥安全的发送给接收方 xff1f 这是一个问题 密钥分配问题 对称加密算法中 xff0c
  • 【开源】一款PyQT+Pyserial开发的串口调试工具

    开源 PyQT 43 Pyserial开发的串口调试工具 串口调试工具是我们做嵌入式开发常用的工具 xff0c 市面上已经有很多串口调试工具了 xff0c 博主写这款串口调试工具一方面是为了学习Python PyQT Pyserial 相关
  • 【Matter】解密Matter协议(一)--- 什么是Matter协议?

    1 什么是Matter协议 xff1f 目前的智能家居行业使用解决方案众多 xff0c 相互之间隔离严重 xff0c 有WiFi 蓝牙 ZigBee 蜂窝或者有线等等不同通讯协议的设备 不仅不同协议之间的设备不能互通 xff0c 而且连相同
  • 【蓝牙系列】蓝牙5.4到底更新了什么?(1)--- PAwR

    蓝牙系列 蓝牙5 4到底更新了什么 xff08 1 xff09 PAwR 一 背景 蓝牙技术联盟最近发布了蓝牙5 4的核心规范 xff0c 蓝牙5 4规范的主要改进之一就是实现了单个接入点与数千个终端节点进行双向无连接通信 xff0c 这一
  • UP Squared Board,工业级创新开发板,为您的物联网应用注入升级能量

    研扬科技自推出UP Board xff08 世界首创 Intel 平台信用卡大小开发板 xff09 以来 xff0c 便成功于业界打开名号 xff0c 后续 xff0c 研扬持续开发 UP 系列产品 xff0c 至今 xff0c 除了 UP
  • 【蓝牙系列】蓝牙5.4到底更新了什么(2)

    蓝牙系列 蓝牙5 4到底更新了什么 xff08 2 xff09 一 背景 上一篇文章讲了蓝牙5 4的PAwR特征 xff0c 非常适合应用在电子货架标签 xff08 ESL xff09 领域 xff0c 但是实际应用场景中看 xff0c 只
  • 【转载】【Nordic博文分享系列】详解Zephyr设备树(DeviceTree)与驱动模型

    详解Zephyr设备树 xff08 DeviceTree xff09 与驱动模型 转载自nordic半导体微信公众号 1 前言 Nordic最新的开发包NCS xff08 nRF Connect SDK xff09 相对于原来的nRF5 S
  • 感受一下SPL06气压计+APM三阶互补的高度融合

    不得不说 xff0c spl06气压计很强 xff0c 原始数据也比较干净 xff0c 短时间可以保持在30cm内浮动 xff0c 滤波后在10cm内浮动 就是这么夸张 使用APM的三阶互补滤波融合出 高度 xff0c 速度 xff0c 效
  • 6种串口协议的实现

    串口协议开发 以下解析范式都是采用数据队列的形似来存储 xff0c 并且根据设备运行速度差异 xff0c 还需增加数据包队列来存储解析完毕的数据包 1 范式一 固定长度 无校验 0x6B 20字节 0xB6 上面数据中有一个帧头0x6B x
  • html页面实时刷新显示服务器数据

    在上一篇中我说到浏览器和服务器交互数据 xff0c 是实现了服务器发数据给浏览器 xff0c 并在页面上显示 xff0c 但是是通过按钮点击刷新的 xff0c 而且数据是和html页面一起发过来的 xff0c 在这里我是数据放到页面数组里
  • 平衡小车之家客服真差

    我同事送了我一台直流电机平衡车 xff0c 然后同事又买了一台步进电机平衡车 都是在平衡小车之家买的 xff0c 好好看看下面的图片 最近在研究同事的步进平衡小车 xff0c 然后跑去问一下客服步进电机的参数 xff0c 一看我说 xff0
  • C++编译流程

    C 43 43 编译流程 C C 43 43 是编译型高级语言 xff0c 程序要执行 xff0c 必须要有编译器和链接器 编译过程分为四步 xff1a 预处理 编译 汇编 链接 1 预处理 读取源代码并对其中的以 开头的指令和特殊符号进行
  • 卡尔曼滤波 -- 从推导到应用(一)

    前言 卡尔曼滤波器是在估计线性系统状态的过程中 xff0c 以 最小均方误差为目的而推导出的几个递推数学等式 也可以从贝叶斯推断的角度来推导 本文将分为两部分 xff1a 第一部分 xff0c 结合例子 xff0c 从最小均方误差的角度 x
  • 卡尔曼滤波 -- 从推导到应用(二)

    该文是自我总结性文章 xff0c 有纰漏 xff0c 请指出 xff0c 谢谢 白巧克力 这部分主要是通过对第一部分中提到的匀加速小车模型进行位移预测 先来看看状态方程能建立准确的时候 xff0c 状态方程见第一部分分割线以后内容 xff0
  • LQR 的直观推导及简单应用

    本文主要介绍LQR的直观推导 xff0c 说明LQR目标函数J选择的直观含义以及简单介绍矩阵Q R的选取 xff0c 最后总结LQR控制器的设计步奏 xff0c 并将其应用在一个简单的倒立摆例子上 假设有一个线性系统能用状态向量的形式表示成
  • STM32学习路线-长图

    最近好好整理了一下学习STM32的路程 xff0c 做成了一个长图 xff1a STM32学习路线 xff0c 供初学者们参考一下
  • ROS 教程之 vision: 摄像头标定camera calibration

    在上一个ROS教程视觉文章中 xff0c 我们使用usb cam包读入并发布了图像消息 xff0c 但是图像没有被标定 xff0c 因此存在畸变 ROS官方提供了用于单目或者双目标定的camera calibration包 这个包是使用op