Bundle Adjustment
- Também chamado: BA
- Categoria: State estimation & navigation › Localisation
- Tags: slam, nonlinear-optimization, computer-vision, 3d-reconstruction, state-estimation
Refinamento conjunto por mínimos quadrados não lineares das poses das câmeras e das posições 3D dos pontos de referência, e às vezes dos parâmetros da câmera, que minimiza o erro de reprojeção de todas as características observadas.
Definição
O bundle adjustment (BA) refina uma reconstrução 3D ajustando em conjunto as poses das câmeras e as posições dos pontos 3D, de modo que os pontos, projetados em cada imagem, caiam o mais perto possível de onde as características foram de fato observadas. A grandeza minimizada é a soma dos quadrados dos erros de reprojeção, as distâncias em pixels entre as posições previstas e medidas das características, geralmente ponderadas pela incerteza de medição e envolvidas em uma perda robusta como Huber ou Cauchy para limitar a influência de correspondências erradas. O nome se refere aos feixes (bundles) de raios de luz que ligam cada ponto 3D aos centros das câmeras que o observam; a otimização ajusta esses feixes até que eles concordem. A técnica vem da fotogrametria, e um tratamento moderno muito citado é a revisão de Triggs, McLauchlan, Hartley e Fitzgibbon (2000).
O problema é não linear por causa das rotações e da projeção perspectiva, por isso é resolvido iterativamente, em geral com Levenberg-Marquardt. Sua estrutura o torna tratável em grande escala: cada resíduo envolve apenas uma câmera e um ponto, então o sistema é esparso, e os pontos podem ser eliminados com o complemento de Schur, deixando um sistema muito menor apenas nas variáveis das câmeras. A solução só é definida a menos de uma liberdade de gauge, uma rotação e uma translação globais e, para uma única câmera sem outros sensores, uma escala global, por isso algumas variáveis são fixadas ou um prior é acrescentado. Os parâmetros intrínsecos e a distorção da câmera podem ser refinados ao mesmo tempo quando não estão bem calibrados.
Na robótica, o BA é o núcleo do structure from motion e do SLAM visual baseado em quadros-chave. O BA global otimiza o mapa inteiro e é executado offline ou após fechamentos de laço; o BA local ou de janela deslizante otimiza apenas os quadros-chave mais recentes e os pontos de referência que eles veem, mantendo os estados mais antigos fixos ou marginalizados, para que possa rodar em tempo real. Sistemas visuais-inerciais o estendem com fatores de pré-integração da IMU, e fatores de outros sensores podem ser acrescentados ao mesmo grafo de fatores. O BA difere da otimização de grafo de poses porque mantém os pontos de referência como variáveis e usa as medições brutas das imagens; um grafo de poses mantém apenas poses e restrições relativas, o que é mais rápido e menor, mas descarta informação.
Por que importa
O bundle adjustment é o que transforma trilhas ruidosas de características em trajetórias de câmera e mapas 3D precisos. A maioria dos pipelines de odometria visual, SLAM visual e fotogrametria depende dele, e a escolha entre BA global, local e de janela deslizante determina em grande parte o equilíbrio entre precisão e desempenho em tempo real nesses sistemas.
Principais aplicações
- Structure from motion e fotogrametria
- Back-ends de SLAM visual e visual-inercial baseados em quadros-chave
- Odometria visual de janela deslizante em drones, veículos e robôs subaquáticos
- Refinamento da calibração multicâmera e câmera-LiDAR
- Reconstrução 3D para inspeção, mapeamento e gêmeos digitais
Na prática
Em um sistema SLAM visual-inercial em um robô subaquático ou aéreo, um novo quadro-chave é criado toda vez que a câmera se move o suficiente. Um otimizador de janela deslizante então refina as poses dos quadros-chave mais recentes, suas velocidades e os vieses da IMU, e todos os pontos de referência vistos nesses quadros-chave, usando fatores de reprojeção das características rastreadas mais fatores de IMU pré-integrados entre quadros-chave. Os quadros-chave mais antigos são marginalizados em um prior para que a janela mantenha um tamanho fixo. Uma perda de Huber limita o efeito de correspondências erradas causadas por objetos em movimento ou reflexos. Quando um fechamento de laço é detectado, uma otimização de grafo de poses ou um BA global completo corrige a deriva ao longo de toda a trajetória, geralmente em uma thread em segundo plano.
Equívocos comuns
- Bundle adjustment é o mesmo que otimização de grafo de poses — o BA também otimiza as posições dos pontos de referência em relação às medições das imagens, enquanto um grafo de poses mantém apenas poses e restrições relativas
- O BA conserta uma inicialização ruim — ele é um otimizador local e precisa de uma estimativa inicial razoável de poses e pontos para convergir para a resposta certa
- O BA monocular recupera a escala real — sem outro sensor ou uma dimensão conhecida, a escala não é observável e pode derivar
- O BA serve apenas para reconstrução offline — as variantes local e de janela deslizante rodam em tempo real em muitos sistemas SLAM
Quem deve saber
- Engenheiros de SLAM visual e odometria visual
- Engenheiros de visão computacional e fotogrametria
- Engenheiros de estimação de estado que fundem câmeras com outros sensores
- Estudantes de robótica que estudam mapeamento e localização
Tecnologias relacionadas
- Structure from Motion
- Algoritmo de Levenberg-Marquardt (Levenberg-Marquardt Algorithm)
- Ceres Solver
- g2o
- GTSAM
- COLMAP
Termos relacionados
Projetos 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