¿Cómo usar los datos de aceleración de un objeto en movimiento para calcular la distancia?

Leí un par de preguntas similares en este foro y algunos blogs en la web, aunque todavía estoy confundido, estoy decidido a calcular el desplazamiento de objetos usando datos del acelerómetro.

Entonces, traté de usar www.freescale.com/files/sensors/doc/app_note/AN3397.pdf , que da casi un 20-50% de error.

También probé esta ecuación en datos y obtuve mejores resultados.

V1 = V0 + ((a1) * t)
X2 = abs((V1 * t) + (((a1)/2)*t*t))
X2 = X0 + X2
V0 = V1
X0 = X2

Aquí t es la diferencia de tiempo entre dos muestras. X0 es el desplazamiento final. V1,a1 valores actuales. V0 valor anterior.

Aquí están mis gráficos para el movimiento de las lecturas de los sensores de Android.

1) A partir del gráfico del eje Z de aceleración lineal, ¿cómo calculo la distancia? 2) ¿Qué valores debo tomar y cuáles no? cuántas muestras de datos debo usar para el cálculo. ¿Solo para aceleración positiva o para un ciclo completo negativo positivo de datos de aceleración? 3) Qué significa el gráfico de aceleración lineal. Explique sus valores en función del movimiento del objeto.

Su enlace de Dropbox está inactivo, reemplácelo.

Respuestas (1)

No se puede calcular el desplazamiento de esta manera. La nota de la aplicación dice claramente "Cuando se implementa el posicionamiento en 3 ejes, se requiere un procesamiento adicional para anular el efecto de la gravedad terrestre", ¡y ese es el eufemismo del mes!

¡Anular la gravedad es un problema enorme, a menos que su acelerómetro sea perfectamente perpendicular al vector de gravedad de la Tierra! Las aceleraciones que desea medir son probablemente del orden de 1 metro / s 2 o menos, ¿verdad? Eso está superpuesto por gramo = 9.81 metro / s 2 z . Antes de que pueda estimar el desplazamiento que causa la aceleración que le interesa, debe determinar los ángulos de los tres canales del acelerómetro en relación con gramo , luego resta gramo . Afortunadamente, ese procedimiento le dará una dirección hacia el piso... sin embargo, todavía no sabe en qué dirección se encuentra su X y y ¡los ejes están apuntando! Tu acelerómetro podría estar girando 180 grados mientras acelera... y el desplazamiento real podría terminar en la dirección opuesta a la que pensabas que iba. Ahora, un sensor de aceleración perfecto ni siquiera sería sensible a esta rotación, ¡para eso necesitaría un sensor diferente que pueda detectar rotaciones! Tal giroscopio puede o no estar integrado en su dispositivo. Dada la forma en que se implementan la mayoría de los chips de acelerómetro, los giroscopios y los acelerómetros ni siquiera muestrean de forma sincrónica, lo que significa que debe tener un filtro de remuestreo digital para correlacionar las lecturas de ambos sensores para obtener un vector de orientación/posición de seis ejes confiable. No creo que la plataforma Android le brinde suficiente información para hacer eso, en este momento. iOS podría...

Habiendo dicho eso, si desea simplificar las cosas al nivel en el que se encuentra, en este momento, puede (teóricamente) montar su teléfono celular en un riel recto, girarlo con cuidado, hasta que el vector de movimiento apunte exactamente en la dirección de uno de los ejes del acelerómetro, y ese eje es perpendicular a gramo y luego puede aplicar un buen algoritmo de integración numérica a lo que mide en un eje, como uno de los integradores de orden superior descritos por http://mathworld.wolfram.com/NumericalIntegration.html .

Supongo que esa era tu pregunta original, ¿verdad? Me disculpo por arruinar su día con la descripción del problema real, y prometo no aburrirlo con otras ventajas como la calibración de las compensaciones, la deriva de ganancia, la diafonía (ejes desalineados) y las no linealidades.

+1 por arruinar el día de los OP. Esto describe (algo de) el 99 % de transpiración que debe agregarse al 1 % de inspiración para llegar a soluciones reales. No creo que la integración de orden superior deba entrar en esto hasta que se hayan resuelto los problemas más simples de orientación, compensación y ganancia. Tenga en cuenta que los datos del sensor (ver el enlace en cuestión) incluían información del giroscopio...
@Floris: Tienes toda la razón. Al igual que el OP, probé el enfoque ingenuo en mi teléfono... y en 10 minutos estaba hasta las rodillas en la cuestión de cómo detectar la orientación de mi acelerómetro sin datos útiles del giroscopio. Por supuesto, existe una enorme diferencia entre un sistema de navegación inercial real y los sensores de los teléfonos inteligentes: en la realidad, el giroscopio no es solo un sensor electrónico sino un elemento giratorio que mantiene una dirección constante en el espacio. ¡Los acelerómetros están dentro del giroscopio, por lo que la compensación de rotación ni siquiera es necesaria para el primer pedido!
@CuriousOne: Gracias por la respuesta. Hay muchas cosas de su respuesta que no pude entender completamente. ¿hacia dónde apuntan los ejes x⃗ e y⃗? -> Tengo acelerómetro y giroscopio que me muestra la dirección hacia abajo. Tengo un megnetómetro, es decir, una brújula que me muestra el norte (ambos con muy poca precisión como mencionaste). Debe haber una forma de calcular los ejes X, Y y Z del dispositivo a partir de estos datos. ¿Bien?
@Sunil: en mi respuesta, estaba eligiendo el eje z en la dirección de la gravedad, y x e y perpendiculares a eso. La gravedad no define las direcciones de las dos direcciones restantes, por lo que necesitamos, por ejemplo, una brújula (que también forma parte de muchos dispositivos, pero no es muy fiable). Sí, uno puede calcular estas direcciones... con muy poca precisión, como dijiste. Si los resultados serán "suficientemente buenos", depende de su propósito. El uso de la cámara y un patrón adecuado probablemente dará mejores resultados para las mediciones de desplazamiento (es decir, si puede apuntar a un patrón de prueba).