5

我看到了很多关于过滤加速度计值的例子,以抵消重力(高通滤波器)。

但是它们中的大多数是一阶的,据说很简单,但滞后而不是最好的(尽管我对过滤器或 DSP 一无所知)。

这里有人说在DSP中存在更好的解决方案来感知运动。遗憾的是,我什至无法想象它会是什么,因为我完全是这个领域的局外人。

我希望有人至少能说出在处理传感器时可以使用的过滤器类型。当然,即使是对具体算法的简单介绍也会很高兴:)

提前致谢。

4

3 回答 3

4

您可以尝试更高阶的 FIR 或 IIR 滤波器,它可以为您提供更清晰的频域转换。但更高级的方法是使用自适应卡尔曼滤波器。这是一篇关于加速度计和卡尔曼滤波器的文章。

于 2011-01-20T04:32:13.690 回答
2

DSP 指南正是您要找的。它给出了数字信号处理和作品背后的基本“理论”和数学。

http://www.dspguide.com/ch14.htm 这是一个很好的起点

看看这个。

从个人经验来看,一阶滤波器对于大多数简单的应用程序来说已经足够“好”了。虽然这完全取决于具体的应用

于 2011-01-20T02:44:58.583 回答
1

你想利用 Android 的SensorListener()Class。例如,“The Schwartz Unsheathed”是托管在 Google Code 上的开源 Android 项目,看起来应该非常有用(由 Clark Scheff 编写)。

您可以通过 SVN http://code.google.com/p/the-schwartz-unsheathed/source/checkout查看它的源代码,或者只是在网络上浏览它。源被分解为一个 Activity ( TheSchwartz.java ) 和一个 View ( GraphView.java )。GraphView.java 包含SensorListener()广告onSensorChanged()类,这是加速度计处理发生的地方。第 284 和 285 行:

magnitude = (float)Math.sqrt(values[0]*values[0]+values[1]*values[1]+values[2]*values[2]);
magnitude = Math.abs(magnitude - SensorManager.GRAVITY_EARTH);

的值magnitude是针对 Android 手机的不动、“撞击”或“摆动”进行评估的。我意识到这不会在信号处理意义上过滤数据,但它确实显示了一种对传感器数据进行分类的方法。希望能帮助到你。

于 2011-01-20T03:52:12.367 回答