如何利用惯性测量单元(IMU)进行动态姿态计算?

        很多应用都需要动态测量平台的滚动角(roll)和俯仰角(pitch),例如,当飞机在云层时,需要垂直陀螺(vertical gyro)或姿态指示(attitude indicator)为飞行员提供地平参考;近年来,得到广泛应用的无人机和机器人等自动系统都对动态测量倾角提出了要求。本文将介绍利用IMU进行倾角测量的基本物理和数学原理,我们还提供了对应的可运行于新纳OpenIMU平台的开源代码实现。

        木工所使用的气泡式水平仪就是一个最简单最基本的倾角测量工具,这本质上是在测量重力加速度的方向。IMU中的三轴加速度计在静态时测量的就是地球的重力加速度,也就可以测量倾角。基于该原理的倾角测量是静态倾角测量,其精度主要取决于加速度计的零偏。

图 1 气泡式水平仪示意图

        静态滚动角和俯仰角的完整数学原理如下图所示。我们为新纳OpenIMU提供了一个应用Leveler,实现了简单的静态倾角测量。新纳OpenIMU的用户可以下载该应用的源码,并编译或者直接通过我们的开发者网站下载安装编译好的bin文件


图 2 基于IMU的静态倾角计算

        只利用加速度计进行倾角测量的一个问题当然就是,其测量输出不仅包括重力加速度,还包含了线加速度,如下图所示。并且,仅靠加速度计自身是无法区分重力加速度和线加速度的。

图 3 动态情况下基于加速度计的倾角测量存在误差

        幸运的是,IMU同样还包含了一个三轴陀螺仪。陀螺仪测量平台的转动角速度。下图是陀螺仪测量航向角速率的示意图。陀螺仪对线加速度或线运动并不敏感,但是,通过角速度计算角度需要引入积分过程,积分过程则不可避免的会因零偏和噪声的存在而导致角度漂移。此外,陀螺仪也并不能直接测量水平面。

图 4 速率陀螺测量角速度

        当然,下一步就是结合加速度计和陀螺仪的测量输出解决动态倾角测量问题。其中,加速度计作为静态水平面(即竖直方向)的长期参考,其数据与陀螺仪测量的角度变化进行融合,实现无漂移的动态倾角响应。这一经典的加速度计+陀螺仪的传感器融合即飞行器中术语垂直陀螺(vertical gyro)的由来。我们通常应用Kalman滤波器以四元数的形式实现上述方案。该方案的主要数学原理如下所示: 


图 5 基于IMU的Kalman滤波器系统方程和测量方程

        新纳OpenIMU平台提供了上述方案的开源算法,该算法经过长期的测试和优化,可以提供很好的动态倾角测量精度。用户可以在Visual Studio Code中搜索安装Aceinna Navigation Studio,然后点击“Custom IMU Examples”,并选择动态倾角应用“VG_AHRS”。经过软磁和硬磁校准后,该应用还可以利用板载的磁传感器融合出动态航向角。


图 6 Visual Studio Code中的Aceinna Navigation Studio

          Visual Studio Code中的Aceinna Navigation Studio

 

关于新纳传感系统有限公司

        新纳传感系统有限公司是全球领先的MEMS传感解决方案提供商,产品线包括基于磁阻薄膜的高频率高带宽电流传感器、高性能代码开源惯性测量单元(IMU)、高精度实时动态(RTK)导航系统和厘米级精度定位服务。公司在中国无锡设有研发与生产基地,并在波士顿、芝加哥和硅谷设有全球研发中心。请访问新纳官网www.aceinna.cn了解更多信息。