Aceleración al desplazamiento

Estoy haciendo un programa experimental.

Tengo un teléfono inteligente fijado en el tablero del automóvil con un soporte, durante el viaje leo de una aplicación algún valor del sensor inercial,

Precisamente leo,

Datos del acelerómetro Tiempo (a intervalo fijo) de cada registro en segundos.

Entonces ahora pasaría de aceleración vertical a desplazamiento vertical, para hacer esto debo hacer una doble integración,

Lo intenté, el método de Euler. Desde la condición inicial como

v 0 = 0. esta es la velocidad inicial en el tiempo cero.

X 0 = 0. esta es la posición inicial en el tiempo cero.

definir,

Δ T = intervalo de registro. (en mi caso 0,04s)

luego por cada registro realizado, hago:

v i = v i 1 + a y i Δ T .

X i = X i 1 + v i Δ T .

donde represento el precedente actual y i-1.

Pero el gráfico que obtengo no es muy realista, de hecho tanto la velocidad como el desplazamiento solo crecen, en cambio el efecto que tenía que obtener es que el desplazamiento vertical saliera como algo similar al gráfico de aceleración.

Dado que aplicando este procedimiento, también tengo un alto error, ¿es posible que el gráfico solo esté creciendo y no veo ningún tipo de oscilación vertical?

También leí que el filtro de Kalman se puede aplicar con anticipación para limpiar la señal, ¿podría ser una solución?

¿O debería cambiar el método de integración y cambiar al Euler de Runge Kutta? (La última, sin embargo, no tengo la menor idea de cómo podría configurarse)

Aquí hay un ejemplo de los datos registrados . puede ser útil

Respuestas (1)

Algunos consejos que tengo para ti:

1) Asegúrese de convertir sus valores de tiempo de milisegundos a segundos 2) No asuma un intervalo de tiempo constante. Calcúlelo como la diferencia entre cada medición de tiempo consecutiva 3) Tome sus valores de aceleración como la diferencia entre la lectura del acelerómetro y la columna "Gravedad Y". De esta forma, verá la oscilación real en lugar de una aceleración constante en una dirección.