kinect v2 相机标定

2023-05-16

目录

ubuntu删除命令

相机标定 

一些快捷键

准备工作

 详细步骤


ubuntu删除命令

 ubuntu中删除命令一般使用rm,但是rm误删之后,想恢复比较麻烦,所以在这里介绍另外一种删除方法,trash,文件删除是放到回收站,这样误删之后还有挽回的机会

 trash删除是将文件删除到回收站中,但是trash不是自带的命令,需要使用

sudo apt-get install trash-cil

来安装trash。

 使用方法:trash [选项].. 文件..

      删除(unlink)文件

      -f,--force  强制删除文件,无论文件是否存在,都不会提示确认 (和-i的作用刚好相反)

     -i                在删除文件前给确认提示

     -I                 比-i提示的要少,只当文件多于3个或者删除有递归的文件的时候才提示,但也能阻止很多错误。

       --interactive[=WHEN] 根据WHEN来决定提示:never,once(-I)或者always(-i)。如果没有WHEN,默认为always。

       --one-file-system 递归删除一个层级时,跳过所有不符合命令行参数的文件系统上的文件 (这个我暂时还不懂)

       --no-preserve-root 不特殊对待'/'
       --preserve-root 不去删除'/'

    -r,-R,--recursive 删除文件夹以及它下面递归的文件

    -d,--dir   删除空文件夹

     -v,--verbose 详细解释每一步删除

         --help  显示帮助,并退出

         --version 输出版本信息

         默认,trash不会删除文件夹。使用--recursive(-r or -R)选项去删除文件夹以及它下面的目录文件

         删除一个文件,例如删除-foo,可以使用trash如下

          trash -- -foo

          trash ./-foo

相机标定 

主要参考了ros+iai_kinect2标定教程-失败-效果很差-更新和解决办法、https://github.com/code-iai/iai_kinect2/tree/master/kinect2_calibration、kinect2的标定 三篇文章,其中主要参考的是第二篇,第一篇主要看了博主总结的一些错误和改进措施

在进行标定前,最好看一下张正友标定法的原理【一文弄懂】张正友标定法-完整学习笔记-从原理到实战

深度相机的简单介绍三种主流深度相机介绍

一些快捷键

窗户:

  • ESC, : 退出q
  • SPACE、: 保存当前图像以进行校准s
  • l:降低 IR 值 rage 的最小值和最大值
  • h:增加 IR 值 rage 的最小值和最大值
  • 1:降低 IR 值 rage 的最小值
  • 2:增加 IR 值 rage 的最小值
  • 3:降低 IR 值狂暴的最大值
  • 4:增加 IR 值 rage 的最大值

终端:

  • CRTL+c: 退出

准备工作

  • 打印标定板(我使用的是chess5x7x0.03格式的棋盘格)并将其粘附到平面对象上。标定板必须非常平坦,这一点非常重要。此外,使用卡尺检查打印图案的特征之间的距离是否正确。有时,打印机会缩放文档,校准将不起作用。对于上述图案,黑白角交叉点之间的距离应正好为3cm。
  • 获取两个三脚架,一个用于固定标定板,另一个用于固定 kinect2 相机。理想情况下,kinect2的三脚架将有一个球形云台,以便您在拍摄图像之前轻松移动并将其锁定到位。在拍摄图像之前,传感器稳定(图像清晰且不模糊)非常重要。三脚架可以确保相机在红外和RGB图像拍摄之间没有移动。
  • 为下面指示的所有步骤(RGB,IR,SYNC)录制图像时,启动录制程序,然后按空格键记录每个图像。应检测校准图案(由覆盖在校准图案上的彩色线指示),图像应清晰稳定。
  • 建议拍摄在图像的所有区域显示校准图案的图像,并且具有图案的不同方向(相对于图像平面倾斜图案),并且至少两个距离。因此,每个校准集最好采用100张图像(由于第一次操作,主要学习方法,我只采集了20张)。
  • 我们通常从一小段距离开始,此时标定板覆盖了大部分图像,按下空格拍摄几张照片,垂直倾斜校准图案,然后水平倾斜。想象一下,一条光线从相机传感器中射出,这可以确保拥有校准图案不垂直于该光线的图像。
  • 然后,我们将校准图案移得更远,对于图案的不同方向(倾斜),拍摄了多张照片,以便校准图案存在于大多数相机图像周围。例如,首先将标定板放于左上角。然后在中上角的下一个图像上,然后在右上角。然后是一些标定板垂直位于中间的图像,等等...
  • github那位作者按照以下步骤拍摄大约100 - 200张图像                                                                   i. 将图案放置在相机附近;                                                                                                         ii. 将图案放置在图像的左上角;                                                                                                 iii. 在拍照时沿着该行移动;                                                                                                         iv. 往下走一排,然后进行步骤iii。直到你最终在右下角;                                                           v. 旋转图案,以便(1)左边框距离摄像机比右侧距离更远,(2)反过来(3)顶部边框             比底部边框更远,(4)另一个方向,(5)左上角指向上方,右下角指向下方。对于               每一次轮换,回到步骤ii。                                                                                                       vi. 将图案放置在离相机更远的位置,然后转到步骤ii。对3个不同距离执行此操作:近(<=            1m),中(> 1m,<2.5m)和远(> = 2.5m)的3个不同距离进行。(可能的距离取决            于棋盘大小)
  • 特别是对于外部校准,重要的是相机和标定板在拍摄图像时不会移动。

 下图是典型的校准设置

kinect2_calibration_setup_small.jpg

 详细步骤

1、输入下面命令来获取Kinect数据

roslaunch kinect2_bridge kinect2_bridge.launch

2、以每秒较低的帧数启动kinect2_bridge(以便于 CPU 使用)

rosrun kinect2_bridge kinect2_bridge _fps_limit:=2

3、为校准数据文件创建目录

mkdir ~/kinect_cal_data; 
cd ~/kinect_cal_data

4、为彩色相机录制图像

rosrun kinect2_calibration kinect2_calibration chess5x7x0.03 record color

此时调整标定板位置,以便拍下不同位置的图片(最好20张以上),下面同理

5、校准内部函数:图片保存好后输入下面命令进行校准

rosrun kinect2_calibration kinect2_calibration chess5x7x0.03 calibrate color

6、为红外相机录制图像

rosrun kinect2_calibration kinect2_calibration chess5x7x0.03 record ir

7、校准红外相机的固有特性

rosrun kinect2_calibration kinect2_calibration chess5x7x0.03 calibrate ir

8、在两台相机上同步录制图像

rosrun kinect2_calibration kinect2_calibration chess5x7x0.03 record sync

9、校准外在因素

rosrun kinect2_calibration kinect2_calibration chess5x7x0.03 calibrate sync

10、校准深度测量值

rosrun kinect2_calibration kinect2_calibration chess5x7x0.03 calibrate depth

11、通过查看kinect2_bridge打印出来的第一行,找出 kinect2 的序列号(大概在第一个窗口的三分之一位置)。该行如下所示:(后面的序列号每个人的会不一样)

device serial: 020620440947

12、在kinect2_bridge/data文件夹中创建校准结果目录:

roscd kinect2_bridge/data; 
mkdir 020620440947

13、将以下文件从校准目录(在第三步创建)(~/kinect_cal_data) 复制到刚刚创建的目录中:

calib_color.yaml 
calib_depth.yaml 
calib_ir.yaml 
calib_pose.yaml

14、重启kinect_brige,观察前后结果。

另外,我在做的时候还遇到一个错误,不过好像并没有影响标定过程:

[ERROR] Tried to advertise a service that is already advertised in this node [/kinect2_calib_1458721837266890808/compressed/set_parameters]
[ERROR] Tried to advertise a service that is already advertised in this node [/kinect2_calib_1458721837266890808/compressed/set_parameters]

真正影响我们的是我们输入的参数  比如ROS的开发包给例子是使用棋盘格6*8的棋盘,正方形的边长为0.03米  但是我们的棋盘可能并并不是那么小的,这时候要使用我们的棋盘的话就要注意给的参数了。比如用的是长有9个,款有7个正方形的标定棋盘,这时候我们的参数是6*8*0.05,参数一定要给准确,不然会出现错误、而且就是在同一个文件下使用命令。

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

kinect v2 相机标定 的相关文章

  • RocketMq安装出现的问题

    RocketMq4 9 3版本下载安装问题 xff08 Win10 xff09 1 官网https rocketmq apache org docs quick start 找到下图中所示的链接 下载链接 解压到自己想要的目录下 xff0c
  • 阿里云服务器搭建fastdfs

    fastdfs安装介绍 环境准备 本人的阿里云服务器CentOS Linux release 7 9 2009 Core 版本 xff08 通过命令cat etc redhat release查看自己的Linux版本信息 xff09 过程中
  • win10搭建mysql主从复制的两个测试主从数据库

    mysql主从复制基础 win10电脑设置两个mysql数据库 卸载MySQL数据库 本人只是想把自己的mysql5 7 4升级为mysql8版本 xff0c 这里顺带记录一下 xff0c 以便有需要的人查看备份数据库 本人使用的是sqly
  • mac系统n工具下载node.js速度过慢(导致下载失败)

    n工具下载node js失败 n工具n工具下载node js失败的原因解决注意 n工具 n工具是mac系统用来管理多个node js版本的工具 xff0c 我们如果要使用到多个node js版本 xff0c 那么就可以使用n工具 xff0c
  • 使用Git小乌龟初始化本地仓库并且创建新的分支提交 删除分支(超详细图文教程,手把手教你做)

    前段时间入了小乌龟的坑 xff0c 最近项目需要多人合作 xff0c 就需要使用分支提交项目 xff0c 这里刚好就使用到了创建分支功能 xff0c 就记录一下使用的完整过程 文章目录 第一步 初始仓库 xff1a 1 1 创建完成项目会多
  • opencv笔试面试必背题目

    算法工程师 xff0c 技术软件类求职opencv必背八股文 更多算法 业务 HR面等笔试题面试题 gt 个性签名自取 xff01 1 opencv中RGB2GRAY是怎么实现的 答 xff1a 以R G B为轴建立空间直角坐标系 xff0
  • 我的新地址 http://www.cppblog.com/flyingxu/

    我的新地址 http www cppblog com flyingxu 这里的文章不会移过去 xff0c 也不会继续更新 xff0c 保持现状 以后会不会重新开始更新 xff0c 也不确定
  • px4+ros+gazebo+ORB_SLAM2室内视觉无人机导航

    px4 43 ros 43 gazebo 43 ORB SLAM2室内视觉无人机导航 一 ros 43 px4环境搭建 我用的ORB SLAM2视觉相机跑图首先要安装ros 43 px4环境 xff0c 我用的阿木实验室的镜像 xff0c
  • pc+tx2通信

    https blog csdn net RNG uzi article details 107285113
  • F4烧写PX4固件

    一 硬件准备 一个f4v3pro或者f4v3s飞控 xff0c 一根USB线 xff0c F450机架 xff0c ET07接收机和配套遥控器 xff0c 20A电调 xff0c 电机 xff0c 格式3s电池 1 无人机组装效果图 上 上
  • C++结构体类型变量

    C 43 43 定义结构体类型变量的方法 1 先声明结构体类型再定义变量名 xff0c 在定义了结构体变量后 xff0c 系统会为之分配内存单元 span class token keyword struct span Student sp
  • pycharm中如何安装tensorflow、cv2

    做卷积神经网络时用到了Python xff0c 记录一下遇到的问题 xff0c 首先 xff0c anaconda和pycharm的安装可按照网上的教程来 tensorflow的安装 但是 xff0c 当配置好解释器之后 xff0c 面临的
  • 【vscode和gitee】如何更改VsCode的gitee远程库地址,并提交到新的仓库中

    如何更改VsCode的gitee远程库地址 xff0c 并提交到新的仓库中 1 查看并更换git远程仓库地址 span class token number 1 span 查看当前remotes span class token funct
  • 【软件评测】03程序语言基础

    仅为学习记录 程序设计语言概述 低级语言 机器语言 xff1a 用二进制代码表示的计算机的指令等 xff0c 所有都是二进制表示 xff0c 计算机可以直接执行 xff0c 而不需要再次进行编译 优点 xff1a 执行效率较高 xff0c
  • 【软件评测】06计算机网络基础知识

    计算机网络基础知识 OSI RM七层模型七层模型TCP IP四层协议冲突域和广播域的区别 常见的协议协议族常见协议及对应端口常用的端口号 域名空间万维网Windows网络相关命令IP地址IP地址IP地址的分类IP地址掩码变长子网掩码特殊含义
  • 【软件评测】07安全性基础知识

    安全性基础知识 安全保护等级安全防护体系数据安全策略安全防护策略防火墙包过滤状态检测代理服务 安全协议 病毒与木马病毒木马 网络攻击访问控制访问控制实现方式身份验证方式 加密技术对称性加密技术非对称性加密技术单向加密PKI签名 43 加密
  • 【软件评测】09知识产权和项目管理基础知识

    仅为学习记录 知识产权 著作权概述 著作权 知识产权是指人们基于自己的智力活动所创造的成果和经营管理活动中的经验知识而依法享有的权利 知识产权的特点 xff1a 无形性 双重性 确认性 独创性 地域性 时间性 版权 xff08 著作权 xf
  • 131. Palindrome Partitioning

    文章目录 1 题目理解2 回溯3 动态规划 1 题目理解 输入 xff1a 字符串s 规则 xff1a 将字符串s分割 xff0c 分割后每一个部分都是一个回文串 输出 xff1a 所有的分割方式 Example 1 Input s 61
  • 【软件评测】10数据库技术

    仅记录学习过程 数据库技术相关术语 术语 数据 描述事物的符号 xff0c 是传递信息的载体信息 事物的状态和事物状态变化的反馈数据库 存放数据的地方 xff0c 统一管理 长期存放在计算机内 有组织 相互关联的数据集合 xff0c 特点是
  • 【软件评测】11软件测试理论

    仅为学习记录 软件测试理论 软件测试基础软件测试软件测试验证与确认软件缺陷 测试质量与保证软件质量质量保证 测试用例测试策略测试的原则软件测试模型V模型W模型H模型敏捷测试模型 软件测试分类回归测试按照关联代码划分按实施主体划分按工程阶段划

随机推荐

  • 数学建模-第六章:最优化方法建模

    最优化方法 数学规划 xff0c 是运筹学的一个分支怎样建立最优化问题的数学模型 决策变量和函数约束或限制条件目标函数 连续变量优化模型 线性规划 标准形式的线性规划模型 线性规划问题转为标准形式 max w 61 7x 43 12y s
  • Linux基础命令总结(超全)

    Linux中一些基础命令 1 pwd xff1a 显示当前所在位置的绝对路径 2 cd 43 路径 xff1a 切换当前工作位置 3 cd xff1a 退回到当前位置 4 cd xff1a 退回到上一层 5 ls xff1a 默认显示当前位
  • C#窗体简单应用

    创建登录页面 xff0c 登录成功跳转测试页面 第一步 xff0c VS创建窗体 第二步 xff0c 进入程序 xff0c 开始编辑 第三步 xff0c 从 视图 找出 工具箱 xff0c 拉出对应控件 xff0c 排布登录页面 第四步 x
  • 四旋翼无人机仿真之hector_quadrotor无人机(ROS + Gazebo)(一)

    这里写自定义目录标题 应用环境hector quadrotor 功能包结构简介hector quadrotor 功能包安装1 安装所需依赖库2 下载 安装hector quadrotor参考文章 应用环境 ubuntu16 04 虚拟机实体
  • 四旋翼无人机仿真之hector_quadrotor无人机(ROS + Gazebo)(三)传感器数据读取与复现(IMU、GPS)

    系列文章目录 文章1 xff1a 四旋翼无人机仿真之hector quadrotor无人机 xff08 ROS 43 Gazebo xff09 文章2 xff1a 四旋翼无人机仿真之hector quadrotor xff08 二 xff0
  • 魔霸新锐2021双系统配置

    https blog csdn net FontThrone article details 104282121 主要参考独立显卡部分 https www bilibili com read cv11300312 xff08 主要参考核心显
  • XTDrone vins-fusion+ego-swarm debug(已解决)

    问题描述 xff1a 低优先级无人机 xff08 除0号无人机以外 xff09 运行撞墙 xff1b 启动时低优先级无人机会异常的飘逸一段距离 xff0c 而rviz里显示的b样条曲线的控制点起点没变 这是刚启动的情况 启动大概不到1秒无人
  • cmake find_packages 搜索路径与 opencv版本管理

    find packages搜索路径 xff1a 设定一个project DIR变量来指定路径 xff0c 找到对应库的 cmake xff0c 例如 xff1a set OpenCV DIR usr share OpenCV 多版本proj
  • 小白理解Kubernetes系列

    初识Kubernetes 从本篇文章开始 xff0c 记录Kubernetes的内容 xff0c Kubernetes相关的知识点包括十三个部分 xff0c 分别是前世今生 组件说明 Pod概念 网络通讯方式 集群安装 资源清单 资源控制器
  • Warning: skipping non-radio button in group

    现象 xff1a 当我们加入一组单选按钮 xff0c 并将它们设置为一组互斥按钮 xff0c 然后又添加其他控件 xff0c 这时按F5编译 xff0c 出现如下警告信息 xff1a Warning skipping non radio b
  • ubuntu蓝牙相关问题(ubuntu 18.04 + ax210)

    装驱动 xff08 ax210的驱动好像要内核5 10以上能用 xff0c 可以参考我之前的博客升级 xff09 span class token function wget span span class token parameter
  • 嵌入式软件面试经典问题

    一 进程与线程 xff08 不同的系统资源管理方式 xff09 1 区别 进程 xff1a 资源分配的基本单位 xff0c 由一个或者多个线程组成 线程 xff1a 调度器进行调度的基本单位 xff0c 一个任务 每个进程都有自己独立的内存
  • ESP8266常用API函数总结(vscode+platformIO)

    1 COMMON 1 includePath ctrl 43 shift 43 p进入命令面板输入C C 43 43 Edit Configurations 在包含文件中选择include文件目录 2 输出监视器 在platformio i
  • C++基础总结

    1 引用和指针区别 引用变量是一个别名 xff0c 相当于定义了一个const类型变量 xff0c 但不分配空间 引用定义时必须初始化 xff0c 指针无要求 初始化时引用一个实体后不能再引用其他的 xff0c 指针可以在任何时候指向任一同
  • 局域网共享文件配置

    1 适用范围 可用于同一网络内的设备进行数据共享 xff08 同一WIFI或网线接同一路由器 xff09 2 共享文件配置步骤 xff1a 1 选择你想共享的文件 xff0c 鼠标右键单击属性 xff08 例如我这文件名为Shared xf
  • C语言细节

    C 1 char数组声明时初始化 2 uin8 t属于无符号字符型 typedef signed char int8 t typedef unsigned char uint8 t typedef short int16 t typedef
  • ESP32 stable_v5.0 API简单汇总

    SDK API https docs espressif com projects esp idf 1 GPIO amp EXTI 头文件位置 xff1a components driver include driver gpio h 二选
  • keil5[使用虚拟端口进行软件仿真串口调试]与[使用开发板串口调试]

    前言 xff1a 做串口调试试验 xff0c 写下此文章 介绍两种方式 xff0c 一种软件仿真 xff0c 一种硬件 1 虚拟端口进行软件仿真串口调试 xff1a 无需硬件 开发板 需要虚拟串口驱动 xff08 一个软件 xff09 xf
  • STM32 FreeRTOS学习——任务创建

    任务创建 任务概念 什么是任务 任务函数没有返回值 xff0c 并且参数是指针类型 很少使用 基本可以不管 void entry task void pvParameters 任务主体 xff0c 无限循环且不能返回值 while 1 任务
  • kinect v2 相机标定

    目录 ubuntu删除命令 相机标定 一些快捷键 准备工作 详细步骤 ubuntu删除命令 ubuntu中删除命令一般使用rm xff0c 但是rm误删之后 xff0c 想恢复比较麻烦 xff0c 所以在这里介绍另外一种删除方法 xff0c