IMU误差模型简介及VINS使用说明

2023-05-16

1 IMU误差来源

在这里插入图片描述

2 IMU噪声模型(Noise and Bias)

在这里插入图片描述在这里插入图片描述
kalibr中的imu noise model

参考:https://github.com/ethz-asl/kalibr/wiki/IMU-Noise-Model

这里对IMU的噪声模型进行重新的定义,去除其误差模型中的轴偏差和尺度因子,可以将IMU的噪声模型写为,
在这里插入图片描述在这里插入图片描述1 高斯白噪声

服从高斯分布的一种白噪声,其一阶矩为常数,二阶距随时间会发生变化。一般来说这种噪声是由AD转换器引起的一种外部噪声。
在这里插入图片描述

2 随机游走(这里指零偏Bias)

随机游走是一个离散模型,可以把它看做是一种布朗运动,或者将其称之为维纳过程。该模型可以看做是高斯白噪声的积分。该噪声参数一般是由传感器的内部构造、温度等变化量综合影响下的结果。
在这里插入图片描述

kalibr文档中分别用Additive “White Noise” 和 Bias描述高斯白噪声n和 bias的噪声 的标准差,即下表中的σ,两者的单位(关于单位的问题可以参考这个链接https://github.com/ethz-asl/kalibr/issues/354#issuecomment-979934812):
在这里插入图片描述这个表格中的变量都是continuous-time的,离散形式可以通过下面公式转换:
在这里插入图片描述在这里插入图片描述

3 Allan standard deviation (AD)读取imu内参

在这里插入图片描述读取方法在An introduction to inertial navigation有介绍,原文在下面:
在这里插入图片描述其实上文中读取的是Bias instability(σ_bd,即随机游走的离散形式)和angle random walk(σ_n in Kalibr),但是我们需要是一般是σ_b(连续状态量,也叫random walk in Kalibr)
在这里插入图片描述在这里插入图片描述关于random walk的读取简而言之就是用斜率0.5的直线相切(图中蓝线),然后再t=3s处读取的数值就是σ_b

4 VINS中IMU参数标定及使用说明

注意:

  • imu的噪声分为两种,“White
    Noise”和“Bias”,都有连续时间模型和连续时间模型两种形式,两种模式可以相互转换,这里强调一下有的标定工具输出的是连续型(imu_utils),有的是离散型(kalibr_allan)。另外有的VIO算法需要的是连续性的imu噪声参数,有的是连续型的噪声参数,具体根据代码或单位辨识。

  • Kalibr需要的imu噪声参数的格式。Kalibr需要的噪声参数都是连续时间模型的,单位如下图:
    在这里插入图片描述使用mintar修改的imu_utils进行imu的标定
    说明:
    gaowenliang的imu_utils貌似有单位的问题,然而大神已经很久没出现了,在github的issue有关于单位问题的讨论https://github.com/gaowenliang/imu_utils/issues/36,然后有个叫mintar的大佬把单位问题修改了,把输出的值都改成了连续时间的单位,也开源了,并且使用realsense相机同allan_variance_ros的标定结果做了对比(这个开源算法也是Kalibr推荐的,对比结果在imu_utils的issue里),并且结果很相近,所以算法应该是比较合理正确的。

使用说明
从上述讨论中,表明,标定时录制的数据集都是在imu静止的状态下录制的,但是我们在做imu-cam标定或者是vio的时候,imu都是处于动态运动的状态,所以直接使用我们标定的参数是会出问题的,mintar给了几点说明:

1 The allan variance estimation methods (mintar/imu_utils and ori-drs/allan_variance_ros) estimate a model based on Q, N, B, K, R or at least N (“rate/acceleration white noise”), B (“bias instability”), K (“rate/acceleration random walk”). But all VIO packages and Kalibr just use N and K.
2 The calibration is done under close to ideal circumstances in a static setup. In a dynamic setting, with other factors like temperature changes etc., the noise will be higher.
3 The calibration packages take the average of the axes, but some IMUs have different gyros/accelerometers for different axes, so one should probably use the maximum and not the average to be on the safe side.
4 In my setup, there’s no hardware synchronization between IMU and camera. Maybe using a higher standard deviation for the IMU prevents VINS from trusting the IMU too much and deviating when the real error is from a wrong time synchronization.

另外,在Kalibr的imu noise modelhttps://github.com/ethz-asl/kalibr/wiki/IMU-Noise-Model的介绍的最后也做了一个说明:

It is important to note that the IMU measurement error model used here is derived from a sensor which does not undergo motion, and at constant temperature. Hence scale factor errors and bias variation caused by temperature changes, for example, are not accounted for. So clearly, the model is optimistic. Particularly when using low-cost MEMS IMUs with Kalibr, you may have to increase the noise model parameters to “capture” these errors as well. In other words, if you use directly the “sigmas” obtained from static sensor data, Kalibr will tend to trust your IMU measurements too much, and its solution will not be optimal.
From our experience, for lowest-cost sensors, increasing the noise model parameters by a factor of 10 or more may be necessary. If you use Kalibr with such a device, please give us feedback, such that we can develop specific guidelines, device-specific parameter suggestions, or more advanced methods to determine these parameters.

那么从这个讨论的内容来看,我们标定imu的结果其实不能直接用在vio算法中,最多只能做一个参考吧,在这个基础上做一些放大,10~150。包括在imu-cam的标定过程中,imu的噪声参数也不能直接用imu静态状态下标定的结果。

那校准IMU参数的意义何在呢,在github issue中有人这样解释,我觉得也很合理,有个参考才能更好的手动调节呀

One additional factor—related to what was mentioned about calibrating in static vs running in dynamic conditions—might be that the IMU model used in all these VO / SLAM algorithms is practical, but still simplistic. I.e. it simply doesn’t model many of the effects on the physical device. I’m thinking of temperature-dependent bias, cross-axis sensitivity, etc. All this means that the errors in your model aren’t actually independent and bias-free and one way to deal with it is by increasing the measurement uncertainty to “mask” out the un-modelled behaviour.
But yes, it’s a valid question what’s the point of calibrating the IMU when you just hand-tune the values anyway. I think hand-tuning will always be needed. Calibration can still inform you about the relative quality of different IMUs and thus help when tuning the parameters (e.g. tell you if your values for a new IMU should be higher or lower than for some reference IMU that you know works well).

碎碎念:手动调节好烦索,尝试了很多组数据仍旧没有理想的效果,如果有了解这块的大神,还请多多指教啊 ~

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

IMU误差模型简介及VINS使用说明 的相关文章

  • VINS中陀螺仪零偏的估计

    VINS中关于陀螺仪零偏的初始化估计 对于窗口中得连续两帧 b k b k b k 和 b
  • Ubuntu 18.04 运行PL-VINS

    代码地址 https span class token operator span span class token comment github com cnqiangfu PL VINS span 安装过程出错参考 PL VINS配置
  • VINS-Mono

    文章目录 初始化框架缺点ORB SLAM的Local Map VINS的滑窗 逐次逼近式去畸变给后端提供的特征点信息光流追踪对极约束F去除外点 rejectWithF 特征点均匀化预积分系统初始化初始化时不校正bias a误差卡尔曼滤波误差
  • 在ubuntu20.04上配置VINS_Fusion(亲测有效,一应俱全)

    最近在做科研训练的时候配置了HKUST Aerial Robotics实验室的VINS Fusion代码项目 xff0c 经历了一些编译报错的问题 xff0c 在网上查找的时候博客内容良莠不齐 xff0c 且实质针对性意见不多 xff0c
  • Ubuntu20.04运行Vins-fusion

    因已安装ROS noetic xff0c eigen xff0c opencv及ceres等库 xff0c 这部分环境配置就不细讲 xff0c 直接下载VINS FUSION的代码库 下载编译 cd span class token ope
  • NVIDIA Jetson Xavier NX部署VINS-fusion-GPU

    NVIDIA Jetson Xavier NX部署VINS fusion GPU 一 环境配置 xff08 Ubuntu 18 04 xff09 1 Cuda 10 2的安装 span class token function sudo s
  • 利用 imu_utils 标定 imu

    目录 前言 一 安装 imu utils 二 编译出现的错误 三 操作步骤 四 结果 前言 记录利用 imu utils 标定 imu xff0c 最近在使用imu做导航 xff0c 要对imu进行标定 xff0c 使用标定得到的加速度的噪
  • TX2上布置vins_fusion_gpu指南

    1 参考链接 如果初次安装 xff0c 新的TX2环境 xff0c 请参考文档 https github com arjunskumar vins fusion gpu tx2 nano 2 问题记录 1 xff0c 自己的环境情况 我的环
  • vins中的坐标系变换及g2r函数

    slam中经常会需要表示一个刚体的位姿 例如imu的位姿 xff0c 相机的位姿 首先我们需要在一个刚体上架上一个坐标系 这个坐标系为本体坐标系 怎么架一个坐标系 xff1f imu本身就有规定其本身的x y z轴的方向 相机一般认为 xf
  • VINS-Mono论文笔记(中)

    VINS Mono论文笔记 中 前言1 初始化过程1 1 视觉重构1 2 视觉惯性联合 2 紧耦合的单目VIO系统2 1 公式2 2 imu残差2 3 视觉残差2 4 边缘化残差2 5 针对相机实时帧率的纯运动视觉惯性状态估计器2 6 im
  • VINS-RGBD运行指令

    创建工程VINS RGBD catkin ws 将代码放入src文件夹当中 git clone https github com STAR Center VINS RGBD 进行编译 cd VINS RGBD catkin ws catki
  • VINS-Mono学习(五)——闭环优化4DoF

    这里再重写一边VINS开启的新线程 xff1a 前端图像跟踪后端非线性优化闭环检测闭环优化 闭环优化是跟在闭环检测之后步骤 首先回顾闭环检测的过程 xff1a 1 pose graph node cpp开启process闭环检测线程 xff
  • 【VINS论文翻译】VINS-Mono: A Robust and Versatile Monocular Visual-Inertial State Estimator

    回到目录 写在前面 港科大的VINS Mono作为目前state of the art的开源VIO项目 xff0c 是研究视觉与IMU紧耦合的必读算法 xff0c 网上的论文解读与代码实现也非常丰富 xff08 感谢 xff01 xff09
  • VINS-Mono代码解读——视觉跟踪 feature_trackers

    前言 本文主要介绍VINS的视觉处理前端的视觉跟踪模块 xff08 feature trackers xff09 论文第四章A节 xff08 IV MEASUREMENT PREPROCESSING A Vision Processing
  • cartographer 处理IMU(激光,里程计等)流程

    1 cartographer ros 入口文件 node main cc 入口函数main 如下图 ros init argc argv cartographer node ros start cartographer ros Scoped
  • IMU-Allan方差分析

    使用Allan方差来确定MEMS陀螺仪的噪声参数 陀螺仪测量模型为 使用长时间静止的陀螺仪数据对陀螺仪噪声参数进行分析 上式中 三个噪声参数N 角度随机游走 K 速率随机游走 和B 偏差不稳定性 背景 Allan方差最初由David W A
  • 2021-08-06

    在编译OKVIS中 执行make j8时报错的解决方法 1 根据github上OKVIS的安装步骤一步一步执行 由于github经常进不去 我就进了gitee网站查到OKVIS的安装步骤 参考链接 https gitee com bill4
  • An Introduction for IMU 2 - IMU数据融合与姿态解算

    在上一篇博客中 我们已经介绍了IMU的内部工作原理 以及如何通过Arduino读取MPU6050的数据 虽然可以从DMP直接读取姿态角 但其数据返回的频率相对较低 同时由于DMP库不是开源的 其内部的工作原理 输出姿态角的准确性都不清楚 而
  • 四元素与旋转矩阵

    如何描述三维空间中刚体的旋转 是个有趣的问题 具体地说 就是刚体上的任意一个点P x y z 围绕过原点的轴 i j k 旋转 求旋转后的点P x y z 旋转矩阵 旋转矩阵乘以点P的齐次坐标 得到旋转后的点P 因此旋转矩阵可以描述旋转 x
  • IMU姿态计算

    总述 IMU即惯性测量单元 主要用于对机体的加速度与角速度的测算 使用场景很多 例如 平衡车 惯性导航等等 姿态 姿态角 Euler angles 是用于描述物体在三维空间中的旋转姿态的一种表示方法 它由三个角度组成 通常表示物体绕三个轴

随机推荐

  • STM32F407 Flash操作笔记

    简述 STM32F4XX的闪存擦除方式分为两种 xff1a 扇区擦除 xff08 最小单元16K xff09 和整片擦除 在实际应用中 xff0c 为满足重要信息的存储 xff0c 需将信息存入FLASH中 xff0c 针对以上两种擦除方式
  • STM32 软件按键消抖

    引言 通常按键所用的开关都是机械弹性开关 xff0c 当机械触点断开 闭合时 xff0c 由于机械触点的弹性作用 xff0c 一个按键开关在闭合时不会马上就稳定的接通 xff0c 在断开时也不会一下子彻底断开 xff0c 而是在闭合和断开的
  • STM32 中断函数SysTick_Handler理解

    目的 滴答定时器整理 xff08 STM32F103 xff09 用了一段时间的滴答定时器 xff0c 突然忘记其中配置方法 xff0c 重新翻阅手册及博文 xff0c 在此记录备忘 SysTick的重装寄存器决定了定时器频率 xff0c
  • srilm的安装与使用(标贝科技)

    欢迎体验标贝语音开放平台 地址 xff1a https ai data baker com source 61 qaz123 xff08 注 xff1a 填写邀请码hi25d7 xff0c 每日免费调用量还可以翻倍 xff09 一 简介 简
  • 信号强度(RSSI)知识整理

    为什么无线信号 xff08 RSSI xff09 是负值 答 xff1a 其实归根到底为什么接收的无线信号是负值 xff0c 这样子是不是容易理解多了 因为无线信号多为mW级别 xff0c 所以对它进行了极化 xff0c 转化为dBm而已
  • JLink 警告:The connected J-Link is defective,Proper operation cannot be guaranteed.

    概述 安装j link较新版本 xff08 JLink Windows V632b exe xff09 的驱动 xff0c 每烧录一次程序报一次警告 xff0c 警告如下 xff1a The connected J Link is defe
  • [PYTHON]修改当前进程环境变量

    myenv 61 os environ myenv 34 PATH 34 61 34 xxxx 34 43 myenv 34 PATH 34 注意 xff1a 此方法仅在python的当前进程中生效 xff0c 如果此时通过subproce
  • SO库版本号管理

    一 输入版本号 功能由Cmake软件实现 1 建立一个空白txt xff0c 重命名为config h in 输入代码 xff1a defineMAJOR VERSION 64 MAJOR VERSION 64 defineMINOR VE
  • VINS-MONO实践

    1 配置ros xff08 运行VINS需要 xff0c 记得换源 xff0c 会快一些 xff09 sudo apt get install ros melodic cv bridge ros melodic tf ros melodic
  • EuRoC数据集介绍

    数据集官网 xff1a https projects asl ethz ch datasets doku php id 61 kmavvisualinertialdatasets EuRoC数据集 微型飞行器 xff08 MAV xff09
  • TUM数据集

    TUM数据集下载链接 https vision in tum de data datasets rgbd dataset download https vision in tum de data datasets visual inerti
  • evo评测VINS-MONO---指标解析、算法精度分析(数据集)

    上篇博文已通过代码修改 数据格式转换 数据测试实现使用evo评测VINS MONO xff0c 该篇将详细介绍evo评测出的数据指标 xff0c 以及VINS MONO在数据集下的精度情况 EVO评价指标介绍 绝对轨迹误差 xff08 AT
  • ZED2相机说明书

    经前期调研及摄像头参数对比 xff0c 最终选择STEREOLABS公司的ZED2双目立体摄像头作为后期VINS系统的硬件平台 xff0c 下面先给出ZED2 的产品说明书 产品特点 1 空间目标检测 根据空间环境检测和跟踪对象 通过结合A
  • 解决NVIDIA-SMI has failed because it couldn‘t communicate with the NVIDIA driver

    问题解决 终端输入 xff1a nvidia smi NVIDIA span class token operator span SMI has failed because it couldn span class token numbe
  • Mysql 事务(标贝科技)

    文章目录 事务InnoDB对ACID的支持隔离级别不同隔离级别下读读取数据可能出现的情况不可重复读和幻读区别 redo log xff08 共享表空间 xff09 redo log block刷redo log策略 xff1a innodb
  • Ubuntu20.04运行Vins-fusion

    因已安装ROS noetic xff0c eigen xff0c opencv及ceres等库 xff0c 这部分环境配置就不细讲 xff0c 直接下载VINS FUSION的代码库 下载编译 cd span class token ope
  • 坐标系之间的转换关系(ECEF、LLA、ENU)

    一 坐标系简介 1 ECEF坐标系 也叫地心地固直角坐标系 其原点为地球的质心 xff0c x轴延伸通过本初子午线 xff08 0度经度 xff09 和赤道 xff08 0deglatitude xff09 的交点 z轴延伸通过的北极 xf
  • Python画图常用的颜色及标识

    matplotlib中color可用的颜色 xff1a aliceblue F0F8FF antiquewhite FAEBD7 aqua 00FFFF aquamarine 7FFFD4 azure F0FFFF beige F5F5DC
  • .npy文件打开方式

    在用evo评测slam算法定位精度时 xff0c 使用 save results a zip 生成的结果中包含的 npy文件 xff0c 如果要查看里面详细的数值 xff0c 则可通过以下方式打开文件并查看 1 xff09 找到要查看的 n
  • IMU误差模型简介及VINS使用说明

    1 IMU误差来源 2 IMU噪声模型 Noise and Bias kalibr中的imu noise model 参考 xff1a https github com ethz asl kalibr wiki IMU Noise Mode