Bundle Adjustment
- 다른 이름: BA
- 카테고리: State estimation & navigation › Localisation
- 태그: slam, nonlinear-optimization, computer-vision, 3d-reconstruction, state-estimation
관측된 모든 특징의 재투영 오차를 최소화하도록 카메라 포즈와 3D 랜드마크 위치, 때로는 카메라 파라미터까지 함께 정밀화하는 결합 비선형 최소제곱 기법.
정의
번들 조정(Bundle adjustment, BA)은 카메라 포즈와 3D 점의 위치를 함께 조정하여, 각 이미지에 투영된 점이 특징이 실제로 관측된 곳에 최대한 가깝게 떨어지도록 함으로써 3D 재구성을 정밀화한다. 최소화되는 양은 재투영 오차(reprojection errors), 즉 예측된 특징 위치와 측정된 특징 위치 사이의 픽셀 거리의 제곱합이며, 보통 측정 불확실성으로 가중하고 잘못된 매칭의 영향을 제한하기 위해 Huber나 Cauchy 같은 강건 손실로 감싼다. 이름은 각 3D 점을 그 점을 관측하는 카메라 중심들과 잇는 광선 다발(bundle)을 가리키며, 최적화는 이 다발들이 서로 일치할 때까지 조정한다. 이 기법은 사진측량에서 왔으며, 널리 인용되는 현대적 정리는 Triggs, McLauchlan, Hartley, Fitzgibbon(2000)의 서베이다.
회전과 원근 투영 때문에 이 문제는 비선형이므로, 보통 Levenberg-Marquardt로 반복적으로 푼다. 문제의 구조 덕분에 대규모에서도 다룰 수 있다. 각 잔차는 카메라 하나와 점 하나만 포함하므로 시스템이 희소하며, 슈어 보수(Schur complement)로 점을 소거하면 카메라 변수만으로 된 훨씬 작은 시스템이 남는다. 해는 게이지 자유도, 즉 전역 회전과 병진, 그리고 다른 센서가 없는 단일 카메라의 경우 전역 스케일까지만 정해지므로, 일부 변수를 고정하거나 사전 정보를 추가한다. 카메라 내부 파라미터와 왜곡이 잘 캘리브레이션되어 있지 않으면 동시에 정밀화할 수 있다.
로봇공학에서 BA는 Structure from Motion과 키프레임 기반 시각 SLAM의 핵심이다. 전역 BA(Global BA)는 전체 지도를 최적화하며 오프라인으로 또는 루프 클로저 후에 실행된다. 국소(local) BA 또는 슬라이딩 윈도 BA(sliding-window BA)는 가장 최근의 키프레임과 그 키프레임이 보는 랜드마크만 최적화하고 더 오래된 상태는 고정하거나 주변화하므로 실시간으로 실행할 수 있다. 시각 관성 시스템은 IMU 사전적분 팩터로 이를 확장하며, 다른 센서 팩터도 같은 팩터 그래프에 추가할 수 있다. BA는 랜드마크를 변수로 유지하고 원시 이미지 측정값을 사용한다는 점에서 포즈 그래프 최적화(pose graph optimization)와 다르다. 포즈 그래프는 포즈와 상대 제약만 유지하므로 더 빠르고 작지만 정보를 버린다.
중요한 이유
번들 조정은 잡음 섞인 특징 트랙을 정확한 카메라 궤적과 3D 지도로 바꿔 주는 것이다. 대부분의 시각 주행거리계, 시각 SLAM, 사진측량 파이프라인이 이에 의존하며, 전역, 국소, 슬라이딩 윈도 BA 사이의 선택이 이러한 시스템에서 정확도와 실시간 성능 사이의 절충을 대체로 결정한다.
주요 응용
- Structure from Motion과 사진측량
- 키프레임 기반 시각 SLAM과 시각 관성 SLAM의 백엔드
- 드론, 차량, 수중 로봇의 슬라이딩 윈도 시각 주행거리계
- 다중 카메라 및 카메라-라이다 캘리브레이션 정밀화
- 점검, 지도 작성, 디지털 트윈을 위한 3D 재구성
실제 사례
수중 로봇이나 항공 로봇의 시각 관성 SLAM 시스템에서는 카메라가 충분히 움직일 때마다 새 키프레임이 만들어진다. 그러면 슬라이딩 윈도 최적화기가 추적된 특징의 재투영 팩터와 키프레임 사이의 사전적분된 IMU 팩터를 사용해 가장 최근 키프레임의 포즈, 속도, IMU 바이어스, 그리고 그 키프레임들에서 보이는 모든 랜드마크를 정밀화한다. 더 오래된 키프레임은 사전 정보로 주변화되어 윈도가 고정된 크기를 유지한다. Huber 손실은 움직이는 물체나 반사로 인한 잘못 매칭된 특징의 영향을 제한한다. 루프 클로저가 감지되면 포즈 그래프 최적화나 전체 전역 BA가 궤적 전체의 드리프트를 보정하며, 보통 백그라운드 스레드에서 실행된다.
흔한 오해
- 번들 조정은 포즈 그래프 최적화와 같다 — BA는 이미지 측정값에 맞춰 랜드마크 위치도 최적화하는 반면, 포즈 그래프는 포즈와 상대 제약만 유지한다
- BA는 나쁜 초기값을 바로잡는다 — BA는 국소 최적화기이므로 올바른 답으로 수렴하려면 포즈와 점에 대한 합리적인 초기 추정이 필요하다
- 단안 BA는 실제 스케일을 복원한다 — 다른 센서나 알려진 치수가 없으면 스케일은 관측 불가능하며 드리프트할 수 있다
- BA는 오프라인 재구성 전용이다 — 국소 및 슬라이딩 윈도 변형은 많은 SLAM 시스템에서 실시간으로 실행된다
알아야 할 사람
- 시각 SLAM 및 시각 주행거리계 엔지니어
- 컴퓨터 비전 및 사진측량 엔지니어
- 카메라를 다른 센서와 융합하는 상태 추정 엔지니어
- 지도 작성과 위치 추정을 공부하는 로봇공학 학생
관련 기술
- Structure from Motion
- Levenberg-Marquardt 알고리즘(Levenberg-Marquardt Algorithm)
- Ceres Solver
- g2o
- GTSAM
- COLMAP
관련 용어
관련 프로젝트
- 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
동영상
- Bundle Adjustment - 5 Minutes with Cyrill: Cyrill Stachniss
- The Basics about Bundle Adjustment (Cyrill Stachniss): Cyrill Stachniss