Cómo encontrar la distancia recorrida usando un acelerómetro

Los sensores inerciales basados ​​en MEMS como MPU 6050 sufren ruidos internos y, por lo tanto, producen un error de posición de crecimiento de aliados cúbicos con el tiempo, cuando se resuelven las ecuaciones de navegación. Por lo tanto, los datos de los dispositivos de navegación basados ​​en sensores inerciales son de poca utilidad después de unos segundos. Para superar este problema de acumulación de error se utiliza el algoritmo de actualización de velocidad cero (ZUPT). La marcha humana normal muestra una parada momentánea cuando entra en contacto con el suelo. El algoritmo ZUPT aprovecha este comportamiento de zancada humana al detectar este momento de parada y eliminar cualquier medición de velocidad distinta de cero durante este momento de parada. Por lo tanto, estos acelerómetros y giroscopios basados ​​en MEMS se pueden utilizar para calcular la distancia y el posicionamiento. Hay algunos dispositivos basados ​​en este algoritmo que puede encontrar aquí oblu. Aquí hay un video de cómo navegar sin GPS utilizando solo IMU.

No puedes. Sin ninguna fuente de referencia absoluta, no hay forma de deshacerse del sesgo.

Afortunadamente, los candidatos para servir como referencias son numerosos: balizas, magnetómetros (para estimación de velocidad), visión por computadora, etc.

No puede convertir directamente la aceleración en distancia, y como ha notado, la integral doble requerirá constantes que no tiene. Sin embargo, puede adivinar la distancia convirtiendo la aceleración en pasos dados (hay algoritmos en Stack Overflow que deberían ser fáciles de implementar en Java). A partir de ahí, puede multiplicar por longitudes de zancada promedio, lo que será aún más preciso si conoce el tamaño físico del usuario.

Puede hacer algunas suposiciones, es decir, la velocidad inicial es igual a cero, para deshacerse de algunas constantes. Espero que eso ayude.