Bundle Adjustment

g2o

Using the Python bindings, because I can’t be bothered to build the C++ library.

Resources

Writing some notes as I learn g2o:

  • The BlockSolverType is a template parameter that determines how the blocks (sub-matrices) of the Jacobian matrix are handled. These blocks correspond to the variables being optimized.
  • The LinearSolverType nested inside BlockSolverType specifies the method for solving the linearized system within each iteration of the Gauss-Newton algorithm. This could be a direct solver (like Cholesky decomposition) or an iterative solver (like conjugate gradients).

Example with the python bindings:

There’s bundle adjustment, and also sparse bundle adjustment. Which one should I use?

Okay, so this is actually pretty straightforward to do. You simply need to set up your vertices and edges.