ORB-SLAM

Mur-Artal 2015 · Paper

One-line summary — A complete, versatile monocular SLAM system that uses ORB features for every task — tracking, mapping, relocalization, and loop closing — with automatic initialisation and survival-of-the-fittest map management.

Problem

Prior monocular SLAM systems each solved part of the problem: PTAM had keyframe BA but no loop closure, patch features useless for place recognition, and manual initialisation; other systems could not handle large environments or recover from tracking loss. ORB-SLAM (IEEE TRO 2015, University of Zaragoza) builds on PTAM’s main ideas, DBoW2 place recognition, and scale-aware loop closing to address all of these in one unified framework, operating in real time in small and large, indoor and outdoor environments.

Method & architecture

One feature for everything. The same ORB features (oriented FAST + rotated BRIEF, matched by Hamming distance) serve tracking, mapping, relocalization, and loop detection, so no work is duplicated.

Automatic initialisation. A homography and a fundamental matrix are computed in parallel from the same correspondences xcxr\mathbf{x}_c \leftrightarrow \mathbf{x}_r, i.e. xc=Hcrxr\mathbf{x}_c = \mathbf{H}_{cr}\,\mathbf{x}_r vs xcFcrxr=0\mathbf{x}_c^{\top}\mathbf{F}_{cr}\,\mathbf{x}_r = 0, each scored by symmetric transfer error with an outlier-truncated kernel:

SM=i(ρM(dcr2(xci,xri,M))+ρM(drc2(xci,xri,M))),ρM(d2)={Γd2if d2<TM0if d2TMS_M = \sum_i \Big( \rho_M\big(d_{cr}^2(\mathbf{x}_c^i, \mathbf{x}_r^i, M)\big) + \rho_M\big(d_{rc}^2(\mathbf{x}_c^i, \mathbf{x}_r^i, M)\big) \Big), \qquad \rho_M(d^2) = \begin{cases} \Gamma - d^2 & \text{if } d^2 < T_M \\ 0 & \text{if } d^2 \geq T_M \end{cases}

with χ2\chi^2 thresholds TH=5.99T_H = 5.99, TF=3.84T_F = 3.84. The heuristic RH=SHSH+SFR_H = \frac{S_H}{S_H + S_F} picks the homography when RH>0.45R_H > 0.45 (planar/low-parallax scenes) and the fundamental matrix otherwise (Erc=KFrcK\mathbf{E}_{rc} = \mathbf{K}^{\top}\mathbf{F}_{rc}\,\mathbf{K}); degenerate or ambiguous configurations are detected and initialisation is postponed.

Three parallel threads.

C=i,jρh(ei,jΩi,j1ei,j),ei,j=xi,jπi(Tiw,Xw,j),C = \sum_{i,j} \rho_h\big(\mathbf{e}_{i,j}^{\top}\,\mathbf{\Omega}_{i,j}^{-1}\,\mathbf{e}_{i,j}\big), \qquad \mathbf{e}_{i,j} = \mathbf{x}_{i,j} - \pi_i(\mathbf{T}_{iw}, \mathbf{X}_{w,j}),

with Huber kernel ρh\rho_h and Ωi,j=σi,j2I2×2\mathbf{\Omega}_{i,j} = \sigma_{i,j}^2 \mathbf{I}_{2\times 2} tied to the keypoint’s pyramid scale. Keyframes are inserted generously (e.g. whenever the frame tracks less than 90% of the reference keyframe’s points).

C=i,jei,jΛi,jei,j,ei,j=logSim(3)(SijSjwSiw1)R7,C = \sum_{i,j} \mathbf{e}_{i,j}^{\top} \mathbf{\Lambda}_{i,j}\, \mathbf{e}_{i,j}, \qquad \mathbf{e}_{i,j} = \log_{\mathrm{Sim}(3)}\big(\mathbf{S}_{ij}\,\mathbf{S}_{jw}\,\mathbf{S}_{iw}^{-1}\big) \in \mathbb{R}^7,

followed by an optional full BA.

Results

All experiments on an Intel Core i7-4700MQ (4 cores @ 2.40 GHz), 8 GB RAM, processing images at their true frame rate:

Why it matters for SLAM

ORB-SLAM unified the best ideas of a decade — PTAM’s parallel tracking/mapping, keyframe BA, bag-of-words place recognition, covisibility, Sim(3) loop closing — into one robust open-source system, and became the de facto standard monocular SLAM baseline for years. Its H/F initialisation, covisibility/essential graph machinery, and survival-of-the-fittest culling were adopted by virtually all subsequent feature-based systems, and it spawned the ORB-SLAM2/3 lineage that still anchors SLAM benchmarking today.