2011-01-20 15 views
5

Vi muchos ejemplos sobre la filtración de los valores del acelerómetro, para cancelar la gravedad (filtro de paso alto).Filtrado de acelerómetro Android?

Pero la mayoría de ellos eran de primer orden uno, que se dice que es simple, pero lento y no el mejor (aunque no sé nada sobre los filtros o DSP).

Alguien aquí dijo que existe la mejor solución utilizada en DSP para detectar el movimiento. Lamentablemente, ni siquiera puedo imaginar lo que sería, ya que soy completamente ajeno al campo.

Espero que alguien pueda decir al menos el tipo de filtros que se pueden utilizar al tratar con el sensor. Por supuesto, incluso una breve introducción al algoritmo específico estará muy contento :)

Gracias de antemano.

Respuesta

1

Desea utilizar la clase SensorListener() de Android. Por ejemplo, "The Schwartz Unsheathed" es un proyecto de código abierto de Android alojado en Google Code que parece que debería ser bastante útil (escrito por Clark Scheff).

Puede consultar su fuente a través del SVN http://code.google.com/p/the-schwartz-unsheathed/source/checkout o simplemente navegar en la web. La fuente se divide en una Actividad (TheSchwartz.java) y una Vista (GraphView.java). GraphView.java contiene SensorListener() clases de anuncio onSensorChanged() que es donde se produce el procesamiento del acelerómetro. Líneas 284 y 285:

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

El valor de magnitude se evalúa por ningún movimiento, un "éxito" o un "swing" del teléfono Android. Me doy cuenta de que esto no filtra los datos en un sentido de procesamiento de la señal, pero muestra una forma de clasificar los datos del sensor. Espero eso ayude.

2

la guía DSP es lo que estás buscando. Proporciona la "teoría" básica así como las matemáticas detrás del procesamiento digital de señales y las obras.

http://www.dspguide.com/ch14.htm Ese es un buen punto de partida

comprobarlo.

Y por experiencia personal, un filtro de 1er orden será lo suficientemente "bueno" para la mayoría de las aplicaciones simples. Aunque esto depende completamente de la aplicación específica

4

Puede probar con un filtro FIR o IIR de orden superior que podría darle una transición de dominio de frecuencia más nítida. Pero un método más avanzado es usar un filtro adaptativo de Kalman. Aquí está one article on accelerometers and Kalman filters.

+0

Gracias chicos! Las guías fueron muy útiles. –

Cuestiones relacionadas