Estoy usando el acelerómetro en un dispositivo Android para rastrear y detectar ciertos movimientos, usando solo un eje ya que los movimientos son lineales a lo largo de ese eje.
Estoy usando un filtro simple para eliminar el ruido de los datos del acelerómetro:
ouput = ouput + alpha * (input - output)
El resultado se parece a lo que esperaría y parece utilizable para mis propósitos:
Quiero calcular la velocidad a partir de los datos del acelerómetro que obtengo, pero aquí es donde me encuentro con problemas, como se puede ver aquí:
Al igual que con la aceleración, la curva de velocidad parece plausible, pero no vuelve a cero después de cada repetición y cae a valores negativos.
Por ahora, solo estoy escribiendo los datos sin procesar del acelerómetro en un archivo y luego los modifico y analizo usando hojas de cálculo, por lo que estos cálculos se hacen todos a mano.
V = V0 + A * dt
para calcular la velocidad.
V0
es inicialmente cero, luego se establece en el valor anteriorA
es la aceleración ajustada (es decir accel - grav
, )dt
es el intervalo, la diferencia entre la marca de tiempo actual y la anteriorPensé que el problema tal vez es que la aceleración tampoco vuelve a cero y en cambio se mantiene ligeramente por debajo de cero (como se puede ver en la primera imagen de arriba), lo que agrega demasiados valores negativos que se propagan en el cálculo. Así que me puse grav
a ser un número más pequeño, y parece haber un punto óptimo. En este ejemplo, los valores grandes de grav
conducen a que la velocidad caiga a valores negativos, los valores pequeños invierten el efecto, con la curva de velocidad aumentando hacia valores positivos más altos. A la vuelta grav = 9.3
(9,32 en esta imagen), el gráfico parece ser más plausible. Este intervalo es muy pequeño, 9.28 y 9.35 ya muestran una importante tendencia a subir o bajar, respectivamente.
¿Cuál podría ser la razón de ésto? ¿De dónde viene el ~9.32? ¿Por qué no es el ~9.55 que observo durante el período inmóvil inicial? ¿Hay alguna forma de modificar los cálculos para obtener valores más consistentes? Por ejemplo, entre cada repetición debe haber un período corto de V = 0
.
Calibrar y validar. Estas son dos palabras que necesita cada vez que realiza cálculos de parámetros físicos a partir de la medición. Necesita saber cómo responde el dispositivo a las aceleraciones conocidas para determinar si los números que obtiene son significativos en el nivel en que desea usarlos. Lo más fácil sería si el fabricante le proporcionara esos detalles. Lamentablemente, en estos días, los dispositivos de este tipo a menudo vienen sin ningún tipo de documentación.
El hecho de que obtenga 9.3 a 9.5 para la gravedad es sugerente. Sugiere que tiene un problema de compensación o de escala. Una forma de verificar esto sería leer los valores con el dispositivo sobre una mesa, luego darle la vuelta y leer de nuevo. Un desplazamiento se mostrará como una diferencia de arriba hacia abajo. Un problema de escala mostrará valores bajos en ambos sentidos.
Si tiene una forma de poner el dispositivo en una situación con una aceleración conocida, eso también ayudaría. ¿Quizás un tocadiscos o algo así? Aunque algunos de estos dispositivos pueden ser engañados al girar en un círculo demasiado cerrado.
La deriva constante sugiere que podría tener un problema de respuesta. Puede que no sea lineal con la aceleración. Por ejemplo, se puede recortar una espiga estrecha pero alta. Las pruebas para tales se vuelven bastante complicadas. Necesitaría perfiles de aceleración conocidos y luego ver cómo responde el dispositivo. Corregir agrega aún más complicaciones.
Esto debería ser un comentario, pero quería incluir un gráfico.
Sería útil tener detalles del movimiento que está observando.
¿Has comprobado que las aceleraciones a lo largo de los otros dos ejes ortogonales son cero?
El área bajo un gráfico de aceleración contra el tiempo te da el cambio en la velocidad.
Entonces, el área azul representa el cambio positivo en la velocidad y, solo por inspección, parece más pequeña que el área roja, que es el cambio negativo en la velocidad.
Entonces, el cambio general en la velocidad es negativo.
Si sospecha que el cambio general en la velocidad es cero, ¿el cero de aceleración está en el lugar equivocado, es decir, el eje de aceleración está desplazado?
usuario191954
usuario199112