我正在尝试确定使用Android的线性加速数据的好处,而不是简单地应用in Androids API reference所示的低通滤波器并讨论in this other stackoverflow question。
我正在问我正试图获取一个记录线性加速的免费应用程序(以及我的其他要求(采样率,将数据写入文件等)的完整文件)。我找不到一个,所以我考虑使用一个使用标准加速度计记录的应用程序然后我只是将低通滤波器应用于数据。或者我可以编写自己的应用程序来完成我需要的工作 - 但我在Android开发方面没有太多经验,这需要一些时间。
答案 0 :(得分: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
中实施了所有这些方法