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

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).

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

  • 6
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值