Gauss-Newton
Gauss-Newton is the fundamental iterative algorithm for nonlinear least squares — the problem class that virtually every SLAM back-end computation (bundle adjustment, pose graph optimization, PnP refinement, direct image alignment) reduces to. It exploits the special sum-of-squares structure of the cost to get near-second-order convergence while only ever computing first derivatives.
Derivation
We minimize a cost built from a residual vector over a state :
Linearize the residual (not the cost) around the current estimate using the Jacobian evaluated at :
Substituting gives a quadratic model of the cost in :
Setting the derivative with respect to to zero yields the normal equations:
Solve for (in practice by Cholesky factorization of the sparse , never by explicit inversion), update , re-linearize, repeat until the update or the cost change is negligible.
With measurement covariances, residuals are weighted by information matrices and the normal equations become — the same algebra, and precisely MAP estimation under Gaussian noise.
Relation to Newton’s method
Newton’s method uses the true Hessian of :
Gauss-Newton drops the second term, approximating . This is cheap (no second derivatives) and accurate when residuals are small at the optimum (a good model fitting well) or nearly linear — exactly the regime of a converging SLAM problem. Near the solution the convergence is close to quadratic. The approximation also guarantees , so the computed step is a descent direction whenever is nonsingular.
Failure modes
- Divergence far from the optimum: the linearization can be so poor that the full step increases the cost. Gauss-Newton has no step-size control; Levenberg-Marquardt fixes this by damping the normal equations.
- Singular or ill-conditioned : unobservable directions (monocular scale, the global gauge freedom of BA — the whole solution can translate/rotate freely) make rank-deficient. Remedies: fix a pose, add a prior, or use LM’s damping.
- Local minima: like all local methods, it converges to the basin it starts in — hence SLAM’s obsession with good initialization.
On manifolds
Poses live on , not , so the update is applied through the exponential map: parameterize the increment as , solve the normal equations for , and update . The Jacobians are taken with respect to this local perturbation. All SLAM solvers (g2o, Ceres, GTSAM) implement Gauss-Newton/LM in this “optimize a local vector, retract onto the manifold” form.
Why it matters for SLAM
Gauss-Newton is the inner loop of SLAM. Bundle adjustment is Gauss-Newton/LM on reprojection errors, where the sparse block structure of (poses coupled to points only through observations) is exploited via the Schur complement; pose graph optimization is Gauss-Newton on relative-pose residuals; direct methods (LSD-SLAM, DSO) run it on photometric errors; even ICP’s alignment step is a Gauss-Newton iteration. Reading any SLAM back-end paper requires fluency in the vocabulary defined here — residual, Jacobian, Hessian approximation, normal equations, damping — and most practical debugging (why did my optimization diverge? why is my Hessian singular?) traces back to the assumptions listed above.