MonoSLAM

Davison 2007 · Paper

One-line summary — The first real-time monocular SLAM system: a single hand-held camera and an Extended Kalman Filter jointly estimating camera motion and a sparse 3D landmark map at 30 Hz.

Problem

Before MonoSLAM, real-time SLAM systems required stereo rigs, laser scanners, or wheel odometry; a single camera was considered insufficient because one view provides bearing but no depth, and a bare camera has no motion measurement at all. Davison, Reid, Molton, and Stasse (IEEE TPAMI 2007) showed that a single hand-held camera suffices for real-time SLAM — provided the estimation framework explicitly handles the depth uncertainty of monocular feature initialisation and supplies a motion prior in place of odometry.

Method & architecture

One EKF over camera + map. The state is a single stacked vector with full joint covariance,

x^=(x^vy^1y^2),P=(PxxPxy1Pxy2Py1xPy1y1Py1y2Py2xPy2y1Py2y2),\hat{\mathbf{x}} = \begin{pmatrix} \hat{\mathbf{x}}_v \\ \hat{\mathbf{y}}_1 \\ \hat{\mathbf{y}}_2 \\ \vdots \end{pmatrix}, \qquad \mathbf{P} = \begin{pmatrix} P_{xx} & P_{xy_1} & P_{xy_2} & \cdots \\ P_{y_1x} & P_{y_1y_1} & P_{y_1y_2} & \cdots \\ P_{y_2x} & P_{y_2y_1} & P_{y_2y_2} & \cdots \\ \vdots & \vdots & \vdots & \end{pmatrix},

where each landmark yi\mathbf{y}_i is a 3D point and the 13-parameter camera state comprises position, orientation quaternion, and linear/angular velocity: xv=(rW,qWR,vW,ωR)\mathbf{x}_v = (\mathbf{r}^W, \mathbf{q}^{WR}, \mathbf{v}^W, \boldsymbol{\omega}^R). The off-diagonal blocks are the point: observing one feature improves the estimates of the camera and of all correlated features. Storage and update cost are O(N2)O(N^2) in map size, bounding the map to roughly 100 features at 30 Hz.

Constant-velocity motion model (prediction). With no odometry, a smoothness prior replaces control input: each timestep an unknown acceleration of zero-mean Gaussian profile applies a velocity impulse n=(VW,ΩR)=(aWΔt,αRΔt)\mathbf{n} = (\mathbf{V}^W, \boldsymbol{\Omega}^R) = (\mathbf{a}^W \Delta t, \boldsymbol{\alpha}^R \Delta t), giving the state update

fv=(rW+(vW+VW)ΔtqWR×q((ωR+ΩR)Δt)vW+VWωR+ΩR),Qv=fvnPnfvn.\mathbf{f}_v = \begin{pmatrix} \mathbf{r}^W + (\mathbf{v}^W + \mathbf{V}^W)\Delta t \\ \mathbf{q}^{WR} \times \mathbf{q}\big((\boldsymbol{\omega}^R + \boldsymbol{\Omega}^R)\Delta t\big) \\ \mathbf{v}^W + \mathbf{V}^W \\ \boldsymbol{\omega}^R + \boldsymbol{\Omega}^R \end{pmatrix}, \qquad \mathbf{Q}_v = \frac{\partial \mathbf{f}_v}{\partial \mathbf{n}} P_n \frac{\partial \mathbf{f}_v}{\partial \mathbf{n}}^{\top}.

Small PnP_n assumes smooth motion; large PnP_n tolerates jerky motion but demands more measurements per frame.

Active search (measurement). A landmark’s predicted camera-frame position is hLR=RRW(yiWrW)\mathbf{h}_L^R = \mathbf{R}^{RW}(\mathbf{y}_i^W - \mathbf{r}^W), projected through a calibrated wide-angle (about 100° FOV) camera model with radial distortion. Propagating state uncertainty through the projection Jacobians yields the 2×22\times 2 innovation covariance

Si=udixvPxxudixv+udixvPxyiudiyi+udiyiPyixudixv+udiyiPyiyiudiyi+R,\mathbf{S}_i = \frac{\partial \mathbf{u}_{di}}{\partial \mathbf{x}_v} P_{xx} \frac{\partial \mathbf{u}_{di}}{\partial \mathbf{x}_v}^{\top} + \frac{\partial \mathbf{u}_{di}}{\partial \mathbf{x}_v} P_{x y_i} \frac{\partial \mathbf{u}_{di}}{\partial \mathbf{y}_i}^{\top} + \frac{\partial \mathbf{u}_{di}}{\partial \mathbf{y}_i} P_{y_i x} \frac{\partial \mathbf{u}_{di}}{\partial \mathbf{x}_v}^{\top} + \frac{\partial \mathbf{u}_{di}}{\partial \mathbf{y}_i} P_{y_i y_i} \frac{\partial \mathbf{u}_{di}}{\partial \mathbf{y}_i}^{\top} + \mathbf{R},

which defines an elliptical gate (3 standard deviations) inside which normalized cross-correlation template matching runs. Si\mathbf{S}_i doubles as an information measure: the 10–12 most informative features are selected per frame, squashing uncertainty along its longest axis.

Probabilistic feature initialisation. A new salient patch (Shi–Tomasi) defines only a ray; depth is represented by 100 particles spread uniformly over 0.5–5.0 m along it. Each frame, every depth hypothesis projects to its own search ellipse, matching likelihoods reweight the particles via Bayes’ rule, and when the depth ratio σd/d<0.3\sigma_d / d < 0.3 the distribution collapses to a Gaussian and the feature joins the EKF state — typically after 2–4 frames. Map management adds/deletes features to keep a target number visible from any pose.

Results

Why it matters for SLAM

MonoSLAM proved a single cheap camera suffices for real-time SLAM, effectively founding visual SLAM as a field (and beginning Davison’s lab’s lineage — iMAP, MonoGS, and MASt3R-SLAM come from the same group decades later). It is also the cleanest pedagogical example of filter-based SLAM: one EKF, one joint state, active search from predicted uncertainty — the baseline against which every keyframe-optimisation system since has been argued. Its own paper points at the successors: the depth-particle initialisation directly inspired inverse-depth parameterisations, and the O(N2)O(N^2) ceiling set the agenda that PTAM and “Visual SLAM: Why Filter?” answered.