我正在尝试确定使用安卓的线性加速度数据的好处,而不是像in Androids API reference和讨论的in this other stackoverflow question那样简单地应用低通滤波器。
我问,因为我试图获得一个免费的应用程序,记录线性加速度(以及完整的文件我的其他要求(采样率,写入数据等))。我没有找到一个,所以我考虑只使用一个应用程序记录使用标准的加速度计,然后我将简单地应用低通滤波器的数据。或者,我可以只写我自己的应用程序来做我需要的事情--但我在Android dev方面没有太多经验,这需要一些时间。
发布于 2013-07-26 00:48:31
我已经对这个主题进行了一些深入的研究,也许我能够帮助您找到正确的方向。
正如其他人提到的那样,只有一些手机实现了TYPE_LINEAR_ACCELERATION和TYPE_GRAVITY,而且它们通常都配备了陀螺仪。Droid Razr甚至有一个陀螺仪,但他们从来没有费心去实现它或TYPE_LINEAR_ACCELERATION。我相信GS2实现了TYPE_LINEAR_ACCELERATION,但没有陀螺仪,所以他们一定是使用了磁性传感器或某种低通滤波器。这可能是令人沮丧的。
在大多数有陀螺仪的手机上,加速度传感器和陀螺仪之间有某种融合(可能是一个互补的滤波器来补偿漂移,然后是四元数或卡丹角来隔离重力)。这些融合和过滤器可以以不同的方式实现,使用不同的硬件,等等。不同设备的延迟和准确性会有所不同,因此TYPE_LINEAR_ACCELERATION并不总是会产生相同的结果。
如果你的手机没有TYPE_LINEAR_ACCELERATION,你就只能使用TYPE_ACCELERATION,它不能将重力(倾斜)和线加速度分开。
一种选择是应用低通滤波器。这可能会工作,也可能不工作,这取决于您的应用程序。我已经写了一个免费的应用程序来帮助开发人员和其他感兴趣的人探索低通滤波器选项。
另一种选择是在设备处于静态状态时仅测量设备的倾斜度,然后在设备处于非静态状态时应用该重力测量。如果设备不经常改变方向,这可能是一个很好的选择,因为它真的很快和简单。
一个很好的替代传感器融合选项是使用磁性传感器而不是陀螺仪。假设磁场不受硬铁或软铁扭曲的影响,这个选项将适用于几乎所有的设备。
我已经在开源项目Acceleration Explorer中实现了所有这些方法
https://stackoverflow.com/questions/17263256
复制相似问题