Open Source Robotics

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

Bundle Adjustment

  • También llamado: BA
  • Categoría: State estimation & navigation › Localisation
  • Etiquetas: slam, nonlinear-optimization, computer-vision, 3d-reconstruction, state-estimation

Refinamiento conjunto por mínimos cuadrados no lineales de las poses de las cámaras y de las posiciones 3D de los puntos de referencia, y a veces de los parámetros de la cámara, que minimiza el error de reproyección de todas las características observadas.

Definición

El ajuste de haces (bundle adjustment, BA) refina una reconstrucción 3D ajustando conjuntamente las poses de las cámaras y las posiciones de los puntos 3D, de modo que los puntos, proyectados en cada imagen, caigan lo más cerca posible de donde se observaron realmente las características. La magnitud que se minimiza es la suma de los errores de reproyección al cuadrado, las distancias en píxeles entre las posiciones previstas y medidas de las características, normalmente ponderadas por la incertidumbre de la medida y envueltas en una pérdida robusta como Huber o Cauchy para limitar la influencia de las correspondencias erróneas. El nombre se refiere a los haces de rayos de luz que unen cada punto 3D con los centros de las cámaras que lo observan; la optimización ajusta estos haces hasta que concuerdan. La técnica procede de la fotogrametría, y un tratamiento moderno muy citado es la revisión de Triggs, McLauchlan, Hartley y Fitzgibbon (2000).

El problema es no lineal debido a las rotaciones y a la proyección en perspectiva, así que se resuelve de forma iterativa, normalmente con Levenberg-Marquardt. Su estructura lo hace tratable a gran escala: cada residuo implica solo una cámara y un punto, por lo que el sistema es disperso, y los puntos pueden eliminarse con el complemento de Schur para dejar un sistema mucho más pequeño solo en las variables de las cámaras. La solución solo está definida salvo una libertad de gauge, una rotación y una traslación globales y, para una sola cámara sin otros sensores, una escala global, así que se fijan algunas variables o se añade un prior. Los parámetros intrínsecos y la distorsión de la cámara pueden refinarse a la vez cuando no están bien calibrados.

En robótica, el BA es el núcleo del structure from motion y del SLAM visual basado en fotogramas clave. El BA global optimiza todo el mapa y se ejecuta offline o tras los cierres de bucle; el BA local o de ventana deslizante optimiza solo los fotogramas clave más recientes y los puntos de referencia que ven, manteniendo fijos o marginalizados los estados más antiguos, de modo que puede ejecutarse en tiempo real. Los sistemas visual-inerciales lo amplían con factores de preintegración de la IMU, y pueden añadirse factores de otros sensores en el mismo grafo de factores. El BA se diferencia de la optimización de grafos de poses en que mantiene los puntos de referencia como variables y usa las medidas de imagen en bruto; un grafo de poses solo mantiene poses y restricciones relativas, lo que es más rápido y más pequeño pero descarta información.

Por qué importa

El ajuste de haces es lo que convierte trazas de características ruidosas en trayectorias de cámara y mapas 3D precisos. La mayoría de los pipelines de odometría visual, SLAM visual y fotogrametría dependen de él, y la elección entre BA global, local y de ventana deslizante determina en gran medida el compromiso entre precisión y rendimiento en tiempo real en estos sistemas.

Aplicaciones clave

  • Structure from motion y fotogrametría
  • Back ends de SLAM visual y visual-inercial basados en fotogramas clave
  • Odometría visual de ventana deslizante en drones, vehículos y robots submarinos
  • Refinamiento de la calibración multicámara y cámara-LiDAR
  • Reconstrucción 3D para inspección, cartografía y gemelos digitales

En la práctica

En un sistema SLAM visual-inercial a bordo de un robot submarino o aéreo, se crea un nuevo fotograma clave cada vez que la cámara se ha movido lo suficiente. Después, un optimizador de ventana deslizante refina las poses de los fotogramas clave más recientes, sus velocidades y los sesgos de la IMU, y todos los puntos de referencia vistos en esos fotogramas clave, usando factores de reproyección de las características seguidas más factores de IMU preintegrados entre fotogramas clave. Los fotogramas clave más antiguos se marginalizan en un prior para que la ventana mantenga un tamaño fijo. Una pérdida de Huber limita el efecto de las correspondencias erróneas causadas por objetos en movimiento o reflejos. Cuando se detecta un cierre de bucle, una optimización de grafos de poses o un BA global completo corrige la deriva en toda la trayectoria, normalmente en un hilo en segundo plano.

Ideas erróneas comunes

  • El ajuste de haces es lo mismo que la optimización de grafos de poses — el BA también optimiza las posiciones de los puntos de referencia frente a las medidas de imagen, mientras que un grafo de poses solo mantiene poses y restricciones relativas
  • El BA arregla una mala inicialización — es un optimizador local y necesita una estimación inicial razonable de poses y puntos para converger a la respuesta correcta
  • El BA monocular recupera la escala real — sin otro sensor o una dimensión conocida, la escala no es observable y puede derivar
  • El BA es solo para reconstrucción offline — las variantes local y de ventana deslizante se ejecutan en tiempo real en muchos sistemas SLAM

Quién debería saberlo

  • Ingenieros de SLAM visual y odometría visual
  • Ingenieros de visión por computador y fotogrametría
  • Ingenieros de estimación de estado que fusionan cámaras con otros sensores
  • Estudiantes de robótica que estudian cartografía y localización

Tecnologías relacionadas

  • Structure from Motion
  • Algoritmo de Levenberg-Marquardt (Levenberg-Marquardt Algorithm)
  • Ceres Solver
  • g2o
  • GTSAM
  • COLMAP

Términos relacionados

  • Pose Graph Optimization
  • Factor Graph
  • Keyframe
  • SLAM
  • Visual-Inertial Odometry
  • Camera Intrinsics

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
  • OpenDroneMap: Open-source photogrammetry toolkit that turns drone images into maps and 3D models
  • 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

Vídeos

  • Bundle Adjustment - 5 Minutes with Cyrill: Cyrill Stachniss
  • The Basics about Bundle Adjustment (Cyrill Stachniss): Cyrill Stachniss

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