我看到了很多有关过滤加速度计值以消除重力(高通滤波器)的示例。
但是大多数都是一阶的,据说这种方法简单但滞后且不是最好的选择(尽管我对滤波器或DSP一无所知)。
这里有人说,在DSP中存在更好的解决方案来感知运动。遗憾的是,我甚至无法想象它会是什么,因为我完全是外行。
我希望有人可以告诉我在处理传感器时可以使用哪些类型的滤波器。当然,即使是对特定算法的简要介绍也将非常受欢迎:)
提前致谢。
我看到了很多有关过滤加速度计值以消除重力(高通滤波器)的示例。
但是大多数都是一阶的,据说这种方法简单但滞后且不是最好的选择(尽管我对滤波器或DSP一无所知)。
这里有人说,在DSP中存在更好的解决方案来感知运动。遗憾的是,我甚至无法想象它会是什么,因为我完全是外行。
我希望有人可以告诉我在处理传感器时可以使用哪些类型的滤波器。当然,即使是对特定算法的简要介绍也将非常受欢迎:)
提前致谢。
您想要使用Android的SensorListener()
类。例如,“The Schwartz Unsheathed”是一个开源的Android项目,托管在Google Code上,看起来应该非常有用(由Clark Scheff编写)。
您可以通过SVN http://code.google.com/p/the-schwartz-unsheathed/source/checkout查看其源代码,或者直接在Web上浏览它。源代码分为一个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 手机的“静止”、“击中”或“挥动”。我意识到这并不是在信号处理意义上过滤数据,但它确实展示了一种分类传感器数据的方法。希望能对您有所帮助。