VIO标定工具kalibr和imu_utils的使用

2023-05-16

0.参考资料

Kalibr进行IMU+相机的标定 : 这个步骤写的非常好,应该是目前看到的最符合的步骤了。

使用ROS功能包标定相机内参

Kalibr标定camera-IMU详细步骤 : 这篇博客里给出了它的标定结果,重投影像素误差在1pixel之内,感觉也是很大的。另外注意里面提到了如果自己的包开始和结束的时候有拿起和放下的动作,那么要注意把开始和结束的地方截取掉,不要使用。

1.步骤

  1. 标定相机内参
    这个部分可以使用的工具很多,kalibr功能很全,可以单独标定相机内参、IMU零偏以及相机和IMU外参,所以可以使用kalibr来标定相机内参。
    也可以使用其他工具来标定相机内参,比如ROS自带的相机标定工具包,或者自己采集图像使用MATLAB进行标定。

  2. 标定IMU零偏和随机游走
    同理标定IMU也可以使用kalibr进行标定,还有其他工具,比较容易使用的就是港科大的imu_utils

  3. 使用1和2的结果,联合标定相机和IMU外参
    这个就只能使用kalibr了,也就是后面主要的步骤

2.安装

官网安装教程:https://github.com/ethz-asl/kalibr/wiki/installation

注意官网的安装教程不是用catkin_make,而是使用catkin build(注意中间没有_),catkin build应该是catkin_make的一个改进版本,好像是对于有多个ROS功能包的工程进行编译互不影响,而catkin_make则是一起编译,会污染工作空间。(不一定对,具体可以再查一下)

所以下面的安装步骤就严格按照官网安装步骤来进行,我尝试过使用catkin_make命令直接编译,也可以编译成功,但是最后进行标定的时候求解非线性优化一直卡在第一次优化的地方不动,不知道什么原因,所以最好还是按照官网的步骤来安装吧。

下面以Ubuntu 18.04为例:

  1. 确保电脑上已经安装了ROS-melodic
  2. 在当前窗口导出ROS版本环境变量,并且安装catkin-tools,不安装这个是没有catkin build命令的
export ROS1_DISTRO=melodic
sudo apt-get install python-catkin-tools
  1. 安装编译和运行依赖库(注意下面\不用删除,终端会自动识别)
sudo apt-get install -y \
    git wget autoconf automake nano \
    libeigen3-dev libboost-all-dev libsuitesparse-dev \
    doxygen libopencv-dev \
    libpoco-dev libtbb-dev libblas-dev liblapack-dev libv4l-dev

此外还要安装不同版本的Python依赖

sudo apt-get install -y python3-dev python-pip python-scipy \
    python-matplotlib ipython python-wxgtk4.0 python-tk python-igraph
  1. 创建工作空间,注意这个地方很重要,官网教程写了,这个地方一定要配置成Release模式,否则优化会很慢。所以可能之前自己测试的用catkin_make编译优化卡住可能就是没有设置成Release模式。
mkdir -p ~/kalibr_workspace/src
cd ~/kalibr_workspace
export ROS1_DISTRO=melodic
source /opt/ros/$ROS1_DISTRO/setup.bash
catkin init
catkin config --extend /opt/ros/$ROS1_DISTRO
catkin config --merge-devel # Necessary for catkin_tools >= 0.4.
catkin config --cmake-args -DCMAKE_BUILD_TYPE=Release
  1. 下载工程并编译
cd ~/kalibr_workspace/src
git clone https://github.com/ethz-asl/kalibr.git

cd ~/kalibr_workspace/
catkin build -DCMAKE_BUILD_TYPE=Release -j4

最后编译成功截图如下,可以看到catkin build编译的输出配色更丰富,比原来的catkin_make 更好看,科技在进步啊!
在这里插入图片描述

3.官网IMU和camera外参标定

3.1.标定步骤

官网教程:https://github.com/ethz-asl/kalibr/wiki/camera-imu-calibration

The tool must be provided with the following input:

  • –bag filename.bag
    ROS bag containing the image and IMU data
  • –cam camchain.yaml
    intrinsic and extrinsic calibration parameters of the camera system. The output of the multiple-camera-calibration tool can be used here. (see YAML formats)
  • –imu imu.yaml
    contains the IMU statistics and the IMU’s topic (see YAML formats)
  • –target target.yaml
    the calibration target configuration (see Cailbration targets)

The calibration can be run using:

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

总结就是运行标定的程序,需要提供四个文件,分别是ros bag包、相机内参文件、IMU零偏和随机游走文件、标定板的参数文件。

注意:但是上面有一个问题并不能直接运行kalibr_calibrate_imu_camera这个可执行文件,而且我在devel下也没有找到bin目录。所以最后还是用rosrun命令来运行这个节点吧,这里也比较奇怪,刷新了环境变量之后,还是不能用tab键进行补全,只能自己全部打上,例如官网提供的这个IMU和camera标定的实例:

rosrun kalibr kalibr_calibrate_imu_camera --bag imu_april.bag --cam cam_april-camchain.yaml --imu imu_adis16448.yaml --target april_6x6_80x80cm.yaml

3.2.标定结果分析

  • 相机重投影误差如下,可以看到xy轴的像素重投影误差都在1个像素(1 pixel)左右。问题:这个标定误差在多少范围内才算作比较好?

  • 更详细的数值结果可以看输出的pdf报告中的内容,如下所示。这个结果是官方的标定实例结果,所以如果要标定自己的设备,可以把自己的标定结果和这个进行比较,标定误差相差不太大就说明标定结果较为准确。
    在这里插入图片描述

4.运行可能报错

报错:

ImportError: dynamic module does not define module export function (PyInit_libnumpy_eigen)

解决参考:Kalibr标定 中的一个巨大的天坑

5.参考

https://codeantenna.com/a/45xdYtWupm

https://blog.csdn.net/sinat_36502563/article/details/103053292

https://guyuehome.com/34592

https://www.youtube.com/watch?app=desktop&v=puNXsnrYWTY

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

VIO标定工具kalibr和imu_utils的使用 的相关文章

  • KITTI数据集简介与使用

    点击上方 小白学视觉 xff0c 选择加 34 星标 34 或 置顶 重磅干货 xff0c 第一时间送达 摘要 xff1a 本文融合了Are we ready for Autonomous Driving The KITTI Vision

随机推荐

  • DBSCAN聚类算法原理总结

    点击上方 小白学视觉 xff0c 选择加 34 星标 34 或 置顶 重磅干货 xff0c 第一时间送达 DBSCAN是基于密度空间的聚类算法 xff0c 在机器学习和数据挖掘领域有广泛的应用 xff0c 其聚类原理通俗点讲是每个簇类的密度
  • 深度学习GPU最全对比,到底谁才是性价比之王?

    点击上方 小白学视觉 xff0c 选择加 34 星标 34 或 置顶 重磅干货 xff0c 第一时间送达 本文转自AI新媒体量子位 xff08 公众号 ID QbitAI xff09 搞AI xff0c 谁又没有 GPU之惑 xff1f 张
  • 使用卡尔曼滤波器进行对象跟踪时最容易遗漏什么

    点击上方 小白学视觉 xff0c 选择加 34 星标 34 或 置顶 重磅干货 xff0c 第一时间送达 介绍 卡尔曼滤波器是一种复杂的算法 xff0c 在大多数情况下 xff0c 我们在没有完全理解其方程的情况下使用它 当我开始使用卡尔曼
  • 10分钟掌握异常检测

    点击上方 小白学视觉 xff0c 选择加 34 星标 34 或 置顶 重磅干货 xff0c 第一时间送达 异常检测 也称为离群点检测 是检测异常实例的任务 xff0c 异常实例与常规实例非常不同 这些实例称为异常或离群值 xff0c 而正常
  • 根据图像目标深度测试距离

    clc clear close all warning off addpath 39 func 39 计算物体的深度距离 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61
  • SLAM基础环境配置

    点击上方 小白学视觉 xff0c 选择加 34 星标 34 或 置顶 重磅干货 xff0c 第一时间送达 转自知乎作者 xff1a 佳浩 原文链接 xff1a https zhuanlan zhihu com p 385255026 如今
  • 多传感器融合定位:基于滤波的融合方法

    点击上方 小白学视觉 xff0c 选择加 34 星标 34 或 置顶 重磅干货 xff0c 第一时间送达 SLAM 后端的优化方式大体分为滤波和优化 近些年优化越来越成为主流 xff0c 在学习优化之前 xff0c 掌握滤波的工作原理也十分
  • 不要错过!顶会审稿人带读【大语言模型】前沿论文!

    LLaMA GLM 130B SELF INSTRUCT是三篇最新的语言模型相关的论文 xff0c 它们都展示了语言模型在不同方面的创新和突破 这三篇论文都体现了语言模型在双语 大规模 通用 快速 可复现等方面的重要进展 xff0c 对于语
  • 收藏 | 最全深度学习训练过程可视化工具

    点击上方 小白学视觉 xff0c 选择加 34 星标 34 或 置顶 重磅干货 xff0c 第一时间送达 仅作学术分享 xff0c 不代表本公众号立场 xff0c 侵权联系删除 转载于 xff1a 编辑丨极市平台 机器学习实验室 深度学习训
  • 为什么建议大家使用 Linux 开发?真的很很很优雅!

    点击上方 小白学视觉 xff0c 选择加 34 星标 34 或 置顶 重磅干货 xff0c 第一时间送达 编者荐语 Linux 开发不算简单 xff0c 要求同学们掌握的知识广且复杂 xff0c 有一定难度 但是同学们只要静下心来 xff0
  • favicon.ico不显示

    静态页面中 xff0c title前的favicon ico不显示的问题 原因还不详 解决办法 xff1a 清除浏览器缓存或者将favicon ico文件重命名
  • 树莓派系统镜像的下载和烧录

    一 树莓派镜像下载地址 树莓派官网的下载地址 xff1a 树莓派官网 软件安装 可在官网上下载最新的Raspbian树莓派系统 二 树莓派系统镜像烧写 准备 xff1a 一张2G以上的SD卡及读卡器 xff0c 最好是高速卡 xff0c 推
  • TF 坐标变换(已整理)

    文章目录 坐标msg消息静态坐标变换1 C 43 43 实现发布方 demo01 static pub cpp订阅方 demo02 static sub cpp 2 Python实现发布方 demo01 static pub p py订阅方
  • ROS Action通信

    文章目录 自定义action文件 类似msg和service 服务端 action01 server cpp客户端 action02 client cpp服务端 action01 server p py客户端 action02 client
  • 位姿图优化小记2021.10.18

    1 场景描述 现在有一个小车在运动 xff0c 并搭载相机或激光雷达进行建图工作 xff0c 由于SLAM的作用 xff0c 在建图的同时小车也可以进行自身的定位 xff0c 因此建立的地图的参考都是相对于自身坐标系的 xff0c 也就是每
  • 【CRAHNs】CRAHNs网络中多径环境下大规模MIMO接收信道估计均衡技术

    1 软件版本 matlab2017b 2 本算法理论知识 对于大规模MIMO xff0c 通常情况下 xff0c 采用3D MIMO信道来实现 这是由于3D MIMO一般采用大规模的二维天线阵列 xff0c 不仅天线端口数较多 xff0c
  • VINS笔记1——滤波与优化

    1 滤波 1 1 什么是滤波 这里的卡尔曼滤波实际上和信号处理里面的滤波有很大的不同 信号处理里面的滤波 xff0c 假设一个正弦信号有很多毛刺 xff0c 想要对其进行滤波滤除毛刺 信号处理里面的做法是把信号进行FFT变换到频域 xff0
  • Ubuntu设置CMake编译时使用的OpenCV版本

    文章目录 1 方法一 xff1a 统一修改CMakeLists txt文件中的OpenCV版本1 1 具体操作1 2 命令讲解1 2 1 sed命令1 2 2 xargs命令1 2 3 find命令 2 方法二 xff1a 调用cmake命
  • ROS中常见的msg消息类型

    文章目录 1 基本数据类型1 1 三维向量Vector3 msg1 2 标头Header msg1 3 四元数Quaternion msg1 4 空间中三维点Point msg 2 传感器数据类型2 1 Imu msg 3 机器人状态数据类
  • VIO标定工具kalibr和imu_utils的使用

    0 参考资料 Kalibr进行IMU 43 相机的标定 xff1a 这个步骤写的非常好 xff0c 应该是目前看到的最符合的步骤了 使用ROS功能包标定相机内参 Kalibr标定camera IMU详细步骤 xff1a 这篇博客里给出了它的