从零手写VIO-IMU传感器

IMU误差模型

误差分类

  • 加速度计和陀螺仪的误差可以分为:确定性误差,随机误差。

  • 确定性误差可以事先标定确定,包括:bias,scale ...

  • 随机误差通常假设噪声服从高斯分布,包括:高斯白噪声,bias随机游走...

确定性误差

Bias

理论上,当没有外部作用时,IMU传感器的输出应该为0。但是,实际数据存在一个偏置b。加速度计bias对位姿估计的影响:

Scale

scale可以看成是实际数据和传感器输出值之间的比值。

Nonorthogonality/Misalignment Errors

多轴IMU传感器制作的时候,有制作工艺的问题,会使得xyz轴可能不垂直,如下图所示。

其他确定性误差

  • Run-to-Run Bias/Scale Factor

  • In Run (Stability) Bias/Scale Factor

  • Temperature-Dependent Bias/Scale Factor

  • ...

六面法标定加速度

六面法标定加速度bias和scale factor

六面法是指将加速度计的3个轴分别朝上或者朝下水平放置一段时间,采集6个面的数据完成标定。

如果各个轴都是正交的,那很容易得到bias和scale:

其中,l为加速度计某个轴的测量值,g为当地的重力加速度。

考虑轴间误差的时候,实际加速度和测量值之间的关系为:

水平静止放置6面的时候,加速度的理论值为

对应的测量矩阵L为:

利用最小二乘就能够把12个变量求出来

六面法标定陀螺仪bias和scale factor

和加速度计六面法不同的是,陀螺仪的真实值由高精度转台提供,这里的6面是指各个轴顺时针和逆时针旋转。

温度相关的参数的标定

标定方法

  • 目的:这个标定的主要目的是对传感器估计的bias和scale进行温度补偿,获取不同温度时bias和scale的值,绘制成曲线。

两种标定方法:

  • soak method:控制恒温室的温度值,然后读取传感器数值进行标定

  • ramp method:记录一段时间内线性升温和降温时传感器的数据来进行标定。

IMU随机误差

高斯白噪声

IMU数据连续时间上受到一个均值为0,方差为,各个时刻之间相互独立的高斯过程:

其中表示狄拉克函数

实际上,IMU传感器获取的数据为离散采样,离散和连续高斯白噪声的方差之间存在如下转换关系:

其中

也就是说高斯白噪声的连续时间到离散时间之间差一个, 是传感器的采样时间。

Bias随机游走

通常用维纳过程(wiener process)来建模bias随时间连续变化的过程,离散时间下称之为随机游走。

其中是方差为1的白噪声

同样,离散和连续时间的转换

其中:

bias随机游走的噪声方差从连续时间到离散之间需要乘以

IMU随机误差的标定

艾伦方差标定(random walk noise)

Allan方差法是20世纪60年代由美国国家标准局的David Allan提出的,它是一种基于时域的分析方法。

具体的流程如下:

  1. 保持传感器绝对静止获取数据

  1. 对数据进行分段,设定时间段的时长,如下图所示

  1. 将传感器数据按照时间段进行平均

  1. 计算方差,绘制艾伦曲线

得到的艾伦曲线如下图所示

Allan方差的验证

仿真数据

制作一个仿真数据集。设定,加速度的高斯白噪声方差设定为0.019,陀螺仪的高斯白噪声方差为0.015.加速度bias的随机游走噪声方差设定为,陀螺仪的bias随机游走噪声设定为

加速度的艾伦方差曲线如下:

加速度计的误差模型

导航系G为东北天,

理论测量值为:

如果考虑高斯白噪声,bias,以及尺度因子,则为:

通常假设尺度因子为单位矩阵

陀螺仪的数学模型

陀螺仪的误差模型

考虑尺度因子,高斯白噪声,以及bias,陀螺仪的误差模型如下:

低端传感器,考虑加速度对陀螺仪的影响,即g-灵敏度

陀螺仪受四种噪声的影响分别如下图所示

运动模型离散时间处理

VIO中的IMU模型

忽略scale影响,只考虑白噪声和bias随机游走:

上标g表示gyro,a表示acc,w表示在世界坐标系world,b表示imu机体坐标系body。IMU的真实值为,a,测量值为

P(ose), V(elocity), Q(uaternion)对时间的导数可以写成

连续时间下IMU运动模型

根据上面的导数关系,可以从第i时刻的PVQ,通过对IMU的测量值进行积分,得到第j时刻的PVQ:

运动模型的离散积分——欧拉法

使用欧拉法,即两个相邻时刻k到k+1的位姿是用第k时刻的测量值a,w来计算

其中

运动模型的离散积分——中值法

使用mid-point方法,即两个相邻时刻k到k+1的位姿是用两个时刻的测量值a, 的平均值来计算

其中

IMU数据仿真

仿真

  • 思路1:指定轨迹方程,求一阶导得到速度,角速度,求二阶导得到加速度

  • 思路2:已有pose轨迹,不知道方程,利用B-Spline产生IMU数据

旋转基础知识

旋转积分的几种方式

四元数的形式:

SO3形式:

欧拉角形式:

其中

表示将IMU body坐标系下的角速度转换成欧拉角速度

问题

inertial frame下的一个点旋转到body坐标系,用欧拉角如何表示?仿真数据中旋转矩阵用欧拉角来表示很方便

step1、绕着惯性坐标系的z轴旋转,得到新的坐标系

step2、绕着新坐标系的y轴旋转得到坐标系

step3、绕着新坐标系的x轴旋转得到坐标系就是我们的body坐标系

综合起来,得到

欧拉角速度和body角速度的转换

上式取逆就能得到body rate to euler rate的变换

仿真代码

IMU仿真

  • 定义imu body坐标系的位置方程,椭圆,圆形等等

  • 定义imu body坐标系在惯性系下的欧拉角方程

  • 求导得到角速度,加速度

  • 设置噪声参数,利用imu的模型产生数据

https://github.com/HeYijia/vio_data_simulation

猜你喜欢

转载自blog.csdn.net/qq_34493401/article/details/129293822