使用加速度计和陀螺仪进行航位推算。可能的?

电器工程 Arduino 加速度计 陀螺仪 伊穆 记忆体
2022-01-11 20:41:00

我有一个 3 轴加速度计和一个 3 轴陀螺仪。我的任务是使用这个硬件开发一个航位推算系统。

本质上,我需要开发一些代码来实时跟踪棋盘在 3d 空间中的位置。因此,如果我从桌子上的电路板开始并将其向上提升 1m,我应该能够在屏幕上看到该运动。旋转也需要考虑在内,所以如果我在同一运动的中途将板倒置,它仍应显示相同的向上 1m 的结果。在几秒钟内的任何复杂运动也应如此。

忽略计算和旋转向量等所需的数学运算,使用如此低成本的设备是否可能?据我所知,我无法以 100% 的精度消除重力,这意味着我相对于地面的角度将偏离,这意味着我的矢量旋转将偏离,这会导致位置测量不正确。

我还需要考虑来自加速度计和陀螺仪偏差的噪音。

这可以做到吗?

4个回答

你得到的答案和评论当然很棒,但我可以添加一点颜色。

不管它的价值是什么,我们的感觉神经系统使用的工具几乎相同,但并不总是能得到正确的答案!我们有 3D 加速度计(耳石器官)和 3D“陀螺仪”(角速度计,半规管),但是当系统无法获得正确的“答案”时,我们会遭受各种错觉,比如电梯错觉和眼重错觉。这些故障通常发生在低频线性加速度期间,这很难与重力区分开来。曾经有一段时间,飞行员在航母上弹射起飞时会俯冲入海,因为与发射相关的低频加速度会产生强烈的俯仰感知,直到训练协议教他们忽略这些感知。

诚然,生理传感器与 MEMS 传感器有一些不同的频率截止和本底噪声,但我们也有一个巨大的神经网络来解决这个问题——尽管在这些低频极端情况下正确解决问题的进化压力很小,只要弹射器发射相当罕见;-)。

不过,想象一下这个许多人都经历过的常识性“航位推算”问题,我想你会看到它是如何延续到 MEMS 世界的。你坐上喷气式飞机,在北美起飞,加速到巡航速度,穿越海洋,减速并降落在欧洲。即使从问题中消除倾斜平移模糊性,并假设零旋转,也几乎没有希望真正实现加速度曲线的双重积分,从而在任何地方产生几乎足够准确的位置曲线,以告诉您您已经到达欧洲. 即使您在旅途中将非常精确的 6 轴陀螺仪/加速度计套件放在腿上,也会有问题。

所以这是一个极端。有很多证据表明,对于日常行为,动物使用一个简单的假设,即检测到的低频加速度可能是由相对于重力的重新定向引起的。当然,陀螺仪和加速度计的组合具有比我们的内耳更广的频率响应,可以更好地解决这个问题,但由于本底噪声、阈值等,仍然会出现极端问题。

因此,对于具有非平凡加速度的短时期,使用正确的仪器进行航位推算并不是一个糟糕的问题。从长远来看,在小加速度和低频加速度的情况下,航位推算是一个大问题。对于任何给定的情况,您都需要弄清楚您的特定问题在该频谱上的哪个位置,以及您的航位推算需求的准确程度,以确定您能做的最好的是否足够好。我们称之为过程工程。

在进行与您类似的高级设计项目时,我发现航位推算的主要问题是加速度计仅测量加速度。你必须积分一次才能得到速度加上常数 C。然后你必须再次积分才能得到位置 + Cx + D。这意味着一旦你从加速度计的数据计算位置,你最终会得到一个偏移量,但你也有随时间线性增长的误差。对于我使用的 MEM 传感器,在 1 秒内,它计算出自己距离实际位置至少一米。为了使它有用,您通常必须找到一种经常将错误归零的方法,以避免错误的累积。有些项目能够做到这一点,但许多项目不能。

加速度计确实提供了一个不错的重力矢量,它不会随着时间的推移而误差上升,电子罗盘可以在没有累积误差的情况下提供方向,但总体而言,航位推算问题并没有通过海军在船上大量传感器上花费的大量资金得到解决. 他们比你能做的要好,但我读到的最后一篇文章,他们仍然发现自己在行驶 1000 公里时偏离了 1 公里。这实际上非常适合航位推算,但如果没有他们的设备,您将无法实现接近这一目标的任何事情。

您还需要处理加速度计中的偏差和陀螺仪中的噪声。

重力不应该在角度测量中引入误差;相反,重力矢量提供了一个“绝对参考”,可以帮助您将“俯仰”和“侧倾”角度的累积偏差归零。

是的,您想做的事情是可能的,但低成本 MEMS 器件的性能不佳意味着误差会迅速累积——偏置变化和噪声产生的“随机游走”(在加速度计和速率陀螺仪中)将导致结果在几秒钟或几分钟内偏离现实。

要解决此问题,您需要在系统中加入不会出现此类错误的其他传感器。正如我上面提到的,使用重力矢量角度是纠正某些陀螺仪误差的一种方法,但是在您可以使用之前,您需要知道何时进行了准确的重力测量(系统没有被加速)它。

校正角漂移的另一种方法是使用磁力计来测量地球磁场。磁力计的误差比较大,但不受长期漂移的影响。

纠正由加速度计读数的漂移分量产生的位置误差需要某种绝对位置参考。GPS 是常用的(如果可用),但您也可以使用其他传感器,例如气压计(用于高度)、里程表(如果地面上有轮子)、超声波或红外距离传感器,甚至图像传感器。

无论您最终使用哪种传感器组合,所有这些数据都需要“融合”到系统状态的自洽软件模型中,其中不仅包括当前位置和姿态,还包括对当前偏差的估计,传感器本身的比例因子和噪声水平。一种常见的方法是使用卡尔曼滤波器,它可以被证明为给定的一组传感器读数提供系统状态的“最佳”估计(即最佳可用估计)。

简短的回答是“不完全是”。长答案是,您可以形成诸如“鉴于我的陀螺仪读数,我有 95% 的把握自上次读数以来设备已在 28 度和 32 度之间旋转”之类的陈述。

问题是您最终会收集有关嘈杂微分方程的数据。对于测量角速度的角陀螺仪,您有噪声 diff eq $$\frac{d\theta(t)}{dt} = r(t)$$ 并且对于加速度计 $$\frac{d^2p (t)}{dt^2} = r(t)$$ 其中 \$r(t)\$ 是您的传感器在时间 \$t\$ 的值。

这些“嘈杂”的微分方程通常以“随机微分方程”的名义出现,其中噪声被假定为通过随机游走产生的白噪声。数学可以推广到噪声不是来自随机游走的其他情况。在任何特定情况下,噪声的分布都可以通过实验确定,其参数将取决于您的特定设备和应用。由于噪声累积,无论您如何在相对较长的时间跨度内获得良好的估计,您总是需要定期校准到已知位置。固定参考的示例是本垒、罗盘读数和重力。

如果你决定走这条路,你必须决定几件事:

  • 可接受的误差水平是多少?您想要 95% 的信心在 2 秒后处于 1 度以内,还是希望 80% 的信心在 2 秒后处于 5 度以内?

  • 从您的陀螺仪/加速度计中读取一些读数。这可用于计算估计真实噪声的噪声的经验分布。使用它来求解嘈杂的微分方程并计算置信区间。

  • 从上面可以清楚地看出,数据表中的读数精度(方差)如何影响噪声微分方程的解。还将清楚它如何影响您的置信区间。

  • 选择具有可接受参数的设备,以便您在第一步中获得所需的置信区间。您可能会发现您想要/需要的设备精度参数与可用的和/或您的预算不匹配。另一方面,您可能会对使用更便宜的设备获得的结果感到惊讶。