问题来源是 IMU 中 Gyroscope 测量的角速度实际含义,从而帮助理解 IMU 预积分过程中 Rotation Matrix 的积分过程(即文献 [1] 中公式 (30) 的第一个等式)。
解决这个问题,参考文献 [2] State Estimation for Robotics 的 6.2.4 Rotational Kinematics
与 6.4.4 Inertial Measurement Unit
。
1. 角速度测量值含义
在对 6.2.4
有基本印象之后,阅读 6.4.4
。
在 6.4.4
中如图 Figure 6.14
有三个坐标系——惯性(世界)坐标系 \(\underrightarrow{\mathcal{F}_i}\)、载具坐标系 \(\underrightarrow{\mathcal{F}_v}\)、IMU 坐标系 \(\underrightarrow{\mathcal{F}_s}\)。
IMU 坐标系与载具坐标系不重合,所以 IMU 的测量值不能直接在载具坐标系在使用,需要进行转换。
公式 (6.149) 给出了 Gyroscope 测量值 \(\mathbf{\omega}\) 与所需要的载具角速度 \(\mathbf{\omega}^{vi}_v\) 的关系:
\[\mathbf{\omega} = \mathbf{C}_{sv}\mathbf{\omega}^{vi}_v,\]
由公式 (6.3)
\[\underrightarrow{\mathcal{F}_1}^T = \underrightarrow{\mathcal{F}_2}^T \mathbf{C}_{21}\]
得
\[\mathbf{\omega} = \underrightarrow{\mathcal{F}_s}\underrightarrow{\mathcal{F}_v}^T\mathbf{\omega}^{vi}_v,\]
由公式 (6.40)
\[\underrightarrow{\omega}_{21} = \underrightarrow{\mathcal{F}_2}^T \mathbf{\omega}^{21}_2\]
得
\[\begin{aligned} \mathbf{\omega} &= \underrightarrow{\mathcal{F}_s}\underrightarrow{\mathbf{\omega}}_{vi} \\ \underrightarrow{\mathcal{F}_s}^T \mathbf{\omega} &= \underrightarrow{\mathbf{\omega}}_{vi} \end{aligned},\]
因为 IMU 与载具之间形成刚体,不存在相对运动,所以从角速度的空间向量(注意,并不是向量在某基底下的向量坐标)角度看,IMU 与载具的角速度相同。即
\[\underrightarrow{\mathbf{\omega}}_{si} = \underrightarrow{\mathbf{\omega}}_{vi}。\]
所以,认为角速度测量值
\[\mathbf{\omega} = \mathbf{\omega}^{si}_s。\]
注意 \(\underrightarrow{\omega}_{21}\) 的含义,在 6.2.4
有一句话引用如下
The angular velocity of frame 2 with respect to frame 1 is denoted by \(\underrightarrow{\omega}_{21}\).
所以 \(\underrightarrow{\mathbf{\omega}}_{si}\) 理解为 IMU 坐标系 \(\underrightarrow{\mathcal{F}_s}\) 相对惯性坐标系 \(\underrightarrow{\mathcal{F}_i}\) 的角速度向量,\(\mathbf{\omega}^{si}_s\) 符号理解为IMU 坐标系 \(\underrightarrow{\mathcal{F}_s}\) 相对惯性坐标系 \(\underrightarrow{\mathcal{F}_i}\) 的角速度向量在 IMU 坐标系 \(\underrightarrow{\mathcal{F}_s}\) 下的坐标。
2. 从角速度积分
参考 6.2.4
仔细理解公式 (6.36)。这是从向量的角度理解角速度,而不是从向量坐标角度理解。
将此处的 \(\underrightarrow{\mathcal{F}_1}\) 对应惯性坐标系 \(\underrightarrow{\mathcal{F}_i}\),\(\underrightarrow{\mathcal{F}_2}\) 对应 IMU 坐标系 \(\underrightarrow{\mathcal{F}_s}\)。
角速度在空间中可以表示为一个向量,按照右手螺旋的习惯,此向量方向标明了旋转方向,此向量的长度标明了角速度标量。
在某一时刻 \(\underrightarrow{\mathcal{F}_1}, \underrightarrow{\mathcal{F}_2}\) 之间存在角速度 \(\underrightarrow{\omega}_{21}\),考虑 \(\underrightarrow{\mathcal{F}_2}\) 各轴(也就是该坐标系基底所在的向量) \(\underrightarrow{2_1}, \underrightarrow{2_2}, \underrightarrow{2_3}\) 对时间的变化率(当然是在 \(\underrightarrow{\mathcal{F}_1}\) 下观察的结果,在 \(\underrightarrow{\mathcal{F}_2}\) 下结果为 0,所谓相对运动)。得到以下结果(参考图理解):
\[\begin{aligned} \underrightarrow{2^{\bullet}_1} = \underrightarrow{\omega}_{21} \times \underrightarrow{2_1} \\ \underrightarrow{2^{\bullet}_2} = \underrightarrow{\omega}_{21} \times \underrightarrow{2_2} \\ \underrightarrow{2^{\bullet}_3} = \underrightarrow{\omega}_{21} \times \underrightarrow{2_3} \end{aligned}\]
现在考虑经过足够短的时间 \(\Delta t\),坐标系 \(\underrightarrow{\mathcal{F}_2}\) 经过 \(\Delta t\) 时间移动到 \(\underrightarrow{\mathcal{F}_2}^{\prime}\) 。
\[\begin{aligned} \underrightarrow{2^{\prime}_1} &= \underrightarrow{2^{\bullet}_1} \Delta t + \underrightarrow{2_1} \\ &= (\underrightarrow{\omega}_{21} \Delta t) \times \underrightarrow{2_1} + \underrightarrow{2_1} \\ \underrightarrow{2^{\prime}_2} &= \underrightarrow{2^{\bullet}_2} \Delta t + \underrightarrow{2_2} \\ &= (\underrightarrow{\omega}_{21} \Delta t) \times \underrightarrow{2_2} + \underrightarrow{2_2} \\ \underrightarrow{2^{\prime}_3} &= \underrightarrow{2^{\bullet}_3} \Delta t + \underrightarrow{2_3} \\ &= (\underrightarrow{\omega}_{21} \Delta t) \times \underrightarrow{2_3} + \underrightarrow{2_3} \end{aligned}\]
合并,写作
\[\underrightarrow{\mathcal{F}^T_2}^{\prime} = (\underrightarrow{\omega}_{21} \Delta t) \times \underrightarrow{\mathcal{F}^T_2} + \underrightarrow{\mathcal{F}^T_2} \]
其中
\[\begin{aligned} \underrightarrow{\omega}_{21} &= \underrightarrow{\mathcal{F}^T_2} \mathbf{\omega}^{21}_2 \\ \underrightarrow{\omega}_{21} &= \underrightarrow{\mathcal{F}^T_1} \mathbf{\omega}^{21}_1 \end{aligned}\]
考虑 \(\underrightarrow{\mathcal{F}_1}, \underrightarrow{\mathcal{F}_2}\) 之间的旋转矩阵 \(\mathbf{C}_{21}\),在经过时间 \(\Delta t\) 之后变化成 \(\mathbf{C}_{21}^{\prime}\)。
则有
\[\begin{aligned} \mathbf{C}_{21}^T &= \underrightarrow{\mathcal{F}_1}\underrightarrow{\mathcal{F}^T_2} \\ {\mathbf{C}_{21}^{\prime}}^T &= \underrightarrow{\mathcal{F}_1}\underrightarrow{\mathcal{F}^T_2}^{\prime} \end{aligned}\]
对于 \({\mathbf{C}_{21}^{\prime}}^T\) 的计算比较困难。假设在这个空间中有一组单位正交基,为了简单起见就将这组基设定在 \(\underrightarrow{\mathcal{F}_1}\) 的各条轴上,长度都为 1 。将以上这些向量都用它们在这组单位正交基下的坐标表示,考虑各个向量的坐标维度:
- \(\underrightarrow{\mathcal{F}_1}, \underrightarrow{\mathcal{F}_2}\),\(9 \times 1\);
- \(\underrightarrow{\mathcal{F}^T_1}, \underrightarrow{\mathcal{F}^T_2}\),\(3 \times 3\),注意此处是与转置符号系统的习惯冲突的;
- \(\underrightarrow{\omega}_{21}\),\(3 \times 1\),并且 \({\underrightarrow{\omega}_{21}}_{3 \times 1} = \underrightarrow{\mathcal{F}^T_2}_{3 \times 3} {\mathbf{\omega}^{21}_2}_{3 \times 1}\) 。
使用性质 \((\mathbf{C}\mathbf{v})^{\wedge} = \mathbf{C} \mathbf{v}^{\wedge} \mathbf{C}^T\),可得进行以下推导:
\[\begin{aligned} {\mathbf{C}_{21}^{\prime}}^T &= \underrightarrow{\mathcal{F}_1}((\underrightarrow{\omega}_{21} \Delta t) \times \underrightarrow{\mathcal{F}^T_2} + \underrightarrow{\mathcal{F}^T_2}) \\ &= \underrightarrow{\mathcal{F}_1}(\underrightarrow{\omega}_{21} \Delta t) \times \underrightarrow{\mathcal{F}^T_2} + \underrightarrow{\mathcal{F}_1}\underrightarrow{\mathcal{F}^T_2} \\ &= \underrightarrow{\mathcal{F}_1}(\underrightarrow{\mathcal{F}^T_2} \mathbf{\omega}^{21}_2 \Delta t)^{\wedge} \underrightarrow{\mathcal{F}^T_2} + \mathbf{C}_{21}^T \\ &= \underrightarrow{\mathcal{F}_1} \underrightarrow{\mathcal{F}^T_2} ( \mathbf{\omega}^{21}_2 \Delta t)^{\wedge} \underrightarrow{\mathcal{F}^T_2}^T \underrightarrow{\mathcal{F}^T_2} + \mathbf{C}_{21}^T \\ &= \mathbf{C}_{21}^T (\mathbf{\omega}^{21}_2 \Delta t)^{\wedge} \mathbf{I} + \mathbf{C}_{21}^T \\ &= \mathbf{C}_{21}^T (\mathbf{I} + (\mathbf{\omega}^{21}_2 \Delta t)^{\wedge}) \\ &= \mathbf{C}_{21}^T \text{Exp}(\mathbf{\omega}^{21}_2 \Delta t) \end{aligned}\]
自此,得到 IMU 姿态积分公式。
参考文献
[2] Barfoot, Timothy D. State Estimation for Robotics. Cambridge University Press, 2017.