Android Accelerometer filtering?

独自空忆成欢 提交于 2019-12-02 20:58:35

You want to utilize Android's SensorListener() Class. For example, "The Schwartz Unsheathed" is open source Android project hosted on Google Code that looks like it should be quite useful (written by Clark Scheff).

You can check out its source via SVN http://code.google.com/p/the-schwartz-unsheathed/source/checkout or just browse it on the web. The source is broken up into an Activity (TheSchwartz.java) and a View (GraphView.java). GraphView.java contains SensorListener() ad onSensorChanged() classes which is where the accelerometer processing occurs. Lines 284 and 285:

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

The value of magnitude is evaluated for no movement, a "hit" or a "swing" of the Android phone. I realize this does not filter the data in a signal processing sense, but it does show a way to classify sensor data. Hope it helps.

You can try a higher order FIR or IIR filter which could give you a sharper frequency domain transition. But a more advanced method is to use an adaptive Kalman filter. Here's one article on accelerometers and Kalman filters.

the DSP Guide is what you're looking for. It gives the basic 'theory' as well as mathematics behind Digital Signal Processing and the works.

http://www.dspguide.com/ch14.htm That is a good starting point

Check it out.

And from personal experience, a 1st order filter will be 'good' enough for most simple applications. Though this completely depends on the specific application

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!