测量一个平台的动态翻滚(roll)和俯仰(pitch)角度,对于各种不同的应用都十分有帮助。典型的例子之一是飞机的垂直陀螺仪或姿态仪,能够为飞行员在空中操作飞机时提供相对于地平线的参考。最近,越来越多的动态倾斜应用开始出现在无人机、机器人和自动驾驶车系统中。
本文介绍使用惯性测量单元(IMU)估算在动态条件下翻滚和俯仰的基本物理学和数学,并提供可用的开放源程序码参考,可用于在ACEINNA的OpenIMU平台上实现数学计算。
测量倾斜的首要也是最基本的方法是进行液位(liquid level)测量,例如木匠师傅采用水平测量工具。想想看,这其实只是对于地球引力的简单加速度测量。
液位是静态重力加速度的简单测量(来源:ACEINNA)
IMU中的三轴加速度计可以在静态条件下直接测量该响应。这种测量的静态精确度通常受到整个加速度计偏置精确度的影响,包括温度效应。
静态翻滚和俯仰测量的完整数学计算如下所示。此数学计算方式建置在称为‘Leveler’的简单ACEINNA OpenIMU应用程序中。您可以从此来源的ACEINNA OpenIMU下载并安装该程序代码,也可以使用ACEINNA Developer Website和编译程序代码将其上传至OpenIMU。
使用IMU进行静态倾斜的方程式简介(来源:ACEINNA)
当然,问题在于加速度计如何响应平台的倾斜,以及平台的线性加速度,如下图所示。再者,光是使用加速度计,也不太可能区分出上述两者。
在动态条件下基于加速度的倾斜测量误差(来源:ACEINNA)
值得庆幸的是,IMU内建一个三轴速率陀螺仪(或陀螺仪),可以响应三轴中每个轴的角度变化率。简单的偏斜率示例如下图。关于角速率陀螺仪的好消息是它并不会直接响应线性加速度或线性运动;坏消息则是将角速率转换为角度的过程涉及积分,将会因为陀螺仪的偏置和噪声而随时间漂移。此外,陀螺仪并没有实际的水平测量值,因而无法确定绝对水平,如气泡水平仪或是基于加速度的重力测量等。
角速率陀螺仪测量角度的变化率(来源:ACEINNA)
当然,下一步是将两种测量形式结合于一个解决方案中。加速度计用于作为静态水平的长期参考;即「垂直」。这一数据与姿态变化的「陀螺仪」测量值融合,为整体提供精确且无漂移动态响应。这种「垂直+陀螺仪」的经典传感器融合,是飞机「垂直陀螺仪」来源的基础。在实作中进行这种测量的一种好方法是使用四元数更新,沿着卡尔曼(Kalman)滤波器将角速率传播到姿态。该数学计算方式如下:
以IMU实现动态姿态的卡尔曼滤波等式(来源:ACEINNA)
就像静态水平仪程序代码一样,ACEINNA的开放来源OpenIMU平台提供了上述数学计算的高性能调谐建置。只需安装适于Visual Studio Code的ACEINNA Extension,然后点选「客制IMU示例」(Custom IMU Examples)。动态倾斜应用程序称为‘VG_AHRS’,还包括使用板载磁力计以及硬/软铁补偿,以实现动态稳定航向测量。
当然,我还是一如往常地欢迎你的评论与提问。
(原文发表于ASPENCORE旗下EDN姐妹媒体EETimes,参考链接:Measuring Dynamic Attitude for Drones, Robotics, and Autonomous Vehicles,编译:Susan Hong)