2023-11-15-讨论一种IMU加速度数据或者磁罗盘数据的标定方式

讨论一种IMU加速度数据或者磁罗盘数据的标定方式

现在讨论一种IMU加速度数据或者磁罗盘数据的标定方法。

问题描述

由于IMU传感器的制造工艺和精度的限制,IMU的加速度计和磁罗盘的输出值会存在一定的误差,这些误差会对姿态解算的精度造成影响。IMU数据的误差来源主要有以下几个方面:

  1. 零偏误差
  2. 比例误差
  3. 非正交误差
  4. 随机误差
  5. 温度漂移误差

其中,零偏误差、比例误差和非正交误差都可以通过标定得到,随机误差可以通过滤波算法进行抑制,温度漂移误差可以通过温度补偿进行抑制。我们这次主要讨论前三种误差的标定方法。由于原理一致,因此只讨论加速度计的标定方法。

误差模型

根据零偏误差、比例误差和非正交误差的定义,我们可以得到如下的误差模型:

a s = M a ( a m − b a − w a ) (1) \begin{aligned} \mathbf{a}_{s} &=\mathbf{M}_{a}(\mathbf{a}_{m} - \mathbf{b}_a - \mathbf{w}_{a}) \\ \end{aligned} \tag{1} as=Ma(ambawa)(1)

其中, a m \mathbf a_m am 是加速度计的测量值, a s \mathbf a_s as 是加速度计的真实值, M a \mathbf M_a Ma 是加速度计的比例和非正交误差矩阵, b a \mathbf b_a ba 是加速度计的零偏误差向量, w a \mathbf w_a wa 是加速度计的随机误差向量,我们假设它满足高斯分布,即 w a ∼ N ( 0 , Q a ) \mathbf w_a \sim \mathcal N \left(\mathbf 0, \mathbf Q_a\right) waN(0,Qa) ,其中 Q a \mathbf Q_a Qa 是加速度计的随机误差协方差矩阵。

误差模型中的 M a \mathbf M_a Ma b a \mathbf b_a ba 是我们需要标定的参数,其中 M a \mathbf M_a Ma 是一个 3 × 3 3 \times 3 3×3 的矩阵, b a \mathbf b_a ba 是一个 3 × 1 3 \times 1 3×1 的向量。

代价函数

如果我们想得到 M a \mathbf M_a Ma b a \mathbf b_a ba 的最优解,我们需要定义一个代价函数,然后通过最小化代价函数来得到最优解。显然在静态情况下 a s \mathbf a_s as 的模长应该等于重力加速度的模长,即:

∥ a s ∥ = g (2) \begin{aligned} \left\|\mathbf{a}_{s}\right\| &= g \end{aligned} \tag{2} as=g(2)

因此我们可以构建如下代价函数:

J = ∑ i = 1 N ( a s i T a s i − g 2 ) 2 (3) \begin{aligned} \mathbf{J} &= \sum_{i=1}^{N}({\mathbf{a}_{s}^{i}}^T\mathbf{a}_{s}^{i} - g^2)^2 \end{aligned} \tag{3} J=i=1N(asiTasig2)2(3)

其中, N N N 是数据的个数, a s i \mathbf a_s^{i} asi 是第 i i i 个数据点的真实加速度值, g g g 是重力加速度的模长。

通过上述代价函数不难发现,如果对 a s i \mathbf a_s^{i} asi 做一个给定的单位正交变换 A \mathbf A A ,则有如下关系:

A a s i = A M a ( a m i − b a − w a i ) J ′ = ∑ i = 1 N ( A a s i T A a s i − g 2 ) 2 = ∑ i = 1 N ( a s i T A T A a s i − g 2 ) 2 = ∑ i = 1 N ( a s i T a s i − g 2 ) 2 ≡ J (4) \begin{aligned} \mathbf{A}\mathbf{a}_{s}^{i} &= \mathbf{A}\mathbf{M}_{a}(\mathbf{a}_{m}^{i} - \mathbf{b}_a - \mathbf{w}_{a}^{i}) \\ \mathbf{J}^{'} &= \sum_{i=1}^{N}({\mathbf{A}\mathbf{a}_{s}^{i}}^T\mathbf{A}\mathbf{a}_{s}^{i} - g^2)^2 \\ &= \sum_{i=1}^{N}({\mathbf{a}_{s}^{i}}^T\mathbf{A}^T\mathbf{A}\mathbf{a}_{s}^{i} - g^2)^2 \\ &= \sum_{i=1}^{N}({\mathbf{a}_{s}^{i}}^T\mathbf{a}_{s}^{i} - g^2)^2 \\ &\equiv \mathbf{J} \end{aligned} \tag{4} AasiJ=AMa(amibawai)=i=1N(AasiTAasig2)2=i=1N(asiTATAasig2)2=i=1N(asiTasig2)2J(4)

由此可知,对于一个 M a \mathbf M_a Ma ,它的任意单位正交变换 M a ′ = A M a \mathbf M_a^{'}=\mathbf A \mathbf M_a Ma=AMa 其代价和 M a \mathbf M_a Ma 的代价是一样的,因此如果不对 M a \mathbf M_a Ma 做约束,那么我们可以得到无穷多个解。为了得到唯一的解,我们需要对 M a \mathbf M_a Ma 做约束。约束的方式如下:

  • 三角约束

这种情况约束 M a \mathbf M_a Ma 是一个三角矩阵,上三角或者下三角是等价的,我们以下三角为例,具有如下形式:

M a = [ m 11 0 0 m 21 m 22 0 m 31 m 32 m 33 ] (5) \begin{aligned} \mathbf{M}_{a} &= \left[\begin{array}{ccc} m_{11} & 0 & 0 \\ m_{21} & m_{22} & 0 \\ m_{31} & m_{32} & m_{33} \end{array}\right] \end{aligned} \tag{5} Ma= m11m21m310m22m3200m33 (5)

我们可以比较形象的想象出上述约束的具体几何意义:首先通过第一行,我们可以知道我们约束测量轴x和真实轴x对准,然后第二行我们约束了测量轴y一定落在真实的xy平面上,最后第三行对于测量轴z则没有更多的约束,这就好比把一个非正交坐标架在正交坐标架中进行了“固定”,不让其随意转动产生无穷多解。

  • 对称约束

这种情况约束 M a \mathbf M_a Ma 是一个对称矩阵,具有如下形式:

M a = [ m 11 m 12 m 13 m 12 m 22 m 23 m 13 m 23 m 33 ] (6) \begin{aligned} \mathbf{M}_{a} &= \left[\begin{array}{ccc} m_{11} & m_{12} & m_{13} \\ m_{12} & m_{22} & m_{23} \\ m_{13} & m_{23} & m_{33} \end{array}\right] \end{aligned} \tag{6} Ma= m11m12m13m12m22m23m13m23m33 (6)

我认为其实这样的约束不能体现非正交误差,因为对于与对称矩阵,我们可以对其进行对角化:

M a = P D P − 1 (7) \begin{aligned} \mathbf{M}_{a} &= \mathbf{P}\mathbf{D}\mathbf{P}^{-1} \end{aligned} \tag{7} Ma=PDP1(7)

其中, P \mathbf P P 是一个正交矩阵, D \mathbf D D 是一个对角矩阵,因此一个对称矩阵相当于正交变换+缩放变换+正交变换,因此对称矩阵的约束实际上是对比例误差的约束。那如果我们只考虑比例误差,那对称矩阵在这种情况下也是存在无穷多解。

  • 对角约束

因此综上所属,如果确实想只考虑比例误差,那对 M a \mathbf M_a Ma 的约束应该是一个对角矩阵。即:

M a = [ m 11 0 0 0 m 22 0 0 0 m 33 ] (8) \begin{aligned} \mathbf{M}_{a} &= \left[\begin{array}{ccc} m_{11} & 0 & 0 \\ 0 & m_{22} & 0 \\ 0 & 0 & m_{33} \end{array}\right] \end{aligned} \tag{8} Ma= m11000m22000m33 (8)

优化方法

根据代价函数,我们可以手动求导得到雅可比矩阵,然后通过优化方法求解最优解,例如可以使用ceres或者g2o


未经授权,禁止转载

  • 21
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值