Kalibr工具进行相机IMU标定

2023-05-16

  • github地址:https://github.com/ethz-asl/kalibr
  • Wiki文档:https://github.com/ethz-asl/kalibr/wiki/camera-imu-calibration
  • 项目的编译:https://blog.csdn.net/weixin_43846627/article/details/115483883

一、相机标定(仅适用于双目及以上相机)

1.准备标定板

Kalibr官方给出了多种标定板的样式,也集成了标定板生成的工具。

标定板生成:

kalibr_create_target_pdf --type apriltag --nx [NUM_COLS] --ny [NUM_ROWS] --tsize [TAG_WIDTH_M] --tspace [TAG_SPACING_PERCENT]​​

可以通过此命令来规定标定板中标记的行列数,每一个小标记的大小。

标定板参数含义

在标定板准备好之后准备一个标定板对应的yaml文件,后续标定过程中需要使用。

target_type: 'aprilgrid'     #gridtype 
tagCols: 6     #number of apriltags 
tagRows: 6     #number of apriltags 
tagSize: 0.088     #size of apriltag, edge to edge [m] 
tagSpacing: 0.3     #ratio of space between tags to tagSize 
                    #example: tagSize=2m,spacing=0.5m --> tagSpacing=0.25[-]

2.数据包的录制

包含各个轴的运动即可。在录制图像topic的同时录制imu的topic,之后imu和相机标定时不需要再次录制。

3.运行

kalibr_calibrate_cameras --bag [filename.bag] --topics [TOPIC_0 ... TOPIC_N] --models [MODEL_0 ... MODEL_N] --target [target.yaml]

models:相机模型

包括相机模型和畸变模型两种。支持的模型包括:

相机模型

  • pinhole camera model (pinhole):(intrinsics vector: [fu fv pu pv])
  • omnidirectional camera model (omni):(intrinsics vector: [xi fu fv pu pv])
  • double sphere camera model (ds): (intrinsics vector: [xi alpha fu fv pu pv])
  • extended unified camera model (eucm): (intrinsics vector: [alpha beta fu fv pu pv])

畸变模型

  • radial-tangential (radtan):(distortion_coeffs: [k1 k2 r1 r2])
  • equidistant (equi):(distortion_coeffs: [k1 k2 k3 k4])
  • fov (fov):(distortion_coeffs: [w])
  • none (none):(distortion_coeffs: [])

二、相机和IMU的标定

1.标定前准备

标定板、标定板的参数信息、相机的内参、IMU的内参、数据包

数据包录制时要仅可能的激活IMU的所有轴。

2.运行

kalibr_calibrate_imu_camera --bag [filename.bag] --cam [camchain.yaml] --imu [imu.yaml] --target [target.yaml]

之后就等待标定结果就可以了。(PS:运行时间非常非常久,终端没反应不是卡了而是在非常缓慢的标定计算)

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

Kalibr工具进行相机IMU标定 的相关文章

  • 基于CNN(LeNet)的垃圾分类(C语言实现)

    基于CNN xff08 LeNet xff09 的垃圾分类 xff08 C语言实现CNN算子 xff09 一 先使用python训练模型二 提取参数提取模型参数提取图片 三 编写CNN算子在windows中实现在FPGA中实现 xff0c
  • Zigzag (最长交替子序列)

    Zigzag xff08 最长交替子序列 xff09 Your Ph D thesis on properties of integer sequences is coming along nicely Each chapter is on
  • educoder Git入门之本地版本库

    第1关 xff1a 本地版本库创建 创建gitTraining文件夹 mkdir gitTraining 进入gitTraining文件夹 cd gitTraining 请添加初始化本地Git仓库的命令 Begin git init End
  • Docker进阶之Dockerfile

    Dockerfile是一个文本格式的配置文件 xff0c 我们可以使用Dockerfile来快速创建自定义的镜像 Dockerfile内部包含了一条条的指令 xff0c 每一条指令构建一层 xff0c 因此每一条指令应当描述该层如何构建 层
  • 论激光雷达在无人车领域的作用和前景

    激光雷达 xff0c 是以发射激光束探测目标的位置 速度等特征量的雷达系统 其工作原理是向目标发射探测信号 激光束 然后将接收到的从目标反射回来的信号与发射信号进行比较 作适当处理后 就可获得目标的有关信息 如目标距离 方位 高度 速度 姿
  • Docker(三):镜像的使用

    镜像使用 当运行容器时 xff0c 使用的镜像如果在本地中不存在 xff0c docker 就会自动从 docker 镜像仓库中下载 xff0c 默认是从 Docker Hub 公共镜像源下载 操作命令说明检索docker search 关
  • TypeError: Expected Ptr<cv::UMat> for argument ‘img‘

    我创建了一个numpy矩阵并使用轴对换来对多个维度进行变换 xff0c 然后在上面画圆 xff1a import cv2 import numpy as np image 61 np zeros 3 255 255 dtype 61 np
  • Ubuntu系统中基于Docker的OpenVINO™开发环境搭建指南

    概要 OpenVINO 是英特尔推出的一套免费的开发套件 xff0c 旨在帮助开发者和数据科学家们加速他们在视觉计算以及深度学习的推理和部署方面的工作 OpenVINO 通过异构计算可以充分发挥英特尔硬件平台 xff08 包括CPU xff
  • docker build 镜像时报错 make: /bin/sh: Operation not permitted

    docker build 镜像时报错 make bin sh Operation not permitted 前言版本解决办法升级参考官方说明 xff1a 卸载旧版本安装 repository安装 docker启动重新构建 前言 因为某个原
  • 为什么数组变成tensor精度只有四位?

    64 TOC为什么数组变成tensor精度只有四位 xff1f 原数据为list 3 316344738006592 xff0c 1 777564764 xff0c xff0c 1 104965329170227 list变成tensor
  • Hadoop系列-HDFS工作流程和原理详解(九)

    一 HDFS 数据读写流程 HDFS 是 Hadoop 生态里面的数据存储层 xff0c 它是一个具有容错性的非常可靠的分布式文件系统 HDFS 以主从 xff08 Master Slave xff09 架构的方式工作 xff0c Name
  • 正则表达式(判断中文,判断英文字母、下划线、数字)

    1 判断输入得内容为中文 span class token keyword var span str span class token operator 61 span span class token keyword this span
  • echarts 折线图,可滑动

    1 主要得展示 折线图 xff0c x轴可以滑动 xff0c 如图 详细代码如下 xff1a span class token operator lt span template span class token operator gt s
  • echarts x轴一个数据;y轴左边数值,右边百分比。(柱状图)

    大概样子如下 xff1a 配置代码如下 xff1a span class token keyword export span span class token keyword const span span class token func
  • vue自定义指令clickoutside

    npm install vue click outside 方法一 xff1a span class token operator lt span span v span class token operator span clickout
  • canvas四个点画矩形,中垂线,以及顶点拖拽

    场景 xff1a 已知四个点 xff0c 画出矩形 xff0c 并且计算出每个中垂线 xff0c 并加箭头 xff0c 标识符 xff0c 点击四个顶点还能拖拽进行变动 vue span class token operator lt sp
  • promise.all([]).then(() => {}).catch(() => {})异步处理

    场景 xff1a 在同一时间 xff0c 同时调用相同的接口 xff08 唯一不同 xff1a 接口传参不一样 xff09 简单写法 xff1a Promise span class token punctuation span span
  • git 修改远程仓库地址,用户名,地址

    在git上新建项目 然后讲本地原来的git clone地址更换成新建仓库的clone 地址 方法一 xff1a 1 删除本地仓库当前关联的无效远程地址 xff0c 再为本地仓库添加新的远程仓库地址 git remote span class
  • Docker Dockerfile

    什么是Dockerfile Dockerfile 是一个用来构建镜像的文本文件 xff0c 文本内容包含了一条条构建镜像所需的指令和说明 使用Dockerfile定制镜像 仅讲解如何运行Dockerfile 文件来定制一个镜像 1 定制一个
  • websocket

    在WebSocket API中 xff0c 浏览器和服务器只需要完成一次握手 xff0c 两者之间就直接可以创建持久性的连接 xff0c 并进行双向数据传输 webSocket方法 ws send 向服务器发送数据ws close 关闭连接

随机推荐

  • 搭建electron-vue下

    搭建electron vue下 npm install 后续问题Version 9 of Highlight js has reached EOL npm run dev 后续ReferenceError Unknown plugin 34
  • Centos 7 安装VNC步骤

    Centos7 安装 VNC 步骤 一 安装 1 以root 用户运行以下命令来安装vncserver yum install tigervnc server 2 同样运行以下命令来安装vncviewer yum install vnc 3
  • [记录]Ubuntu18.04使用桥接模式实现上网

    前言 一般在虚拟机中采用NAT模式就可以上网 其最大优势是虚拟系统接入互联网非常简单 xff0c 你不需要进行任何其他的配置 xff0c 只需要宿主机器能访问互联网即可 但是这种方式 虚拟机可以通过主机 单向访问 网络上的其他主机 xff0
  • Linux-浅谈系统调用

    我们开始研究操作系统中一个非常重要的概念 系统调用 大多数程序员在写程序时都很难离开系统调用 xff0c 与系统调用打交道的方式是通过库函数的方式 xff0c 库函数用来把系统调用给封装起来 xff0c 要理解系统调用的概念还需要一些储备知
  • 可复用软件模块的接口设计

    在上一篇博客中模块化代码的基本写法举例 青衫客36的博客 CSDN博客 xff0c 我们给出了模块化代码的基本写法 xff0c 本文我们继续探讨对menu程序进行改造 xff0c 使之成为可复用软件模块 下面先引入可重用软件的一些相关概念
  • Makefile实验

    一 准备C程序 1 input h ifndef INPUT H define INPUT H void input int int a int b endif 2 input c include lt stdio h gt include
  • CSAPPLab2- BombLab

    写在前面 xff1a 本次实验对GDB的使用提出了较高要求 xff0c 对GDB调试不了解的读者可以先移步到笔者的这篇博客 GDB调试实验 青衫客36的博客 CSDN博客 由于老师发布的压缩包中有48个bomb代码包 xff0c 根据 学号
  • 代码优化- 前端优化

    常量折叠 基本思想 xff1a 在编译期间计算表达式的值 xff08 编译时静态计算 xff09 例如 xff1a a 61 3 43 5 61 61 gt a 61 8 xff0c if true amp amp false 61 61
  • Haffman编码(算法导论)

    上次算法导论课讲到了Haffman树 xff0c 笔者惊叹于Haffman编码的压缩效果 xff0c 故想自己亲自动手尝试写一个极简的Haffman压缩程序 首先 xff0c 我们来了解一下什么是Haffman编码 Haffman编码 赫夫
  • C++ Primer- 变量声明和定义的关系

    为了允许把程序拆分成多个逻辑部分来编写 xff0c C 43 43 语言支持分离式编译 xff08 separatecompilation xff09 机制 xff0c 该机制允许将程序分割为若干个文件 xff0c 每个文件可被独立编译 如
  • Compiler Lab2- 自制极简编译器

    笔者实现的这个超级迷你版编译器 xff08 词法分析 语法分析 生成中间代码 xff08 cpp xff09 xff09 仅支持四则运算 xff0c 功能真的是非常非常简单 xff0c 不过其中的流程 xff08 词法分析 gt 语法分析
  • 贪心算法实现最佳任务调度实验

    题目描述 一个单位时间任务是恰好需要一个单位时间完成的任务 给定一个单位时间任务的有限集S 关于S 的一个时间表用于描述S 中单位时间任务的执行次序 时间表中第1 个任务从时间0 开始执行直至时间1 结束 xff0c 第2 个任务从时间1
  • 在CentOS安装CMake

    你或许听过好几种 Make 工具 xff0c 例如 GNU Make xff0c QT 的 qmake xff0c 微软的 MS nmake xff0c BSD Make xff08 pmake xff09 xff0c Makepp xff
  • CSAPP Lab3- bufbomb

    实验目标 xff08 1 xff09 掌握函数调用时的栈帧结构 xff08 2 xff09 利用输入缓冲区的溢出漏洞 xff0c 将攻击代码嵌入当前程序的栈帧中 xff0c 使得程序执行我们所期望的过程 实验代码 xff08 1 xff09
  • 金蝶部署SpringBoot+vue项目总结

    金蝶部署SpringBoot 43 vue项目文章目录 文章目录 金蝶部署SpringBoot 43 vue项目文章目录前言一 金蝶部署中两个重要概念1 域2 应用基础上下文 二 部署准备1 前后台打包2 部署过程3 部署成功后的注意事项
  • Gazebo-Realsense 编译问题解决

    64 Gazebo仿真 Realsense 编译问题解决 参考 这篇文章配置 首先git clone代码到你的工作空间 git clone https github com nilseuropa realsense ros gazebo g
  • docker快捷添加用户组,远离sudo困扰

    使用docker命令时 xff0c 总是需要root权限 xff0c 同时还要验证密码 xff0c 过于麻烦便将root添加进docker分组 xff0c 远离sudo困扰 span class token comment 创建docker
  • 全注解下的SpringIoc 续4-条件装配bean

    Spring Boot默认启动时会加载bean xff0c 如果加载失败 xff0c 则应用就会启动失败 但是部分场景下 xff0c 我们希望某个bean只有满足一定的条件下 xff0c 才允许Spring Boot加载 xff0c 所以
  • 卡尔曼滤波结果和图优化的融合

    仅使用卡尔曼滤波结果作为初始值辅助NDT算法的进行 xff0c 并没有进行实际融合 论文地址 算法流程 扩展的卡尔曼滤波融合GPS 惯性测量单元IMU 编码器里程计得到融合后的定位信息 基于3D NDT配准得到激光里程计 建图优化 融合单帧
  • Kalibr工具进行相机IMU标定

    github地址 xff1a https github com ethz asl kalibrWiki文档 xff1a https github com ethz asl kalibr wiki camera imu calibration