Tengo la necesidad de detectar dos gestos diferentes que ocurren al mirar los datos del acelerómetro. Aquí hay un resumen (tan breve como puedo hacerlo):
Digamos que un iPhone se balancea de un lado a otro mientras permanece boca arriba. El usuario puede hacer una oscilación (una vez hacia adelante o hacia atrás, gesto uno) o una oscilación continua durante cualquier cantidad de tiempo (gesto dos).
Actualmente mi código mantiene una lista de los datos del acelerómetro del dispositivo (eje y) de los últimos 50 cuadros. Cada cuadro de estos datos se somete a un algoritmo FFT (este http://goo.gl/yi3mn ), y luego trato de interpretar el dominio de frecuencia dado. He notado una fuerte relación entre la velocidad de las oscilaciones y la potencia del rango medio a bajo del espacio de frecuencia.
El problema es que necesito detectar (en tiempo real a medida que el movimiento anima algo en la pantalla) si la oscilación que acaba de terminar es singular o una que continúa en otra oscilación en la dirección opuesta. Aquí debo señalar que los acelerómetros funcionan con placas de presión. Cuando una oscilación se detiene, los datos de entrada mostrarán el valor opuesto desde cuando se realizó la oscilación. Esto hace que sea difícil ver alguna diferencia obvia entre un solo movimiento hacia adelante y un movimiento doble hacia adelante y luego hacia atrás (al final de cada primera oscilación).
¿Alguien puede sugerir cómo podría hacer uso de una FFT para descifrar un valor de magnitud preciso (o algo más útil) que pueda usar para distinguir entre los gestos descritos anteriormente?
He registrado los datos que estoy usando para enviar archivos de texto. Son los datos sin procesar (valores de fuerza g) a lo largo del eje y de la entrada del acelerómetro.
http://pastebin.ca/2108123 muestra datos para 2 oscilaciones singulares (mantengo el dispositivo quieto al inicio, al final y entre las dos oscilaciones).
NOTA: se han cargado nuevos datos sin procesar con 20 oscilaciones, pero aún no se han trazado. http://pastebin.ca/2108387 muestra datos de 20 oscilaciones continuas (mantengo el dispositivo quieto al principio y al final).