目录

1. 误差组成

2.内参误差模型

3.内参标定

3.1 基于转台的标定(正向建模)

3.2 基于优化的标定(反向建模)

4. 加速度计雅可比推导


        注:本篇笔记的主体内容来源于对深蓝学院《多传感器融合定位》课程的学习,推荐有一定基础的SLAM初学者学习该课程。

1. 误差组成

        IMU误差通常分为“信号误差”、“内参误差”两类进行分析和处理。信号误差主要关注传感器输出信号中的随机噪声不稳定性特性。具体包括:

(1)量化噪音:模拟信号通过 AD (模数转换) 采集变为离散信号时产生的精度损失。AD 转换的步长越小,量化噪声越小 。

(2)角度/速度随机游走:陀螺仪/加速度计输出中包含的宽带白噪声成分 。

(3)零偏不稳定性:零偏(Bias)在一定范围内随时间的缓慢随机漂移 。其变化无法预估,只能用概率区间描述。时间越长,漂移的可能区间越大 。

(4)速率斜坡:一种趋势性误差,而非随机误差 。通常由环境因素(如温度)引起零位变化,可以通过温补来消除 。

(5)零偏重复性:多次启动时,零偏不相等产生的重复性误差 。多次启动时,零偏不相等产生的重复性误差 。

        这些误差通常难以用确定的解析模型消除,而是通过概率模型(如Allan方差分析)来描述其统计特性。

        内参误差主要关注传感器内部物理结构或电路导致的确定性误差,包括零偏(常值)、刻度系数误差、安装误差等 。这些误差可以通过建立确定的数学模型(误差方程)进行标定和补偿 。

        内参误差如零偏直接参与惯性解算实际的加减乘除计算,而信号误差主要用于决定测量值的权重。

        在预积分过程,信号误差会决定信息矩阵\Sigma ^{-1}的大小,如果 IMU 信号误差很大(白噪声方差大),信息矩阵就会很小,优化器在调整位姿时就会更不信任这段 IMU 预积分的结果,而更倾向于相信视觉或激光雷达的观测。

        在基于滤波的系统中,信号误差的影响更加直接,它构成了过程噪声协方差矩阵Q

        其与观测噪音协方差矩阵R共同决定了卡尔曼增益K,从而决定系统是相信预测还是相信观测。

2.内参误差模型

        (1)零偏。陀螺仪或加速度计输出中的常值偏移。

        加速度计零偏:

        陀螺仪零偏:

        (2)刻度系数误差。器件的输出往往为脉冲值或模数转换得到的值,需要乘以一个刻度系数才能转换成角速度或加速度值,若该系数不准,便存在刻度系数误差。

        加速度计的刻度系数:

K_{a}=\begin{bmatrix} K_{ax} & 0 &0 \\ 0 & K_{ay} &0 \\ 0 & 0& K_{az} \end{bmatrix}

        陀螺仪的刻度系数:

K_{g}=\begin{bmatrix} K_{gx} & 0 &0 \\ 0 & K_{gy} &0 \\ 0 & 0& K_{gz} \end{bmatrix}

        (3)安装误差。如下图所示,b坐标系是正交的imu坐标系,g坐标系的三个轴是分别对应三个陀螺仪。由于加工工艺原因,陀螺仪的三个轴并不正交,而且和b坐标系的轴不重合,二者之间的偏差即为安装误差。

        内参模型的建立应该是基于正交的b系的,比如一个沿着zb轴方向的加速度a_{zb},其会对xa轴、ya轴、za轴造成分量:a_{zb}\cdot cos\theta _{zx}a_{zb}\cdot cos\theta _{zy}a_{zb}\cdot cos\theta _{zz}。其他轴类似,则加速度计的安装误差矩阵:

S_{a}=\begin{bmatrix}cos\theta _{xx}&cos\theta _{yx} &cos\theta _{zx} \\ cos\theta _{xy}& cos\theta _{yy}&cos\theta _{zy}\\ cos\theta _{xz} & cos\theta _{yz} & cos\theta _{zz}\end{bmatrix}

        则各项误差综合在一起后:

A=K_{a}\cdot S_{a}\cdot a+b_{a}

        其中a为传感器的理想输入(真值),A为传感器的读数。因为Sa的对角线元素大小近似为1,并且在标定中对角线的余弦因子会被刻度系数K吸收(K近似单位矩阵),所以加速度计的安装误差矩阵可以简化为:

S_{a}=\begin{bmatrix}0&S_{ayx} &S _{azx} \\ S _{axy}& 0 &S_{azy}\\ S_{axz} & S_{ayz} & 0\end{bmatrix}

        陀螺仪的安装误差矩阵类似:

S_{g}=\begin{bmatrix}0&S_{gyx} &S _{gzx} \\ S _{gxy}& 0 &S_{gzy}\\ S_{gxz} & S_{gyz} & 0\end{bmatrix}

        则可以得到误差模型:

A=K_{a}\cdot \left ( I+ S_{a}\right )\cdot a+b_{a}

        又因为K和S在上等式中会耦合在一起,要对其进行解耦:

        令K_{a}=I+\Delta K_{a},则:

                                        A=\left ( I+\Delta K_{a} \right )\cdot \left ( I+ S_{a}\right )\cdot a+b_{a}

                                        A=\left ( I+\Delta K_{a}+ S_{a}+\Delta K_{a}\cdot S_{a}\right )\cdot a+b_{a}   

        忽略二阶小量\Delta K_{a}\cdot S_{a}

                                        A=\left ( I+\Delta K_{a}+ S_{a}\right )\cdot a+b_{a}

                                        A=\left ( K_{a}+ S_{a}\right )\cdot a+b_{a}

        则加速度计的输出可以展开为:

        陀螺仪的输出可以展开为:

3.内参标定

3.1 基于转台的标定(正向建模)

        在IMU的误差模型中,陀螺仪和加速度计的误差方程是互相独立的,可分别标定。以加速度计为例,其误差模型方程为:

        误差模型方程是一个包含12个未知参数的方程组,显然方程组没有唯一解。此时,通过改变输入,获得多个不同方程(大于12个),组成的方程组便可求解参数。

        基于转台的标定方法将IMU固定在转台上,通过旋转IMU,改变其输入构造方程组。因为转台很精准,所以每个位置对应的加速度输入和角速度输入都是已知的,并且有IMU的读数作为输出。因此可以依赖转台提供的真值输入与IMU的实际输出来解算出模型参数。

        加速度计标定:

        (1)解析法

        当IMU水平向上放置时,得:

        其中,g为重力加速度。代入入加速度计误差模型,可得:

        同理,当IMU水平向下放置时,得:

        联立这两个方程组,便可解出6个参数。随后,再次改变IMU放置方式,可解其他参数。

        (2)线性最小二乘法

        加速度计误差模型可以进行转化:

        其中:

        这样就可以直接把所有转台位置的数据罗列起来,构建超定方程组,通过线性最小二乘法求解:

        这里的x对应上图中待求解的θ,A对应上图的输入x,b对应上图的输出y。

        正向建模依赖于转台提供的高精度的已知输入a,是拿着答案(真值)找过程(误差参数),既知道输入的大小,还知道方向,能把误差参数“钉”得非常死,解算出的参数非常接近物理真值。

        虽然Ka与Sa进行解耦造成了一点微小误差,但内参标定就是一个降低误差的过程(知道输出,根据内参模型反推输入),可以不拘小节。

        陀螺仪标定:

        (1)解析法:

        首先,以绕IMU的z轴逆时针旋转,计算输出与输入的关系:

        展开并忽略二阶小量,可得:

        对等式两侧进行积分,得:

        绕IMU的z轴顺时针旋转时,同样方法可得:

        通过式(1) - 式(2)可以求解出S_{gxz}S_{gyz}K_{gz}。此处不通过式(1)+式(2)求解零偏,因为旋转所用时间偏短,零偏造成的角度输出太小。

        当转台静止时,可以简单认为陀螺仪输出只有零偏,即:

        此时采集一段时间内的数据,取平均值,即可得到零偏。(mems 陀螺仪的零偏重复性极差,因此每次上电都要在线估计零偏,因此离线标定时,零偏标与不标区别不大。)

3.2 基于优化的标定(反向建模)

        整体思路:加速度输入(重力加速度)是已知的,已知值与测量值的差异作为残差,通过优化,估计内参。

        因为使用转台是,必须服从转台的坐标轴定义,所以imu的加速度计和陀螺仪的三轴都有两个误差分量。当不使用转台时,可以简化模型,假设加速度计的X轴就是IMU的X轴,并且加速度计的Y轴处于IMU的X轴与Y轴所处平面内,也就是平面z=0:

        从而使加速度计的安装误差矩阵只剩下下三角阵,陀螺仪的安装误差矩阵保持原样:

        (1)加速度计标定

        正向建模依赖于转台提供的高精度的已知输入,比如知道重力加速度的大小,以及此时重力加速度在三轴上的分量各自大小。在没有转台的情况下,我们手持设备或静止放置,不能准确获取设备姿态,所以不知道此时真实的加速度在x,y,z轴上的具体分量,但我们已知一个物理公理:静止状态下,加速度的模长应该等于重力加速度g

        所以基于优化模型的标定建立一个逆向公式,描述“如果传感器输出了A,经过误差参数的修正,真实的输入a应该是多少”。也就是:

        其中,再简化模型:

        则,反向方程为:

        标定时,令IMU静止,则输入只有重力加速度。把加速度计矢量定义为:

g=\begin{bmatrix} 0 & 0 & g_{0} \end{bmatrix}^{T}

        其中,g0为当地重力加速度大小。那么当内参完全准确是,有:

  \left \| g \right \|^{2}=\left \| a \right \|^{2}

        当内参存在误差时,可写出残差函数为:

f=\left \| g \right \|^{2}-\left \| a \right \|^{2}

        (2)陀螺仪标定

        陀螺仪内参估计在加速度计标定完成后进行,因此认为此时加速度计无误差。令A_{k}代表在第 k 个静止位置时,三个加速度计的输出构成的矢量在IMU坐标系下的表示,即:

A_{k}=R_{b_{k},w}\cdot g

        其中R_{b_{k},w}表示从世界坐标系(w系,和水平面平行且不随IMU旋转而旋转的坐标系)到第 k 个位置对应的IMU坐标系的转换矩阵。

        在第 k+1 个位置时,同样有测量值:

A_{k+1}=R_{b_{k+1},w}\cdot g

        从第 k 个位置到第 k+1 个位置,可以根据陀螺仪测量计算出两个位置之间的相对旋转R_{b_{k+1},b_{k}},根据该旋转可以算出一个第 k+1 位置加速度计输出矢量的推测值:

A_{k+1}^{g}=R_{b_{k+1},b_{k}}\cdot A_{k}

        可见,推测值的误差就体现了陀螺仪的误差,因此可以根据推测值与观测值构建残差函数:

f=A_{k+1}-A_{k+1}^{g}

        此时,即可构建并求解优化问题,得到标定好的内参。

4. 加速度计雅可比推导

        此时,残差函数为:

        根据链式求导法则,推导残差f对Ka,Sa,ba的雅可比:

        其中,链式求导的前两项为:

(1)a对ba的偏导比较容易求得:

(2)a对Ka的偏导。由于a是一个3x1的向量,Ka是一个3x3的矩阵,不好直接求偏导,并且Ka中只有主对角线元素有用,所以:

        其中:

        则a可以表示为:

        在向ceres::Problem添加优化参数时,使用向量形式的Ka:

        则a对Ka的偏导可以表示为:

(3)a对Sa的偏导。

        由于下三角阵形式的Sa不好求偏导,所以与Ka类似,在向ceres::Problem添加优化参数时,使用向量形式的Sa:

        并且,此时显式写出a的组成:

        则a为:

        a对向量形式Sa的偏导为:

Logo

AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。

更多推荐