IMU 是移动机器人、移动智能设备上常见的传感器。常见的 IMU 为六轴传感器,配备输出三轴加速度的加速度计和输出三轴角速度的陀螺仪。九轴 IMU 还会配备输出三轴姿态角的磁力计。我们这里只讨论六轴 IMU。
IMU 的状态量通常表示为:
\[{\bf X}_{IMU} = [ ^I_G \bar{q}^T \quad {\bf b}_g^T \quad ^G{\bf v}_I^T \quad {\bf b}_a^T \quad ^G{\bf p}_I^T] \tag{0.0}\]
这里我们使用和 MSCKF [1] 一样的 notation。用 {I} 表示 IMU 坐标系,{G} 表示参考坐标系。IMU 的姿态由旋转量 $^I_G \bar{q}$ 和平移量 $^G{\bf p}_I$ 表示。更具体来说,前者为将任意向量从 {G} 坐标映射到 {I} 坐标的旋转量,用单位四元数表示;后者为 IMU 在 {G} 下的三维位置。$^G{\bf v}_I$ 表示 IMU 在 {G} 下的平移速度。另外两个量 ${\bf b}_g$ 和 ${\bf b}_a$ 表示陀螺仪(角速度计)和加速度计的 bias。可以注意一下这里除了 bias 之外的状态量的时间维度:平移量表达到速度(p 和 v,对时间的一阶导),因为 IMU 只提供到加速度(对时间的二阶导)的测量;旋转量只表达姿态量(对时间的零阶导),因为 IMU 提供到角速度(对时间的一阶导)。状态量的估计可以由 IMU 测量积分得到。
对于 IMU 状态估计问题,需要提供运动模型、观测(噪声)模型、估计误差模型:
\[\dot{\bf x} = f({\bf x}) \tag{0.1}\] \[{\bf z} = g({\bf x}) + {\bf n} \tag{0.2}\] \[\delta {\bf x} = e(\hat{\bf x},{\bf x}) \tag{0.3}\]
这是一个通用模型,我们用 $\bf x$ 表示真实状态量(待估计,不可知),用 ${\bf z}$ 表示观测量,${\bf n}$ 表示观测噪声,$\hat{\bf x}$ 表示当前的状态估计量。这篇小文主要讲 IMU (即 ${\bf x} := {\bf X}_{IMU}$ 时)这三个模型的推导。
这部分讲刚体动力学相关的前置知识,熟悉的读者可以跳过。
众所周知,一个刚体在同一个惯性坐标系下进行平移运动,其平移量对时间的一阶导和二阶导即速度和加速度:
\[\dot{\bf p}={\bf v}, \dot{\bf v} = {\bf a}\]
对于旋转量以及非惯性系参考坐标系,情况稍微复杂些。
首先,如下图(左)所示,考虑一个从原点出发的向量 $\bf r$ 绕单位轴 $\bf u$ 旋转,角速度大小为 $\dot{\theta}$。
原文:https://www.cnblogs.com/xsy123/p/13889952.html