g 2 o: A general Framework for (Hyper) Graph Optimization

In this document we describe a C++ framework for performing the optimization of nonlinear least squares problems that can be embedded as a graph or in an hyper-graph. An hyper-graph is an extension of a graph where an edge can connect multiple nodes and not only two. Several problems in robotics and in computer vision require to find the optimum of an error function with respect of a set of parameters. Examples include, popular applications like SLAM and Bundle adjustment. In the literature, many approaches have been proposed to address this class of problems. The naive implementation of standard methods, like Levenberg-Marquardt or Gauss-newton can lead to acceptable results for most applications, when the correct parameterization is chosen. However, to achieve the maximum performances substantial efforts might be required. go stands for General (Hyper) Graph Optimization. The purposes of this framework are the following: