6

我正在尝试确定使用 Android 的线性加速数据的好处,而不是简单地应用Android API 参考中介绍的低通滤波器,并在另一个 stackoverflow 问题中讨论

我在尝试获取一个记录线性加速度的免费应用程序(以及满足我的其他要求(采样率、将数据写入文件等))。我一直找不到,所以我考虑过只使用一个使用标准加速度计记录的应用程序,然后我将简单地将低通滤波器应用于数据。或者,我可以编写自己的应用程序来做我需要的事情——但我在 Android 开发方面没有太多经验,这需要一些时间。

4

1 回答 1

14

我已经深入探讨了这个主题,也许可以帮助您指出正确的方向。

正如其他人所提到的,只有部分手机实现了 TYPE_LINEAR_ACCELERATION 和 TYPE_GRAVITY 并且它们通常配备了陀螺仪。Droid Razr 甚至有一个陀螺仪,但他们从来没有费心去实现它或 TYPE_LINEAR_ACCELERATION。我相信 GS2 实现了 TYPE_LINEAR_ACCELERATION,但没有陀螺仪,所以他们一定使用了磁传感器或某种低通滤波器。这可能令人沮丧。

在大多数带有陀螺仪的手机上,加速度传感器和陀螺仪之间存在某种融合(可能是补偿漂移的互补滤波器,然后是四元数或万向角以隔离重力)。这些融合和过滤器可以以不同的方式实现并使用不同的硬件等……延迟和准确性会因设备而异,因此 TYPE_LINEAR_ACCELERATION 并不总是会产生相同的结果。

如果您没有带有 TYPE_LINEAR_ACCELERATION 的手机,您就会被 TYPE_ACCELERATION 卡住,它无法将重力(倾斜)与线性加速度分开。

一种选择是应用低通滤波器。根据您的应用程序,这可能会或可能不会起作用。我编写了一个免费应用程序来帮助开发人员和其他感兴趣的各方探索低通滤波器选项。

另一种选择是在设备静​​止时仅测量设备的倾斜度,然后在设备非静止时应用重力测量。如果设备不经常改变方向,这可能是一个很好的选择,因为它非常快速和简单。

一个很好的替代传感器融合选项是使用磁传感器而不是陀螺仪。假设磁场不受硬铁或软铁失真的影响,此选项几乎适用于所有设备。

我已经在开源项目Acceleration Explorer中实现了所有这些方法

于 2013-07-25T16:48:30.590 回答