Robust pose-graph optimization

Standard pose-graph optimization has a dangerous property: it trusts every edge. Odometry edges are usually reliable, but loop closure edges come from place recognition, which sometimes lies — perceptual aliasing (two corridors that look identical) produces false loop closures. Feed a single wrong loop edge into least squares and the optimizer will happily fold your map onto itself, because a quadratic cost lets one bad constraint dominate everything. Robust pose-graph optimization is the family of techniques that make the back-end survive outlier constraints.

The three classical approaches named in the roadmap:

These ideas connect to the broader robust-estimation toolbox: M-estimator kernels (Huber, Cauchy) downweight moderate outliers, and Graduated Non-Convexity (GNC) solves strongly non-convex robust costs without initialization. In practice systems layer defenses: geometric verification at the front-end, PCM-style consistency checks, and a robust kernel or DCS in the optimizer as a last line of defense.

The M-estimator view

All the soft methods are variations on one move: replace the quadratic cost with a robust kernel ρ\rho,

min{Ti}(i,j)ρ(eijΣij1),\min_{\{T_i\}} \sum_{(i,j)} \rho\left(\|\mathbf{e}_{ij}\|_{\Sigma_{ij}^{-1}}\right),

chosen so that the cost’s influence (its derivative) stops growing — or shrinks — for large residuals. Under a quadratic, an edge with residual 10σ10\sigma pulls 100 times harder than one at 1σ1\sigma; under Huber it pulls only linearly harder; under Cauchy or Geman-McClure its pull fades as the residual grows. In implementation terms this becomes iteratively reweighted least squares: each Gauss-Newton iteration multiplies every edge’s information matrix by a weight w(e)w(\|\mathbf{e}\|) computed from the current residual — which is precisely what DCS does with a specific closed-form weight, and what switchable constraints achieve with explicit switch variables. The trade-off: redescending kernels (Cauchy and stronger) can reject gross outliers completely, but they make the cost non-convex, so a bad initialization can lock good edges out — the problem GNC addresses by starting from a convex surrogate and gradually sharpening it.

A complementary hard check on the front-end side is chi-square gating: before an edge is accepted, test whether its residual is statistically plausible under the current estimate, eTΣ1e<χd,0.952\mathbf{e}^T \Sigma^{-1} \mathbf{e} < \chi^2_{d,\,0.95} (6 DoF for an SE(3)SE(3) edge). Gating catches blatant outliers cheaply, but it trusts the current estimate — under heavy drift, a correct loop closure also looks implausible, which is exactly the case PCM’s pairwise-consistency logic handles better.

Common pitfalls

Why it matters for SLAM

One false loop closure can destroy a map that took an hour to build, so robustness at the back-end is not optional in deployed systems. This topic is also the entry point to multi-robot SLAM, where robots must decide whether to trust constraints produced by other robots — the setting PCM was designed for.

Hands-on