Algorithms

The estimation pages elsewhere on this site start from a motion model and ask what a filter can recover. This section starts from the other end: a pile of measurements with no labels — points, pixels, rays, scans — and asks how to extract geometry from them when a large fraction of the data is simply wrong. Robust fitting, multi-view geometry, the three structurally different ways to solve SLAM — and, for the learned parts of a modern stack, how to actually get training to converge.

Each page is a deep dive: the derivation, a symbol table, the failure modes with the numbers attached, an interactive simulation, and references to the original papers.

One idea connects everything here. Every algorithm on these pages is an answer to the same question — given an overdetermined, contaminated set of geometric constraints, what is the most likely configuration? RANSAC answers it by search, ICP by alternation, PnP and stereo in closed form, bundle adjustment and pose graphs by sparse nonlinear least squares, and the SLAM family by deciding what to keep correlated and what to factor apart. Choosing among them is mostly a question of which approximation you can afford.

1 · Robust fitting & registration

Before any geometry can be estimated, the data has to be sorted into signal and noise — and in vision the contamination is not a few percent of mild outliers, it is routinely 50% of grossly wrong matches. Least squares has a breakdown point of zero: one bad datum can move the estimate arbitrarily far. These two pages are the standard answers.

2 · Multi-view geometry

Cameras measure directions, not distances. The first page below establishes exactly what a camera does measure — the projection model, its parameters and how they are calibrated — and the rest are ways of recovering the missing range: from a second camera at a known baseline (stereo), from known 3-D structure (PnP), from motion (SfM), or from all of it at once in a single least-squares problem (bundle adjustment).

Camera model & projection

The equation every other page here depends on: world point → camera frame → perspective division → pixels. Intrinsics and what each parameter does, extrinsics and the sign convention that trips everyone, the Brown–Conrady distortion model, field of view, and why a calibration with low RMS can still be wrong.

Stereo & disparity

Rectification to a 1-D search, matching costs and the census transform, SGM's dynamic-programming smoothness, subpixel refinement, and the Z² law that governs every stereo error budget. Plus what learned matching changed and what it did not.

PnP — pose from correspondences

Why three points give up to four solutions, the P3P trigonometry, DLT and EPnP, iterative refinement of reprojection error, the two-fold ambiguity on planar targets, and how to tell a well-conditioned pose from a lucky one.

Structure from motion

The epipolar constraint, the 8-point and 5-point algorithms, the four-way decomposition of the essential matrix, triangulation and its parallax dependence, scale drift, and the incremental vs global pipeline trade.

Bundle adjustment

The maximum-likelihood problem at the end of every pipeline. Levenberg–Marquardt, the primary sparsity structure, the Schur complement that makes it tractable, gauge freedom, robustification, and why the covariance it reports is conditional.

3D Gaussian splatting

Novel-view synthesis at 100+ FPS by changing the representation rather than the optimiser. The covariance factorisation, EWA projection through the same Jacobian PnP uses, the tiled sorted rasteriser, spherical-harmonic colour, and how adaptive densification trains it.

3 · Training deep models

Everything above is derived from geometry, so it either works or it does not. Learned components fail differently: the architecture is usually fine and the training is misconfigured. This page is the practical counterpart to the rest of the section.

The one habit worth adopting. Before tuning anything, prove the pipeline can overfit a single batch to near-zero loss. If it cannot, no hyperparameter will help — there is a bug. It takes thirty seconds and separates "not learning" from "learning the wrong thing".

4 · Motion planning

Planning in more than a few dimensions defeats grid search, because the number of cells grows exponentially with the degrees of freedom. The sampling-based family avoids building a grid at all — and the connection to RANSAC is direct: both replace an intractable search with randomised sampling plus a cheap feasibility test.

RRT & RRT* planning

The Voronoi bias that makes a random tree explore outward without tracking a frontier; probabilistic completeness; why plain RRT converges to the optimum with probability zero; and the rewiring plus shrinking connection radius that make RRT* asymptotically optimal.

Two practical defaults

RRT-Connect when you need a feasible path fast — bidirectional and greedy. Informed RRT* whenever you want quality: once a solution exists, restricting samples to the ellipsoid that could improve it is a strict win with no downside.

5 · SLAM

Simultaneous localisation and mapping is one problem with three classic solutions, and they differ in exactly one design decision: what to do about the correlations between the robot pose and the map. Keep them all in one covariance (EKF-SLAM), sample the pose so the map factorises (FastSLAM), or keep the raw constraints and optimise the whole history at once (GraphSLAM). Read them in that order — each one is a reaction to the previous one's cost.

6 · How the pieces fit together

These are not nine unrelated topics. A visual SLAM system uses almost all of them in one pass, and the order is always roughly the same: detect and match, reject outliers, get a pose, triangulate structure, refine everything jointly, and close the loop.

┌────────────── front end: per-frame, hard real-time ──────────────┐ features ──► matches ──► RANSAC ──► PnP / essential ──► triangulate │ │ │ rejects gross pose of new 3-D mismatches this frame points │ ┌──────────── back end: batched, best-effort ────────────┐ │ ▼ local window ──► BUNDLE ADJUSTMENT ──► refined poses + structure │ loop detected ──► POSE GRAPH ──► globally consistent trajectory │ LiDAR present ──► ICP / GICP ──► scan-to-map constraint ──┘

Read that diagram as a statement about time budgets. The front end must produce a pose every frame, so it uses closed-form solvers and a bounded number of RANSAC trials. The back end is allowed to be slow and iterative, because it is improving an estimate that already exists. Almost every practical system is organised on this split.

Where the rest of the site connects. The filtering machinery these pages lean on — Kalman filters, the EKF's Jacobians, particle filters and resampling — is derived in Filtering: KF · EKF · UKF · PF and Extended Kalman filter. Rotation parameterisation and the SO(3) exp/log maps used throughout the registration and pose-graph pages are in Attitude & rotations. The sensors themselves are covered in LiDAR, and the learned front ends in Deep Learning.

7 · Still to come

This section is being built out from a wider inventory. The pages above are complete; the topics below are planned, and several already have partial coverage elsewhere on the site that the eventual page will consolidate rather than duplicate.

TopicWhy it belongs hereExisting coverage
Multi-hypothesis tracking Data association as a hypothesis tree rather than a single nearest-neighbour choice; the counterpart to RANSAC for time-series association Perception stack (greedy + Hungarian)
2-D detection: YOLO, Faster R-CNN Anchors, one-stage vs two-stage, the loss that makes detection work RF-DETR, NMS sim
3-D detection: PointNet, PointPillars Permutation invariance, pillar encoding, the BEV bridge to fusion BEVFusion
Transformers: ViT, Swin, CLIP Patchification, shifted-window attention, contrastive alignment DINOv2, attention sims
RRT / RRT* Sampling-based planning; probabilistic completeness and the rewiring that makes it optimal —
Inverse kinematics Jacobian pseudo-inverse, damped least squares, singularity handling, null-space motion —
PID & loop shaping The controller everything actually ships with, and how to tune it honestly GNC (step response, LQR sims)
GNSS receiver internals Acquisition search, tracking loops, PVT — the layer below a pseudorange GNSS, receivers
Conjugate Unscented Transform Higher-order moment matching with far fewer points than a full cubature rule Filtering (UKF sigma points)
Method of characteristics Propagating a density along its own flow instead of a covariance approximation —

Related sections: GNC & Estimation · Perception stack · Deep Learning · Techniques