Open Source Robotics

Una colección curada de proyectos, herramientas y software de robótica de código abierto de alta calidad.

IMU Preintegration

  • También llamado: preintegrated IMU factor, on-manifold preintegration
  • Categoría: State estimation & navigation › Localisation
  • Etiquetas: imu, state-estimation, factor-graphs, sensor-fusion, slam

Combinación de las muchas muestras de la IMU entre dos fotogramas clave en una única medida de movimiento relativo que no depende de sus estados absolutos, para que un optimizador no tenga que volver a integrar cuando cambian las estimaciones.

Definición

Una IMU produce muestras de acelerómetro y giroscopio con mucha más frecuencia que los fotogramas que produce una cámara o un LiDAR. En un estimador basado en optimización, añadir un estado por cada muestra de la IMU haría el problema demasiado grande, pero integrar sin más las muestras en una pose tiene otro problema: el resultado depende de la orientación, la velocidad y los sesgos iniciales, que a su vez se están estimando. Cada vez que el optimizador los cambiara, habría que volver a integrar todo el tramo de datos de la IMU. La preintegración de IMU (IMU preintegration) lo evita integrando las medidas entre dos estados en el sistema de referencia del cuerpo del primer estado, lo que produce cambios relativos de rotación, velocidad y posición que no dependen de la pose y la velocidad iniciales.

Lupton y Sukkarieh introdujeron la preintegración para la navegación visual-inercial (2012), y Forster, Carlone, Dellaert y Scaramuzza la reformularon sobre la variedad de rotaciones (2015, ampliada en 2017); esa formulación es la que usan hoy la mayoría de los sistemas basados en grafos de factores. La gravedad se trata por separado, volviendo a añadirla cuando los términos preintegrados se comparan con los dos estados. La dependencia de los sesgos se trata con una corrección de primer orden: durante la integración, el método acumula también los jacobianos de las magnitudes preintegradas respecto a los sesgos del giroscopio y del acelerómetro, de modo que un pequeño cambio en la estimación del sesgo actualiza la medida a bajo coste. La covarianza de la medida combinada se propaga junto con ella, lo que da al factor su peso. Si la estimación del sesgo se aleja mucho del valor usado durante la integración, la integración se rehace.

El resultado es un único factor de IMU entre fotogramas clave consecutivos en un grafo de factores, que conecta sus poses, velocidades y sesgos, normalmente junto con un factor que modela el paseo aleatorio lento de los sesgos. Esto es lo que hace práctico mantener los datos de la IMU dentro de estimadores de ventana deslizante y de suavizado completo como VINS-Mono, el modo inercial de ORB-SLAM3, LIO-SAM y LVI-SAM. La precisión sigue dependiendo de los parámetros de ruido y sesgo de la IMU que se dan al factor, de la sincronización temporal con otros sensores y del esquema de integración discreta, que supone que las medidas se mantienen constantes o varían de forma sencilla entre muestras.

Por qué importa

Sin preintegración, la optimización visual-inercial y LiDAR-inercial fuertemente acoplada sería demasiado lenta para ejecutarse a bordo de un robot. Es la razón por la que los datos de la IMU pueden estar junto a las medidas de cámara, LiDAR y otras en un único grafo de factores.

Aplicaciones clave

  • Odometría visual-inercial y back ends de SLAM
  • Odometría y mapeo LiDAR-inercial
  • Fusión en grafos de factores de datos de IMU con GPS, radar u odometría de ruedas
  • Estimación en línea de los sesgos del acelerómetro y del giroscopio
  • Calibración cámara-IMU y LiDAR-IMU

En la práctica

Con GTSAM, un desarrollador crea un objeto de preintegración con las densidades de ruido y los valores de paseo aleatorio de los sesgos de la IMU, tomados de la hoja de datos o de un análisis de varianza de Allan de datos registrados. Cada muestra de la IMU entre dos fotogramas clave se introduce en él y, cuando llega el siguiente fotograma clave, el resultado acumulado se convierte en un factor de IMU que vincula las variables de pose, velocidad y sesgo de los dos fotogramas clave. Cuando el optimizador actualiza después los sesgos, el factor usa sus jacobianos almacenados en lugar de volver a procesar las muestras. Los sistemas que se localizan con otros sensores, como el georradar, usan el mismo factor para conectar las poses entre las medidas de radar, menos frecuentes.

Ideas erróneas comunes

  • La preintegración elimina la deriva de la IMU — solo reorganiza la integración; los errores de ruido y de sesgo siguen ahí y deben restringirse con otros sensores
  • La medida preintegrada queda fija una vez calculada — depende de la estimación del sesgo, que se corrige a primer orden y requiere volver a integrar si el sesgo cambia sustancialmente
  • La preintegración es solo un truco de velocidad — también proporciona una covarianza correctamente propagada, que es lo que permite al optimizador ponderar los datos de la IMU frente a otros sensores

Quién debería saberlo

  • Desarrolladores de SLAM y de odometría visual-inercial
  • Ingenieros de estimación de estado
  • Ingenieros de navegación de drones y robots con patas
  • Investigadores que construyen estimadores con bibliotecas de grafos de factores

Tecnologías relacionadas

  • GTSAM
  • Varianza de Allan (Allan Variance)
  • Grupos de Lie (Lie Groups)
  • VINS-Mono
  • LIO-SAM
  • Sistemas de navegación inercial (Inertial Navigation Systems)

Términos relacionados

  • IMU
  • Factor Graph
  • Visual-Inertial Odometry
  • Tightly Coupled Sensor Fusion
  • Keyframe
  • LiDAR Odometry

Proyectos relacionados

  • LingBot-Map: Streaming 3D reconstruction from one camera: pose and depth for every frame, live
  • oomwoo: Open-source DIY robot vacuum: 3D-printed, ROS2 + 2D LiDAR, fully local.
  • Cartographer: Google's real-time 2D and 3D SLAM system for multi-platform robotics
  • OpenCat: An open-source Arduino and Raspberry Pi-based quadruped robot pet framework
  • FAST-LIVO2: Fast, direct LiDAR-inertial-visual odometry from HKU-MARS, published in IEEE T-RO
  • DimOS: Python robotics runtime with agents, SLAM and teleop, no ROS required

Este sitio web requiere JavaScript. Por favor, habilite JavaScript para explorar nuestros proyectos de robótica.