Doble integración con el BNO055 para datos de posición

2

Estoy tratando de obtener datos de posición (x, y, z) de la IMU BNO055 de adafruit. Me dieron una biblioteca en java, por lo que puedo comunicarme con la IMU. He podido obtener rumbo, desvío, inclinación a +/- 0,1 grados y creo que puedo hacer lo mismo con los datos de posición. Mi código actual mide el tiempo transcurrido en las muestras y luego agrega la nueva muestra multiplicada por el cambio en el tiempo. El problema con esto es que el error es el tiempo ^ 4 porque tengo que integrarme dos veces. Mi objetivo es obtener la precisión de posición de +/- media pulgada. ¿Cómo puedo cambiar mi código para obtener una mayor precisión?

He oído cosas sobre la fusión de sensores, no entiendo exactamente cómo se aplica a mi estuche, pero sí tengo acceso a los codificadores en todas las ruedas de mi tren de transmisión.

    
pregunta Archishmaan P

1 respuesta

1

¿Cómo puede obtener una precisión de posición de ± ½ pulgada?

Probablemente no puedas, al menos no por mucho tiempo. La deriva es un problema fundamental de la navegación inercial. En última instancia, tiene que integrar de forma doble la aceleración y los errores de esa explosión cuadráticamente con el tiempo. Esa es la física básica que no puedes moverte.

Tenga en cuenta que cualquier cosa que haga cómputo es solo relativa a la posición inicial. Cualquier error en la posición inicial se agrega directamente a cualquier error computado más adelante. ¿Conoces tu posición de inicio sustancialmente mejor que ± ½ pulgada?

Dado que el error aumenta con el cuadrado de tiempo, después de un tiempo finito, el error es mayor que su límite y los resultados son inútiles. Sin embargo, eso también significa que el error está dentro del rango aceptable dentro de algún límite de tiempo. Si puede trabajar dentro de ese límite de tiempo, el uso de la navegación inercial podría funcionar para usted.

Por ejemplo, una vez hice un proyecto que seguía el movimiento de la cabeza de un golfista durante un swing. Lo hizo mediante la navegación inercial utilizando sensores MEMs baratos. El resultado se volvió inútil después de unos dos segundos. Afortunadamente, eso era todo lo que necesitábamos, y estábamos buscando tendencias de todos modos y no necesitábamos una posición absoluta muy precisa. Esta misma configuración habría sido completamente inútil, por ejemplo, mapear los movimientos del golfista mientras caminaba por el green.

En la práctica, la mayor parte de la navegación inercial se utiliza para completar entre las correcciones de posición absoluta obtenidas de otras formas, como el GPS. Las correcciones absolutas se pueden usar para restringir los errores de integración doble, pero aún así permiten que el sistema interial proporcione detalles de alta frecuencia entre las correcciones absolutas. Los algoritmos realmente inteligentes pueden usar la información inercial para promediar el ruido de fluctuación de las soluciones absolutas, mientras que las soluciones absolutas limitan el crecimiento de tiempo de los errores del sistema inercial.

Busca algo llamado filtro Kallman. Es bueno para la interpolación entre muestras, con la muestra ocasional faltante que es razonablemente bien tolerada.

    
respondido por el Olin Lathrop

Lea otras preguntas en las etiquetas