핵심 요약
ORB-SLAM2는 monocular, stereo, RGB-D 입력을 공통 ORB/keyframe 표현으로 정리한 뒤, local BA, loop closing, map reuse를 조합해 CPU 실시간 SLAM을 만드는 시스템이다.
이 논문의 핵심은 feature, keyframe, BA의 범위를 정교하게 나누면 여러 센서 입력에서도 정확도, map reuse, 실시간성을 동시에 확보할 수 있다는 주장이다.
Multi-sensor SLAM
monocular, stereo, RGB-D를 모두 다루는 open-source SLAM. loop closing, relocalization, map reuse 포함.
BA-based Back-end
RGB-D에서도 ICP/photometric-depth objective보다 BA 기반 pose-map 최적화를 강조.
Close / Far Points
close stereo, far stereo, monocular point를 나눠 scale/translation/rotation 정보 기여도를 다르게 사용.
Lightweight Localization
필요하면 mapping을 끄고 VO matches와 기존 map point matches로 zero-drift localization 수행.
센서 입력을 먼저 공통 표현으로 맞춘 뒤, optimization 범위를 local/global로 나누는 흐름으로 읽으면 이해가 쉽다.
센서 비교는 단순 장비 비교가 아니라 scale 관측, 초기화, map point 생성 방식의 차이를 보여준다.
Monocular
가장 저렴하고 작지만, depth와 scale을 직접 관측하지 못해 scale drift와 초기화 문제가 생김.
Stereo
disparity 기반 metric depth 제공. close/far point 구분이 translation과 scale 안정성을 좌우.
RGB-D
sensor depth를 virtual right coordinate로 바꿔 이후 SLAM pipeline을 stereo와 동일하게 처리.
논문 상세 정리
아래부터는 원 논문 내용을 ‘처음 보는 사람이 알고 싶은 질문’ 기준으로 재정리한 상세 해석이다. 배경, notation, 보조 자료는 구조화된 토글 안에 접어두었다.
Problem: real-time Visual SLAM에서 무엇이 병목인가
ORB-SLAM2의 문제의식은 monocular SLAM의 약점에서 출발한다. monocular camera는 싸고 작지만 depth를 직접 관측하지 못하므로 map scale이 모호하고 scale drift가 누적될 수 있다. 또한 첫 frame만으로는 triangulation이 불가능해 initialization도 까다롭다.
논문은 “센서가 depth를 제공하면 무엇이 바뀌는가”를 기준으로 ORB-SLAM의 monocular 구조를 확장한다.
scale 미관측, pure rotation 취약, initialization 부담.
single frame에서 metric depth와 map point 생성 가능.
전체 map을 매번 BA하면 CPU 실시간 운용 불가.
feature/keyframe graph로 최적화 범위를 나누고 필요할 때 전역 보정.
Introduction과 Related Work은 모두 metric scale을 얻으면서도 local optimization으로 실시간성을 유지해야 한다는 주장으로 이어진다.
| 축 | 기존 병목 | ORB-SLAM2의 관점 |
|---|---|---|
| Scale | monocular는 depth/scale을 직접 관측하지 못함 | stereo/RGB-D depth로 metric scale 확보 |
| Back-end | ICP/direct RGB-D 계열은 localization accuracy에서 한계 | monocular/stereo constraints를 BA에 통합 |
| Scalability | global consistency와 real-time을 동시에 유지하기 어려움 | local BA + covisibility graph + loop/full BA로 범위 분리 |


Related Work 세부 흐름 보기
관련 연구는 local BA로 scalability를 확보했지만, global consistency를 어떻게 회복할지가 남아 있었다.
| 연구 흐름 | 핵심 아이디어 | ORB-SLAM2와의 연결 |
|---|---|---|
| Paz et al. | close/far point를 나누고 far point에 inverse depth 사용 | ORB-SLAM2도 close/far stereo point를 다르게 처리 |
| Strasdat / RSLAM / S-PTAM | keyframe 기반 local BA로 대규모 환경 처리 | local BA는 유지하되 loop closing과 full BA로 global consistency 회복 |
| Stereo LSD-SLAM | semi-dense direct 방식, texture/motion blur에 강점 | direct method의 비모델링 효과 취약성과 비교되는 feature-based 선택 |
RGB-D SLAM은 dense reconstruction이 강했지만, ORB-SLAM2는 dense model보다 정확한 long-term localization에 초점을 둔다.
| 연구 흐름 | 얻는 점 | ORB-SLAM2가 바꾸는 점 |
|---|---|---|
| KinectFusion / Kintinuous | depth map을 dense model로 합성 | sparse feature/keyframe map으로 CPU real-time과 long-term consistency 강조 |
| RGB-D SLAM / DVO-SLAM | feature/photometric/depth error와 pose graph 사용 | RGB-D에서도 BA 기반 camera localization 성능을 강조 |
| ElasticFusion | surfel map과 deformation 기반 loop closing | 더 detailed한 reconstruction보다 lightweight global localization을 선택 |
Mechanism: keyframe/BA/loop closing으로 어떻게 푸나
ORB-SLAM2의 방법론은 “모든 것을 한 번에 최적화하는 SLAM”이 아니라, Tracking, Local Mapping, Loop Closing이 서로 다른 시간 규모에서 map과 pose를 다루는 구조다. 그래서 실시간 frame processing과 전역 일관성 복구를 동시에 노린다.

세 thread의 역할 분담을 먼저 잡으면 이후 BA, graph, localization mode가 자연스럽게 연결된다.
| 구간 | 무엇을 해결하나 | 핵심 장치 |
|---|---|---|
| Tracking | 매 frame에서 camera pose를 빠르게 추정 | local map matching + motion-only BA |
| Local Mapping | 새 keyframe과 map point를 local window 안에서 정리 | local BA, keyframe insertion/culling |
| Loop Closing | 큰 loop를 검출하고 누적 drift를 보정 | DBoW2 place recognition + pose-graph optimization |
| Full BA | loop closure 후 전체 structure/motion을 다시 정합 | separate thread에서 global BA 수행 |
핵심 선택은 feature-based sparse map을 유지하면서, depth가 있는 입력을 feature/keypoint representation 안으로 흡수하는 것이다.
ORB feature를 tracking, mapping, place recognition에 모두 사용.
local window와 covisibility graph로 BA 비용 제한.
loop closing 후 pose graph와 Full BA로 누적 drift 보정.
ORB-SLAM2는 입력이 stereo인지 RGB-D인지에 따라 초반 처리만 다르게 하고, 이후 단계에서는 동일한 keypoint/map 구조를 사용한다. RGB-D depth는 virtual right coordinate로 바꿔 stereo keypoint처럼 다룬다.

| keypoint | 정의 | SLAM에서의 역할 |
|---|---|---|
| Monocular | | multiple views가 있어야 triangulation. scale 정보는 직접 제공하지 않음. |
| Close stereo | depth < 40 × baseline | single frame에서 안전하게 triangulation. scale, translation, rotation에 강하게 기여. |
| Far stereo | depth ≥ 40 × baseline | rotation 정보는 좋지만 translation/scale은 약해 multiple views가 필요. |
논문에서 BA는 한 번 등장하는 수식이 아니라 시스템 전체의 반복적인 최적화 원리다. Tracking에서는 현재 pose만, Local Mapping에서는 주변 keyframe과 point를, Loop Closing 이후에는 전체 map을 최적화한다.
| BA 종류 | 시점 | 최적화 대상 |
|---|---|---|
| Motion-only BA | Tracking | 현재 frame의 camera pose |
| Local BA | Local Mapping | local keyframes + local map points |
| Full BA | Loop closure 이후 | origin keyframe을 제외한 전체 keyframes + map points |
ORB-SLAM2는 keyframe 관계를 covisibility graph와 minimum spanning tree로 관리한다. Covisibility graph는 local window를 빠르게 찾고, MST는 loop correction과 Full BA 결과를 map 전체에 전파하는 뼈대로 쓰인다.
| 구조 | 정의 | 왜 필요한가 |
|---|---|---|
| Covisibility Graph | 두 keyframe이 공유하는 map point 수를 edge weight로 둠 | Tracking/Local Mapping에서 가까운 keyframe window를 찾음 |
| Minimum Spanning Tree | 모든 keyframe을 연결하는 최소 골격 | loop correction과 spanning-tree propagation에 사용 |
| Place Recognition | DBoW2 기반으로 이전 장소를 인식 | relocalization, reinitialization, loop detection 지원 |
well-mapped area에서는 Local Mapping과 Loop Closing을 끄고 Tracking만으로 동작할 수 있다.
이전 frame의 stereo/depth 정보로 만든 3D points와 현재 ORB를 match. unmapped region에서도 robust하지만 drift 가능.
기존 map point와 match해 drift-free localization을 유지.
환경 변화가 크지 않은 known environment에서 lightweight long-term localization에 적합.
보조 그림과 개념 메모 보기
기존 정리에서 사용했던 보조 그림은 BA와 local map matching을 직관적으로 이해하는 용도로 유지한다.






Evidence: 어떤 sensor와 dataset에서 검증했나
평가의 핵심은 데이터셋 이름을 외우는 것이 아니라, 각 결과가 어떤 claim을 지지하는지 보는 것이다. KITTI는 stereo metric scale과 loop reuse, EuRoC는 MAV stereo robustness, TUM RGB-D는 BA 기반 localization의 장점을 확인한다.
논문은 29개 공개 sequence에서 5회 실행 median 결과를 보고하고, 표준 CPU(Intel Core i7-4790, 16GB RAM) 환경에서 실시간성을 확인한다.
| 평가 축 | 근거 | 확인할 것 |
|---|---|---|
| Stereo metric scale | KITTI Table I / Fig. 5 | monocular scale drift가 stereo에서는 사라짐sequence 01처럼 close point가 적은 상황은 translation이 약해질 수 있음. |
| MAV stereo robustness | EuRoC Table II / trajectories | 대부분 cm-level RMSEV2_03_difficult는 severe motion blur로 tracking failure. |
| RGB-D localization | TUM Table III / Fig. 7 | BA 기반 방법이 ICP/direct 계열보다 대체로 정확dense fusion 없이도 keyframe pose 정확도가 pointcloud 윤곽으로 드러남. |
| 근거 축 | 근거 | 확인할 것 |
|---|---|---|
| Timing | Table IV | EuRoC tracking average 41.66ms20Hz frame budget 약 50ms 안에 들어와 real-time 조건 충족. |
| Open-source usability | repository calibration / instruction | out-of-the-box solution 의도각 dataset calibration과 run instruction을 함께 제공. |








Dataset instruction / scale-bias 참고 보기
논문은 단순 코드 공개를 넘어, dataset별 calibration과 실행 instruction을 포함해 재현성을 높이는 것을 강조한다.


freiburg2 depth map의 4% scale bias는 RGB-D 결과 해석에서 주의해야 할 보정 포인트다.

Usage / Limits: 어떤 Visual SLAM 기준선으로 읽어야 하나
ORB-SLAM2는 feature가 충분하고 장기적으로 map을 재사용해야 하는 Visual SLAM 문제에 잘 맞는다. 반면 severe motion blur, texture 부족, 큰 환경 변화처럼 feature tracking이 흔들리는 조건에서는 한계가 드러날 수 있다.
평가 결과와 적용 조건을 다시 정리하면 다음과 같다.
| 구분 | 정리 | 이유 |
|---|---|---|
| 잘 맞는 상황 | stereo/RGB-D 기반 real-time localization과 map reuse | metric depth, local BA, loop closing이 안정적으로 작동 |
| 강한 조건 | well-mapped known environment의 lightweight localization | VO matches + map point matches로 drift-free localization 가능 |
| 주의 조건 | severe motion blur, close point 부족, 큰 환경 변화 | feature tracking과 local map matching의 품질에 의존 |
느낀점
visual slam을 입문하기에 좋은 논문이라고 생각했다.
visual slam의 종류, 최근 트렌드 및 문제점, 제안하는 파이프라인 및 최적화 방법, 사용한 데이터셋의 종류 및 설명까지 아주 알차게 배웠다.
중간에 covisibility graph와 minimum spanning tree의 개념이 생소했고, local BA의 수식부분이 좀 헷갈려서 이해하는데 시간이 좀 걸렸지만, 그래도 지금 생각하면 시간내서 이해하길 잘했다는 생각이 들었다.
특히 마지막 부분의 최적화 수행시간 관련해서도 covisibility graph가 최적화 시간에 직접적으로 관여한다는 것이 인상깊었고, ORB-SLAM2가 왜 실시간으로 동작할 수 있는지 수치적으로 이해할 수 있어서 좋았다.
Problem: what bottlenecks real-time Visual SLAM?
ORB-SLAM2 starts from the limitations of monocular SLAM. A monocular camera is cheap and compact, but it cannot directly observe depth, so map scale is ambiguous and scale drift can accumulate. Initialization is also harder because a first frame alone cannot triangulate structure.
The paper extends monocular ORB-SLAM by asking what changes when the sensor provides depth.
Unobservable scale, pure-rotation fragility, and harder initialization.
Metric depth and map points can be created from a single frame.
Full-map BA at every step would break CPU real-time operation.
Separate optimization scope with features, keyframes, and graph structure.
The introduction and related work converge on the need to obtain metric scale while keeping real-time operation through local optimization.
| Axis | Prior bottleneck | ORB-SLAM2 view |
|---|---|---|
| Scale | Monocular input cannot directly observe depth or scale | Use stereo/RGB-D depth to recover metric scale |
| Back-end | ICP/direct RGB-D methods can be limited for localization accuracy | Integrate monocular and stereo constraints into BA |
| Scalability | Global consistency and real-time execution are hard to maintain together | Separate local BA, covisibility graph, loop closing, and Full BA |


View related-work details
Prior stereo SLAM used local BA for scalability, but global consistency remained the central issue.
| Line | Core idea | Connection to ORB-SLAM2 |
|---|---|---|
| Paz et al. | Separate close and far points, using inverse depth for far points | ORB-SLAM2 also treats close and far stereo points differently |
| Strasdat / RSLAM / S-PTAM | Use keyframe-based local BA for large environments | Keep local BA but restore global consistency through loop closing and Full BA |
| Stereo LSD-SLAM | Semi-dense direct approach with strengths under blur and low texture | Contrasts with ORB-SLAM2’s feature-based design |
RGB-D systems were strong for dense reconstruction, while ORB-SLAM2 focuses on accurate long-term localization.
| Line | What it provides | ORB-SLAM2 difference |
|---|---|---|
| KinectFusion / Kintinuous | Fuse depth maps into a dense model | Use sparse feature/keyframe maps for CPU real-time and long-term consistency |
| RGB-D SLAM / DVO-SLAM | Use feature, photometric, depth errors, and pose graphs | Emphasize BA-based camera localization even for RGB-D input |
| ElasticFusion | Surfel map and deformation-based loop closing | Prioritize lightweight global localization over dense reconstruction detail |
Mechanism: how keyframes, BA, and loop closing solve it
ORB-SLAM2 is not a system that optimizes everything at every step. It separates responsibility across Tracking, Local Mapping, and Loop Closing, so real-time frame processing and global correction can coexist.

Once the thread-level division of labor is clear, the BA, graph, and localization-mode design become much easier to read.
| Part | What it solves | Core mechanism |
|---|---|---|
| Tracking | Estimate camera pose quickly for every frame | Local-map matching + motion-only BA |
| Local Mapping | Manage new keyframes and map points in a local window | Local BA, keyframe insertion/culling |
| Loop Closing | Detect large loops and correct accumulated drift | DBoW2 place recognition + pose-graph optimization |
| Full BA | Globally align structure and motion after loop closure | Global BA in a separate thread |
The important choice is to keep a feature-based sparse map while absorbing depth-enabled inputs into the feature/keypoint representation.
ORB features are used for tracking, mapping, and place recognition.
Local windows and covisibility graphs bound BA cost.
Pose-graph optimization and Full BA correct accumulated drift.
The front-end differs for stereo and RGB-D, but the rest of the system uses a shared keypoint/map structure. RGB-D depth is converted into a virtual right coordinate so it can be handled like stereo.

| Keypoint | Definition | Role in SLAM |
|---|---|---|
| Monocular | | Requires multiple views for triangulation and gives no direct scale information. |
| Close stereo | depth < 40 × baseline | Can be triangulated safely from one frame and supports scale, translation, and rotation. |
| Far stereo | depth ≥ 40 × baseline | Good for rotation but weak for translation and scale, so multiple views are needed. |
BA is not a one-off equation in this paper. It is the recurring optimization principle used at different scopes: current-frame pose, local keyframes/points, and the full map after loop closure.
| BA type | When | Optimized variables |
|---|---|---|
| Motion-only BA | Tracking | Current camera pose |
| Local BA | Local Mapping | Local keyframes + local map points |
| Full BA | After loop closure | All keyframes and map points except the origin keyframe |
ORB-SLAM2 manages keyframe relationships with a covisibility graph and a minimum spanning tree. The covisibility graph retrieves local windows; the MST acts as a skeleton for loop correction and Full-BA propagation.
| Structure | Definition | Why it matters |
|---|---|---|
| Covisibility Graph | Edges are weighted by the number of shared map points between keyframes | Retrieves nearby keyframe windows for Tracking and Local Mapping |
| Minimum Spanning Tree | Minimal skeleton connecting all keyframes | Supports loop correction and spanning-tree propagation |
| Place Recognition | DBoW2-based recognition of previously seen places | Supports relocalization, reinitialization, and loop detection |
In a well-mapped area, Local Mapping and Loop Closing can be disabled and Tracking can localize the camera alone.
Match current ORB features to 3D points created from previous stereo/depth observations; robust to unmapped regions but can drift.
Match against existing map points to maintain drift-free localization.
Lightweight long-term localization in known environments with limited changes.
View supporting concept figures
These supporting figures from the original notes are preserved as intuition aids for BA and local map matching.






Evidence: which sensors and datasets test the claims?
The evaluation is clearest when each result is tied to a claim. KITTI tests stereo metric scale and map reuse, EuRoC tests MAV stereo robustness, and TUM RGB-D tests the advantage of BA-based localization.
The paper reports median results over five runs on 29 public sequences and confirms real-time operation on an Intel Core i7-4790 CPU with 16GB RAM.
| Axis | Evidence | What to check |
|---|---|---|
| Stereo metric scale | KITTI Table I / Fig. 5 | Monocular scale drift disappears in stereoSequence 01 still shows weaker translation because close points are scarce. |
| MAV stereo robustness | EuRoC Table II / trajectories | Mostly centimeter-level RMSEV2_03_difficult fails due to severe motion blur. |
| RGB-D localization | TUM Table III / Fig. 7 | BA is generally more accurate than ICP/direct baselinesPoint-cloud contours qualitatively reflect accurate keyframe poses. |
| Evidence axis | Evidence | What to check |
|---|---|---|
| Timing | Table IV | EuRoC average tracking time is 41.66msIt fits inside the roughly 50ms budget for 20Hz input. |
| Open-source usability | repository calibration / instructions | Out-of-the-box solution goalIncludes calibration and run instructions for each dataset. |








View dataset instructions and scale-bias reference
The paper emphasizes reproducibility by providing calibration and run instructions for the public datasets.


The 4% scale bias in freiburg2 depth maps is a calibration issue to remember when interpreting RGB-D results.

Usage / Limits: how should we read it as a Visual SLAM baseline?
ORB-SLAM2 fits Visual SLAM problems where features are available and long-term map reuse matters. It can struggle when feature tracking becomes unreliable, such as under severe motion blur, weak texture, scarcity of close points, or major environmental change.
The evaluation results can be translated into these application conditions.
| Category | Summary | Reason |
|---|---|---|
| Good fit | Real-time stereo/RGB-D localization and map reuse | Metric depth, local BA, and loop closing work together |
| Strong condition | Lightweight localization in a well-mapped known environment | VO matches and map-point matches support drift-free localization |
| Weak condition | Severe motion blur, scarce close points, or large scene changes | The system depends on feature tracking and local-map matching quality |
Takeaway
I thought this was a strong paper for entering Visual SLAM.
It gave me a compact but rich view of Visual SLAM types, recent trends and problems, the proposed pipeline and optimization methods, and the datasets used for evaluation.
The covisibility graph, minimum spanning tree, and Local BA equations were unfamiliar at first, so they took time to understand. Looking back, that time was worth it.
The timing analysis near the end was especially useful because it showed that the covisibility graph directly affects optimization time. That helped me understand numerically why ORB-SLAM2 can run in real time.
Comments