¿Cómo clasificar los datos del acelerómetro?

7

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! Aceleración |  Frenado de un coche

riik
fuente
¿Cuál es la unidad en el ? X-eje
Gilles
La unidad del eje x es el tiempo. Tomé muestras con 60 Hz. Entonces los valores en el eje x dividido por 60 representarían segundos.
Riik
Está bien, es el número de muestras. Una forma sería obtener una ventana deslizante del tamaño que está sugiriendo y poner condiciones en la media y la varianza de las muestras recolectadas, si es necesario, agregar condiciones en intervalos de cruce cero. Pero si hace el análisis sin las ventanas de corto tiempo, ¿no puede el número de bordes ascendentes de la señal de actividad (señal azul) indicar cuántas veces ha acelerado y los bordes descendentes para romper?
Gilles
1
@PaulR gracias por la aclaración! Acabo de actualizar la pregunta en consecuencia.
riik
2
OK, si usa los datos del acelerómetro, en principio podría usar el signo de la aceleración (- para frenar, + para acelerar). El problema es el ruido. Probablemente pueda aumentar suficientemente la SNR utilizando un filtro Savitzky Golay .
Matt L.

Respuestas:

1

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.

Clayton Pipkin
fuente
1

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.

Naveen
fuente
1

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 que filterla señal del eje es correcta, puede ingresar la señal del acelerómetro lowpasspara limpiar la alta frecuencia noisey luego ver la señal del señal para detectar si es una ruptura o una aceleración .una(tyo)<0 0una(tyo)>0 0

Debe intentar filtrar con un butterworthpaso 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.10Hz

Andrea
fuente