【学习总结】Kalibr标定相机与IMU

2023-05-16

本文仅用于记录自己学习过程。

使用方法

Kalibr包括:相机内参,多相机外参, (已知IMU和相机内参的)相机与IMU标定,以及扩展Kalibr支持IMU内参标定。

当已知IMU内参和相机内参后,使用按照指定方式录制的rosbag,用如下指令进行标定:

rosrun kalibr kalibr_calibrate_imu_camera \
	--bag /home/larrydong/imu_ws/data/imu_cam.bag \
	--cam /home/larrydong/imu_ws/data/imu_cam-camchain.yaml \
	--imu /home/larrydong/imu_ws/data/imu.yaml \
	--target /home/larrydong/imu_ws/data/aprilgrid.yaml

可以看到,输入参数包括:rosbag,相机内参,imu内参,和棋盘格配置文件。

内参获取

相机内参获取

个人实际使用时,首先将相机内参单独标定,以获得xxx-camchain.yaml配置文件,可以采用kalibr的代码,但它这个代码初始化时总有些问题,无法收敛。因此我采用matlab先进行标定,再将matlab标定的参数修改camchain.yaml配置文件。

IMU内参标定

IMU内参标定理论上可以用Kalibr-extend进行,但这里采用另一个工具,imu_utils进行标定。详见:【学习记录】IMU内参标定:Allan方差与代码。同样,标定后修改imu.yaml配置文件。

运行过程与结果

可以看到进行了一个优化,
在这里插入图片描述最后优化得到了最终结果,误差还是蛮大的(毕竟相机和IMU都比较差),得到了IMU到camera的坐标系变换:旋转矩阵基本是 [ 1 , 0 , 0 ; 0 , 0 , − 1 ; 0 , 1 , 0 ] [1,0,0; 0,0,-1; 0,1,0] [1,0,0;0,0,1;0,1,0],即绕x轴正向转了90°:
在这里插入图片描述

在这里插入图片描述

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

【学习总结】Kalibr标定相机与IMU 的相关文章

  • 详解HTTP中的摘要认证机制

    在上一期http blog csdn net tenfyguo article details 6167190中笔者较为详细的介绍了HTTPBasic认证在apache下的配置 xff0c 通过简单的实验演示了HTTP Basic认证的基本
  • 【ubuntu(Linux)安装Vs code并配置c++编译及cmake多文件编译】

    目录标题 VS code配置c 43 43 编译环境1 Linux系统安装2 在Ubuntu中安装VS code2 1 首先下载对应系统的VS code安装包2 2 安装VS code 3 在ubuntu系统下的vscode中配置g 43
  • yolo v4安装与使用

    yolo v4安装与使用 GPU版本 系统环境 Ubuntu18 04 cuda11 0 cudnn8 0 4 opencv3 4 4 相关链接 官网链接 xff1a https github com AlexeyAB darknet yo
  • Jetson NX克隆与烧录镜像

    前言 本文主要说明如何在Ubuntu系统上备份Jetson NX镜像 xff0c 并烧录镜像到多台NX开发板上 我的NX的系统是在SD卡上的 xff0c 所以这个方法只适用于系统装在SD卡上的开发板 参考链接 https blog csdn
  • ros2 CMakeLists.txt与packages.xml写法

    注 xff1a 尽量使用ament cmake auto来编写cmakelists txt文件 xff0c 依赖的程序包在packages xml文件中用 lt depend gt nav msgs lt depend gt 的形式声明 x
  • TX2 ubuntu18.04 改固定IP地址 eth0无本机IP

    注意事项 我是在TX2 ubuntu18 04上改的固定IP地址 其他主机上ubuntu18 04好像需要另一种方法 xff0c 需要你自己去百度上搜 参考博客 https blog csdn net a13662080711 articl
  • MFC与.NET混合编程

    1 xff1a VS2008 建立 MFC程序 xff1b 2 xff1a Alt 43 F7 设置 xff1a 公共语言运行库支持 xff08 选择 xff09 公共语言运行库支持 clr xff1b 3 xff1a 添加 Net相应库
  • 在TX2(Jetpack4.2+kernel4.9.140+librealsense v2.22)上安装D435i驱动

    在TX2 xff08 Jetpack4 2 43 kernel4 9 140 43 librealsense v2 22 xff09 上安装D435i驱动 前言准备工作系统版本参考资料 操作步骤 前言 用了很长时间 xff0c 参考了很多博
  • ROS发布静态tf变换

    方法一 xff1a include lt ros ros h gt include lt tf transform broadcaster h gt int main int argc char argv ros init argc arg
  • ROS常见问题及解决方法

    1 undefined reference to 96 tf TransformBroadcaster TransformBroadcaster 问题描述 xff1a CMakeFiles imu data dir src imu data
  • TX2制作镜像并烧写镜像

    前言 本文简要介绍TX2如何制作镜像并烧写镜像 xff0c 如果读者一开始是通过sdkmanager安装的TX2系统可直接进入笔记本中 nvidia nvidia sdk JetPack 4 2 Linux P3310 Linux for
  • php写守护进程(Daemon)

    守护进程 xff08 Daemon xff09 是运行在后台的一种特殊进程 它独立于控制终端并且周期性地执行某种任务或等待处理某些发生的事件 守护进程是一种很有用的进程 php也可以实现守护进程的功能 1 基本概念 进程 每个进程都有一个父
  • clang-format 说明

    转载自 xff1a https www cnblogs com lepeCoder p 8032178 html BasedOnStyle string 这个样式用于所有没有特殊指定配置的选项 这个选项仅在clang format配置中支持
  • 路径规划

    转载 xff1a 链接 xff1a https www jianshu com p f3bab4e119cf D算法 xff0c Dijkstra算法 两个表 xff1a closed表与open表 closed表用于记录已访问过的节点 x
  • awk 筛选并计算时间

    grep 39 filter cost time 39 log file awk F 39 filtered route count 39 39 print 2 39 awk F 39 39 39 print 1 39 awk 39 BEG
  • 忽略批处理中的pause命令

    当存在一个批处理文件 run bat xff0c 其中 xff1a 64 echo 开始暂停 pause 64 echo 暂停结束 当我们执行这个run bat文件时 xff0c 运行到pause会提示需要按任意键继续 xff0c 并且命令
  • BullseyeCoverage 代码覆盖度检查工具

    昨日又有同事问我 BullseyeCoverage 的使用方法 xff0c 由于时间久远 xff0c 有些遗忘 xff0c 只后悔当初为什么没有整理记录下来 xff0c 只好重新查阅了很多文档 今日整理下比较重要的知识 xff0c 方便以后
  • 用于词义消岐的Lesk算法

    该算法由Michael E Lesk于1986年提出 xff0c 是一个基于词典的词义消岐方法 该算法认为 xff1a 一个词在词典中的词义解释与该词所在句子具有相似性 这种相似性可以由相同单词的个数来表示 xff0c 比如 cone 和
  • 通过cmake打印CMakeLists.txt中的宏

    转 cmake中宏的使用 原文路径 https blog csdn net qq 29573053 article details 80392441 首先贴一个例子进行分析 set var 34 ABC 34 macro Moo arg m
  • undefined reference to `vtable for XXXXX`

    vtable 表示的是虚表 这个错误出现时 请检查你的父类所有虚函数是否实现 或者子类是否把父类的虚函数都处理完 注意 析构函数也算

随机推荐

  • CMakeLists.txt ----find_package

    在linux平台下编译程序的时候通常都会使用到CMakeLists txt来制定编译规则 在查找需要链接的lib时候 通常会使用到find package 记录一下我之前用到的地方 find package 之后 最好到FindXXX cm
  • opencv学习笔记1 opencv安装及配置 一劳永逸不需要每次都重新配置

    opencv2 4 9地址 xff1a https sourceforge net projects opencvlibrary files opencv win 2 4 9 opencv 2 4 9 exe download vs2013
  • 【Linux学习笔记】关于ubuntu开机菜单栏和任务栏不见了的有效解决方法

    一 问题描述 ubuntu开机只有桌面 xff0c 没有菜单栏和任务栏 xff0c 如下图 xff1a 二 问题解决 刚学习ubuntu xff0c 总有些像我这样不折腾就不舒服的人 xff0c 今天改了一下主题 xff0c 图标什么的 x
  • 【数据结构与算法】深入浅出递归和迭代的通用转换思想

    深入浅出递归和迭代的通用转换思想 一般来说 xff0c 能用迭代的地方就不要用递归 xff01 理论上讲 xff0c 所有的递归和迭代之间都能相互转换 xff01 刷题碰到 一天一道LeetCode 130 Surrounded Regio
  • 【unix网络编程第三版】阅读笔记(二):套接字编程简介

    unp第二章主要将了TCP和UDP的简介 xff0c 这些在 TCP IP详解 和 计算机网络 等书中有很多细致的讲解 xff0c 可以参考本人的这篇博客 计算机网络 第五版 阅读笔记之五 xff1a 运输层 xff0c 这篇博客就不再赘述
  • 带你深入理解STL之Deque容器

    在介绍STL的deque的容器之前 xff0c 我们先来总结一下vector和list的优缺点 vector在内存中是分配一段连续的内存空间进行存储 xff0c 其迭代器采用原生指针即可 xff0c 因此其支持随机访问和存储 xff0c 支
  • 带你深入理解STL之Set和Map

    在上一篇博客 带你深入理解STL之RBTree中 xff0c 讲到了STL中关于红黑树的实现 xff0c 理解起来比较复杂 xff0c 正所谓前人种树 xff0c 后人乘凉 xff0c RBTree把树都种好了 xff0c 接下来就该set
  • 一个小时开发的直播推拉流软件来了

    一 简介 目前市面上直播推流的软件有很多 xff0c 拉流也很常见 近期因为业务需要 xff0c 需要搭建一整套服务端推流 xff0c 客户端拉流的程序 随即进行了展开研究 xff0c 花了一个小时做了个基于winfrom桌面版的推拉流软件
  • Redis源码剖析--字符串t_string

    前面一直在分析Redis的底层数据结构 xff0c Redis利用这些底层结构设计了它面向用户可见的五种数据结构 xff0c 字符串 哈希 xff0c 链表 xff0c 集合和有序集合 xff0c 然后用redisObject对这五种结构进
  • Redis源码剖析--快速列表quicklist

    在RedisObject这一篇博客中 xff0c 有介绍到list结构的底层编码类型有OBJ ENCODING QUICKLIST xff0c 当时就发现这个底层数据结构被我遗漏了 昨天花了点时间补了补这个知识 xff0c 看完发现这货就跟
  • Redis源码剖析--列表list

    上一篇博客Redis源码剖析 快速列表 带大家一起剖析了quicklist这个底层数据结构的实现原理 Redis对外开放的列表list结构就是采用quicklist作为底层实现 xff08 在新版本的Redis源码中 xff0c 不再采用z
  • PX4二次开发(一:PX4架构)

    概念 本节包含有关PX4系统架构和其他核心概念的主题 目录 PX4架构 PX4飞行栈架构 事件接口 飞行模式 飞行任务 控制分配 xff08 混控Mixing xff09 PWM限制状态机 系统启动 PX4 SD卡布局 PX4系统架构 以下
  • ssh登录警告 WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED!

    1 ssh远程登录警告提示信息如下 xff1a span class token function ssh span th 64 192 168 162 136 64 64 64 64 64 64 64 64 64 64 64 64 64
  • 在Mac上使用Dronekit与SITL做飞行程序的模拟调试

    背景 无人机的项目快要中期答辩了 xff0c 为了在地面站 xff08 电脑 xff09 控制无人机 xff0c 我们选择DroneKit来进行代码的书写 DroneKit是一个专门用于控制无人机的Python库 xff0c 使用这个API
  • 敏捷教练的十种能力

    1 具备神奇的 读懂一个房间 的能力 只要走进一个房间 xff0c 就能判断出不在的过程中 xff0c 房间里发生了什么事情 xff0c 能立即读出空气中蕴含的情绪 xff0c 从而判断是否一切正常 xff1b 2 关心人本身胜过关心产品
  • kubernetes: HPA解析

    什么是HPA Horizontal Pod Autoscaling可以根据指标自动伸缩一个Replication Controller Deployment 或者Replica Set中的Pod数量 HPA的工作模型 有哪些指标 目前主要分
  • ROS中生成CameraInfo消息

    前言 由于某个第三方代码需要接受CameraInfo消息 xff0c 我换了一个相机以后 xff0c 需要自己发布CameraInfo消息 网上搜了半天 xff0c 很少有介绍CameraInfo这些数据都是怎么来的的资料 xff0c 可能
  • OpenCV+aruco 生成标定格与相机位姿计算

    仅用于记录自己使用aruco过程中遇到的问题与解决方法 0 参考资料 github一个参考 xff1a https github com opencv opencv contrib blob master modules aruco sam
  • 计算机和控制领域SCI收录期刊及其影响因子

    来源 xff1a http hi baidu com daren007 blog item 0605ed97b1c50e6a55fb9608 html 031 Computer Applications amp Cybernetics No
  • 【学习总结】Kalibr标定相机与IMU

    本文仅用于记录自己学习过程 使用方法 Kalibr包括 xff1a 相机内参 xff0c 多相机外参 xff0c 已知IMU和相机内参的 相机与IMU标定 xff0c 以及扩展Kalibr支持IMU内参标定 当已知IMU内参和相机内参后 x