Uso de GNSS-INS-SIM para simular la navegación solo en IMU de un giro a la izquierda

Hace aproximadamente un mes, Aceinna publicó un kit de herramientas de simulación de Python de código abierto para desarrolladores que usan unidades de medición inercial (IMU), GPS y sensores de navegación relacionados. En este blog, examinaremos cómo construir una trayectoria de movimiento básica y luego simular cuánta deriva de posición incurriría en una solución puramente inercial rastreando la trayectoria simulada usando “ integración libre ”. La elegancia de la navegación inercial pura también conocida como “ integración libre ” es simple: no requiere dependencias externas. Elegimos la aplicación de seguimiento de un giro a la izquierda porque el ejemplo es de valor real en aplicaciones de conducción autónoma.

El código fuente e de este blog se encuentra en https://github.com/Aceinna/gnss-ins-sim, y el blog se divide en tres temas:

Teoría de la integración libre

En muchos sentidos, la integración libre de 6 ejes de datos de sensores inerciales para calcular la posición y la orientación es uno de los usos más básicos y obvios de los acelerómetros y sensores de frecuencia (giroscopios). La integración libre es también uno de los algoritmos más exigentes en cuanto a rendimiento en términos de precisión del sensor IMU. Sin embargo, con una adecuada selección de IMU, simulación y una implementación cuidadosa pura inercial, la “ integración libre ” puede ser una poderosa herramienta de navegación cuando otros sensores como LIDAR, cámaras o GPS no son precisos debido a la factores ambientales.

El algoritmo de integración libre es conceptualmente bastante simple. La salida de velocidad de 3 ejes está integrada a la orientación. La orientación se usa para rotar las aceleraciones medidas del marco del cuerpo en el marco de la Tierra, y luego se elimina la gravedad. Las aceleraciones resultantes del marco de la Tierra se integran doblemente a la posición. Esto se muestra en un diagrama a continuación:

GNS-INS-SIM implementa esto como un algoritmo de ejemplo para simular. El archivo demo_free_integration.py muestra exactamente cómo invocar este algoritmo. La implementación de la integración gratuita en sí está contenida en el directorio demo_algorithms. La mecanización del algoritmo se eligió por su precisión numérica. Para preguntas detalladas sobre cómo funciona esta mecanización, deje un comentario.

Generación de una trayectoria de movimiento

GNS-INS-SIM simplifica la generación de una trayectoria de movimiento realista. La trayectoria de movimiento se especifica mediante un archivo CSV, llamado archivo de definición de movimiento. El archivo de definición de movimiento comienza con la especificación de las condiciones iniciales y luego es seguido por filas de valores que representan comandos de movimiento. Hay varios tipos de comandos de movimiento diferentes. Las definiciones de los comandos de movimiento se encuentran en imu_sim.py en el directorio sim. El comando de movimiento tipo 1 especifica la tasa de cambio en el marco del “cuerpo” para cada una de las tasas de ángulo de Euler y las velocidades del marco del cuerpo.

Aquí hay un archivo de definición de movimiento de ejemplo simple que genera un giro a la izquierda realista usando el comando tipo 1 a continuación:

La primera fila de números especifica las condiciones iniciales como indican los nombres de las columnas. Las siguientes tres filas de números especifican el perfil de movimiento. En este caso, acelera a 1 m / s² durante 6,25 segundos y luego gira a la izquierda 90 grados durante 3,2 segundos, seguido de 2,0 segundos adicionales de conducción. Esto es bastante similar a cómo un conductor promedio podría cruzar una intersección con mucho tráfico, y requiere aproximadamente un período de 12 segundos de navegación inercial pura (es decir, “ integración gratuita “).

GNSS-INS-SIM puede generar un archivo “KML”, que es un formato de archivo XML que Google Maps puede leer cómodamente y convertirlo en rutas de navegación. A continuación se muestra la trayectoria de movimiento correspondiente en los mapas de Google.

Simulación de error de deriva de posición, velocidad y actitud

Con el perfil de movimiento y el algoritmo listos, podemos ejecutar la simulación. En este blog hemos elegido el modelo de error Aceinna IMU381 predeterminado. El modelo de error se inicializa con errores de polarización típicos para este sensor: 0.5mG y 5deg / Hr respectivamente. GNSS-INS-SIM hace que sea conveniente ejecutar la simulación con una distribución aleatoria de errores. Por ejemplo, ejecutaremos 10 ensayos para poder trazarlos fácilmente. En el trabajo real, un desarrollador puede optar por ejecutar 1000 o más pruebas para comprender mejor los límites de error. GNSS-INS-SIM luego devuelve un conjunto resumido de estadísticas. Los imprime tanto en la línea de comandos como también almacena el resumen del error en un archivo de texto ‘summary.txt’.

Para este ejemplo de giro a la izquierda, el resultado previsto es un error de deriva promedio de aproximadamente 9 cm con una desviación estándar de 10 cm . GNS-INS-SIM también genera archivos KML para cada ejecución que se trazan a continuación en Google Maps como líneas azules sobre la trayectoria de referencia en rojo para ayudar a visualizar la deriva acumulada. Estos gráficos muestran que la navegación inercial gratuita puede ser bastante precisa durante períodos cortos de tiempo.

El resumen del archivo de resultados de ejemplo se muestra a continuación: