Estoy tratando de detectar si un automóvil aceleró o frenó usando el acelerómetro del iPhone.
En la figura a continuación tracé los datos recopilados. (Para recopilar los datos, el teléfono estaba acostado en el automóvil hacia la parte superior del teléfono hacia el frente).
El problema que tengo ahora es que visualmente puedo ver claramente dónde aceleró el automóvil y dónde frenó (ver más abajo). Pero no puedo entender cómo hacerlo programáticamente.
Lo que básicamente quiero es saber con qué frecuencia un automóvil frenó o aceleró durante un período de tiempo determinado. (Tamaño de la ventana alrededor de 10-30 segundos).
Cualquier ayuda sería muy apreciada.
¡Gracias por adelantado!
Respuestas:
Debería considerar hacer un STFT en la señal del acelerómetro. Esto le permitirá visualizar la frecuencia de la señal. Si puede determinar la frecuencia de los frenos, debe poder establecer un umbral para esa frecuencia de frenado específica y contar cada vez que se excede. También podría medir cuánto tiempo dura el frenado.
¿Cómo estás procesando tu señal? Matlab y Python tienen la función de espectrograma, que le permitirá ver la frecuencia real de frenado. Desde allí, podrá determinar la frecuencia de frenado y el umbral.
fuente
Cuando se aplican los frenos, la aceleración a lo largo de la dirección del movimiento revertirá el signo. Por ejemplo, si coloca su teléfono de manera que el eje z del acelerador esté en la dirección del eje de gravedad (es decir, frente a la tierra), entonces la aceleración a lo largo del eje z es -g. Por otro lado, si el eje z negativo está alineado con g, entonces el eje z del acelerómetro mide + g. Esto es análogo al escenario de un automóvil que acelera y frena, aunque la magnitud de la desaceleración es un poco menor que la aceleración. Puede comenzar definiendo el eje de referencia como el eje g y definiendo los otros 2 ejes según la dirección de aceleración mínima y máxima, utilizando una matriz de rotación. Básicamente, cambia el eje de referencia de las coordenadas x, y, z que se basa en la orientación del teléfono a un sistema de referencia estacionario g, a, s (donde g es el eje de gravedad, a es la dirección de la aceleración máxima y el eje estacionario s). También puede usar un giroscopio para lograr esta rotación del eje como se describe enesta pagina Una de las que puede ver en el acelerometro daya en los ejes transformados, puede clasificar fácilmente las regiones de aceleración y desaceleración en función de la señal de un solo eje, independientemente de la orientación del teléfono al buscar cruces por cero.
fuente
Debe conocer la orientación del teléfono porque la señal del eje debe ser la misma que la del movimiento del automóvil. Suponiendo quea (tyo) < 0 a (tyo) > 0
filter
la señal del eje es correcta, puede ingresar la señal del acelerómetrolowpass
para limpiar la alta frecuencianoise
y luego ver la señal del señal para detectar si es una ruptura o una aceleración .Debe intentar filtrar con un10 Hz
butterworth
paso bajo del segundo o tercer orden con una frecuencia baja, por ejemplo, 10 o también menos, debe probar algunas frecuencias de corte que se vean en el gráfico.fuente