使用 MEMS 传感器进行航位推算的限制

电器工程 传感器 加速度计 陀螺仪 伊穆 记忆体
2022-01-29 02:14:43

我正在尝试跟踪相对于一个人的躯干的身体部位。我看到很多关于使用 MEMS 加速度计和陀螺仪进行航位推算的问题,它们证实了我的怀疑,即各种因素极大地限制了它们在这类应用中的实用性,但我正在寻求对这些限制的澄清:

  • 这些限制究竟是什么?

    其他答案已经解决了为什么存在这些限制。自然,系统中相关部件的规格以及系统的“可接受误差”都会改变确切的限制,但是我可以预期航位推算工作的时间或距离是否只有一个数量级?我很清楚,对于大多数实际目的而言,在很长的距离(几码左右)误差变得太大,但在几英尺之内呢?

  • 我可以做些什么来改善这些限制?

    我目前正在考虑使用加速度计和陀螺仪。我可以在系统中添加哪些其他传感器来提高错误率?我知道可以在更长的距离内使用 GPS,但我怀疑任何消费电子级 GPS 的分辨率都足以帮助我解决问题。

    此外,一个普遍的共识似乎是,在改进传感器之后改善这些限制的唯一方法是提供一个不会出错的参考。一些系统使用相机和标记来解决这个问题。便携/可穿戴设备可以提供什么样的参考点?

    我已经看到使用无线电波来准确测量长距离,但我无法判断这样的系统是否可以使用“现成的”组件在如此小的范围内(就测量的距离而言)准确。

4个回答
  • 它们到底是什么?

误差源包括零偏移(偏差)和比例误差(往往变化缓慢)和噪声。MEMS 传感器的价格从不到 10 美元到超过 1000 美元不等,误差项的幅度范围很广,具体取决于传感器的质量。

最大的问题是通常需要积分才能从传感器值(加速度、角速率)到所需值(位置、角度)。所有的错误源都是复合的——随着时间的推移而增长——在集成时。航位推算数据的价值会随着时间的推移而衰减,廉价的传感器最多只能为您提供几分钟的有用数据,而高端传感器可能只能使用几个小时。

  • 我可以做些什么来改善这些限制?

正如您已经发现的那样,摆脱不断增长的集成错误的最佳方法是将传感器数据与其他不具有相同类型错误的独立数据源相结合。例如,GPS 可以为您提供一个不会长期漂移的绝对位置值,但具有相对较大的“噪声”分量。您可以使用这些数据来估计加速度计的偏差和比例误差,这样您就可以实时进行校正。它还允许您消除由传感器噪声产生的“随机游走”。卡尔曼滤波器是用于对系统(包括传感器误差项)进行建模并将数据组合在一起以在任何时间点对系统状态进行最佳估计的一种常用方法。

另一个例子是使用加速度计测量的“重力矢量”来抵消陀螺仪的角漂移。这里的诀窍是准确地知道什么时候你有一个有效的重力矢量;即,系统没有向任何方向加速。各种启发式方法(例如,“零更新”)用于完成此操作。磁力计也可以用来测量陀螺仪误差,即使你不知道磁场的绝对方向——只要你能假设它是恒定的。

光学传感是获得无漂移速度、角度或位置估计的另一种方法,但所需的图像处理可能需要大量 CPU(或 FPGA)周期,而且这种系统的开发非常复杂。

你问还有什么可以添加的。三轴磁力计应该会有所帮助。地球磁场的移动速度往往比普通用户慢得多(幸运的是)。
看看神话般的 MPU6000/6050

一个版本提供 SPI & IIC 接口,另一个版本仅提供 IIC。

这包含一个 3 轴陀螺仪 + 一个 3 轴加速度计加上输入,以允许它集成来自和外部 3 轴磁力计的信号。
IC 包含一个“数字运动处理器”,它集成来自 3 x 3 传感器阵列的信号。我还没有掌握所提供的精确功能,但目的是将 3 个独立的信号源处理成一个有用的运动分析系统

数据表在这里

Digikey 的 IC 价格约为 10/1 美元,制造商提供的评估板价格约为 50 美元以上。或者你可以从中国购买一个完整的电路板——他们在这里以大约 6 美元的 1 美元零售价出售——IC 和 PCB 组装。
我还没有弄清楚这是怎么发生的,或者它们是真实的还是...... 我昨天收到了一个,但暂时无法使用它。(“虽然”的大小变化很大,从非常小到有时非常大,唉)。网上有很多关于将它们与 Arduinos 一起使用的文章。

准确度如何?:

网上可能对此有很多讨论。
如果我正确阅读了数据表(而且它不是我过于熟悉的设备类型)
,第 12 页上的表 6.1 表明陀螺仪在 25 C 时的最大漂移为 +/- 20 度/秒,并且再次超过 - 40 至 +85C 温度范围。假设实际的 20 度/秒速率是 18 秒内转一圈。然而,磁力计和加速度计都提供对外部参考矢量(重力和地球磁场)的访问,来自这些矢量的信号可用于推导短期和长期陀螺仪漂移率并进行补偿。这很可能是他们的“运动处理器”所做的一部分。

加速度计误差似乎通常低于 +/- 5%。
我希望(并且可能是非常错误的),使用加速度计和磁力计将陀螺仪漂移误差修整为零长期将允许您使用陀螺仪信号在几秒钟到几分钟内进行导航。GPS 还提供速度信号,GPS 位置 + 速度与 9DOF 单元的组合听起来非常有用。

Wooly:上面的内容听起来比我想的要复杂。我希望在接下来的几周内能对此有所了解。我很想听听您的发现,如果我学到有用的东西,我会尝试并报告回来。

.


根据您的应用,您可以将参考 GPS 和接收器临时存放在方便的位置。这可能非常紧凑 - GPS + 电池 + TX。一旦存放,它就知道它在哪里,并且可以根据系统所说的位置传输更正。使用相同的卫星星座“可能是个好主意”。如果用户和参考 GPS 在其沉积时处于同一点会更好,但即使它们始终在空间上分离,该系统也倾向于工作。

...我怀疑任何消费电子级 GPS 的分辨率都足以帮助我解决问题。

不知道你的情况是什么很难说。但是相对样本到样本的 GPS 分辨率通常远优于在几分钟或几小时内实现的分辨率。我已经进行了测试,我在城市路线上开车并绘制了 GPS 坐标,然后在几个小时后重复了这个练习。两条路径在某些情况下相距几米,但当说沿着城市街道直线行驶时,情节是一条直线,直线两侧可能有不到一米的“噪音”。(那是几年前的事了——自己尝试一下很容易。我刚刚记录了来自 GPS 串行 RS232 输出(通常为 4800 波特)的数据,在这种情况下,在 Excel 中将其绘制为 XY 图。

可以使用差分 GPS,其中固定位置的本地固定接收器根据它知道的位置和系统现在所说的位置提供纠错。有许多此类系统的供应商,但这个概念很简单,很容易实现,如果在预算紧张的情况下。

这些答案中尚未涵盖的内容是您的特定应用程序,实际上已经由非常聪明的人解决了至少十几次。这里的两个关键词是逆运动学和卡尔曼滤波器。

到目前为止,应该清楚您的应用程序的错误来源以及如何修复它们。但是在处理基本上固定在人类身上的传感器时,您可以通过对方程应用逆运动学来减小传感​​器的空间和角度位置范围。这基本上意味着您跟踪身体上尽可能多的关节的相对位置,并将人体的运动学模型应用于它。例如,人们手臂的长度不会随时间而变化,他们的运动范围也不会发生明显变化。骨骼不会弯曲(在正常情况下)。所有这些都可以用来限制您的传感器位置。

另一种解决方案是使用尽可能多的正交传感器。正交意义上的:使用根本不同的测量原理。使用尽可能多的传感器输入,您可以使用所谓的卡尔曼滤波器来尽可能精确地计算出传感器所在的数据。不过,卡尔曼滤波器并不是一个能给出最佳答案的神奇实体。它们是数学模型,需要针对您的特定应用进行调整和修改,要让它们正常工作可能会很麻烦。但它确实允许您以一种迂回的方式组合其他很难关联的传感器数据。这种过滤器的输入可以是任何东西:位置、加速度和速度传感器,但也可以是例如可以通过响应在特定角度可见的光源来添加信息的光传感器。

一些具有这种工作原理的“强力手套”(运动学+卡尔曼滤波器)已被公司和大学等机构展示。我在 TU Eindhoven 看到的最近一个使用 MPU6050,在编织成手套的柔性基板上以及一些支持传感器(我认为目前它只是网络摄像头)都被输入到一个大型的 Matlab 驱动的卡尔曼滤波器中。它的工作重复性在 1 毫米以内。

基本问题

自然,系统中相关部件的规格以及系统的“可接受误差”都会改变确切的限制,但是我可以预期航位推算工作的时间或距离是否有一个数量级?我很清楚,对于大多数实际目的而言,在很长的距离(几码左右)误差变得太大,但在几英尺之内呢?

这可以通过研究惯性导航系统的短期误差动态来解决。它在许多 文本中都有详细介绍,但这里是简短的“无方程”版本。

惯性导航的工作原理如下:

  1. 准确了解您的初始位置、速度和姿态(即俯仰滚动和偏航)。

  2. 整合你的陀螺仪的输出(角速率)在短时间内\$\Delta t\$ 以获得俯仰、滚动和偏航的增量,并将它们添加到你当前的姿态。

  3. 使用您刚刚计算出的新姿态以数学方式旋转您的加速度计读数,使其与地球保持水平。

  4. 从新级别的加速度计读数中减去重力。

  5. 在短时间内积分您的加速度减重力测量值 \$\Delta t\$ 以获得速度增量。将此添加到您当前的速度。

  6. 在短时间内积分您新计算的速度 \$\Delta t\$ 以获得位置增量。将此添加到您当前的位置。

  7. 根据需要重复步骤 2-6。

假设你的陀螺仪有一些错误——例如,偏差\$b_g\$。误差将被积分一次为姿态,再次积分为速度,然后再次积分为位置。因此,仅从一个时间步开始,该误差就会随着 \$ b_g \times \Delta t \times \Delta t \times \Delta t = b_g (\Delta t)^3 \$ 而增长。

此外,这种偏差会累积到姿态中,这会导致加速度计调平错误,这将导致加速度调平错误的方向,然后将其整合到错误的方向 - 三层误差。

这意味着陀螺仪误差会导致位置误差随着时间的立方增长

由同样的逻辑加速度计误差导致位置误差随时间的平方增长

因此,您只需几秒钟就可以从手机级 MEMS 传感器获得有用的(纯)惯性导航。

即使你有非常好的惯性传感器——比如飞机级——那么你仍然基本上被限制在十分钟以下的(纯)惯性导航中。原因是第 3 步 - 重力随高度变化。把你的身高弄错了,你的重力就会不对,这会导致你的身高不对,这会导致你的重力更不对等等——指数误差增长。因此,即使是军用喷气式飞机中的“纯”惯性导航系统通常也会有气压高度计之类的东西。来源

解决方案

此外,一个普遍的共识似乎是,在改进传感器之后改善这些限制的唯一方法是提供一个不会出错的参考。

即使你有一个参考姿态(例如提供航向的磁力计,以及提供准确俯仰和横滚的其他东西),你仍然会受到加速度计中的 \$ t^2 \$ 误差的限制。因此,某种定位是必要的。

一些系统使用相机和标记来解决这个问题。便携/可穿戴设备可以提供什么样的参考点?

研究商业产品可以做到这一点。

从概念上讲,它的工作原理类似于立体视觉——您在摄像机之间有一个已知的基线,并且从每个摄像机观察到每个标记的角度不同。由此,可以计算每个标记的 3D 位置(相对于相机)。它可以与更多相机一起更好地工作。

我已经看到使用无线电波来准确测量长距离,但我无法判断这样的系统是否可以使用“现成的”组件在如此小的范围内(就测量的距离而言)准确。

使用便宜的硬件,decawave UWB可能会有一些用处(10 厘米左右)。您需要提出自己的算法。

我知道可以在更长的距离内使用 GPS,但我怀疑任何消费电子级 GPS 的分辨率都足以帮助我解决问题。

在身体旁边,GPS 系统会很困难。获得厘米级 GPS 依赖于(非常、非常微弱的)GPS 信号的连续相位跟踪,如果天线靠近身体,而身体正在四处移动,这将是极其困难的!对于仅 L1 的系统——不管它们是便宜的还是昂贵的——跟踪必须持续很长时间(10 分钟以上),因此对于这个问题是不切实际的。双频接收器有时可能会工作,但这些确实不便宜(数千美元)。