IMU 姿态估计的第一步是将陀螺仪(gyroscope)测量的角速度积分成陀螺仪的姿态。在早期的惯性导航应用中,因为计算机计算能力有限,人们曾经使用双速度积分法:高速一阶积分和中速高阶积分,从而在保证积分精度的前提下降低计算量 [1]。在现在 IMU 的低精度应用中,一般单片机的计算性能足以保证在 IMU 的测量带宽内使用最精确的积分方法,因此我们没有必要讨论 [1] 中的双速度积分法。在这篇文章中,我们将介绍三种形式的积分方法:分别使用旋转矩阵、四元数和欧拉角。在这些方法中,我们不考虑地球自身的旋转和地球的曲率,因此只限于小范围内的 IMU 的应用。在开始之前,我们先做一个约定:在本文中所有的角速度
- 李群(Lie Group)的基础知识 [2]
尽管刚体的姿态有很多种不同的表示方法,它们的积分方法也不相同,但这其中有一些共通的地方,在这里作一些简要但不严格的介绍。刚体旋转群 SO(3) 是一个李群,所谓李群是指同时具有光滑流形和群的结构的空间,同时群内的运算也是光滑的。李群的定义需要花很长篇幅解释清楚,也不重要,在这篇文章中我们需要知道的是 SO(3) 上的每一个旋转,都有一个切空间。这个切空间是一个线性空间,它的维数与 SO(3) 相同,即具有三个自由度。在李群的语言中,切空间也叫做李代数(Lie Algebra)。切空间的直观理解是:切空间内的每一个向量代表了一个速度,并且这个速度可以通过李群的性质积分成一个位移,而这个积分就是李群的指数映射(exponential map)。可以证明指数映射在局部是一一对应的,也就是每个速度都对应了唯一一个位移。
刚体旋转群 SO(3) 的李代数
作为一个线性空间,
在单位四元数表示中,因为
2. 旋转矢量的微分
如果刚体的姿态由旋转矢量
其中
3. 体坐标系
如果用
我从未见到过这个微风方程的解析解,在一些相对外行的文章中可以看到用一阶近似的形式对欧拉角积分:
4. 旋转矩阵的积分
旋转矩阵
不同于旋转矢量和欧拉角,这个微分方程是有解析解的,它的解可以用指数映射表示:
因此在精度上,旋转矩阵的积分相比于旋转矢量和欧拉角具有明显的优势,因为它在积分的过程中没有忽略任何高阶小量。关于指数映射的简便计算方法,请参考上一篇文章“姿态的表示方法”中的公式 (4)。因为指数映射的性质,
需要注意的是,在公式 (5) 中我们需要假设在
5. 单位四元数的积分
单位四元数
其中
关于单位四元数的指数映射的简便计算方法,请参考上一篇文章“姿态的表示方法”中的公式 (6)。这个解析解和旋转矩阵的解析解具有同样好的性质,它保证了积分结果
6. 总结
在这篇文章中,我们介绍了使用欧拉角、旋转矩阵和单位四元数对 IMU 测量得到的角速度进行积分。其中使用欧拉角的积分方法是其运动学方程的近似解,而使用旋转矩阵和单位四元数的积分方法是运动学方程的解析解。因此我更推荐使用旋转矩阵或四元数对角速度进行积分。另外,如果考虑非零的角加速度,也可以使用精度更高但更复杂的积分公式。
参考文献
[1] Savage, P.G., 1998. Strapdown inertial navigation integration algorithm design part 1: Attitude algorithms.Journal of guidance, control, and dynamics,21(1), pp.19-28.
[2] Hall, B., 2015.Lie groups, Lie algebras, and representations: an elementary introduction(Vol. 222). Springer.
[3] Shuster, M.D., 1993. A survey of attitude representations.Navigation,8(9), pp.439-517.
[4] Foxlin, E., 1996. Inertial head-tracker sensor fusion by a complementary separate-bias Kalman filter.
[5] Sola, J., 2017. Quaternion kinematics for the error-state Kalman filter.arXiv preprint arXiv:1711.02508.
[6] Trawny, N. and Roumeliotis, S.I., 2005. Indirect Kalman filter for 3D attitude estimation.University of Minnesota, Dept. of Comp. Sci. & Eng., Tech. Rep,2, p.2005.