MTK - Manifold ToolKit

MTK is a toolkit that provides easy mechanisms to enable arbitrary algorithms to operate on manifolds. The main application is the use of 3D rotations SO(3), as well as the construction of compound manifolds from arbitrary combinations of sub-manifolds.

We also provide a refactored version of the previously released SLoM framework which implements Gauss-Newton and Levenberg-Marquardt-based sparse least-squares optimization on manifolds and a port of MTK to Matlab (MTKM).

Christoph Hertzberg; Rene Wagner; Oliver Birbach;

Get the Source Code via SVN
svn co

Long Description
The main motivation for MTK was that many SLAM algorithms either used (and partially still use) poor representations such as Euler angles to represent 3D orientations running into problems with singularities or overparameterize e.g. using Quaternions but ignoring undetermined degrees of freedom.

Another advantage of MTK is that it provides macros to combine elementary manifolds (such as R^n or SO(3)) to compund manifolds providing a flattened view for generic algorithms, while the user can access sub-components by name. Also functions are provided to access submatrices of Covariances corresponding to components of the state.

Compound manifolds are handled entirely using macros and template code, thus causing no run-time overhead.

The Matlab port primarily targets calibration applications and SLAM experimentation trading speed for ease of use. Details can be found in the IROS paper below.

Example Images

Manifolds such as the sphere are viewed locally as Euclidean Space. Generic algorithms access the state only within the tangential space using the boxplus-operator.

Input Data
Input operations have to be implemented by the user.

Logfile Format
For SLoM some examples are implemented working on logfiles as provided by TORO, iSAM or HOG-Man.

Type of Map
MTK is only used to represent states. SLoM can operate on arbitrary feature based maps or calibration problems.

Hardware/Software Requirements
Developed under Linux (GCC). Tested under Linux and Windows. MTK is a pure header-only template library depending on Boost and the Eigen matrix library. SLoM furthermore requires the CXSparse library.

Papers Describing the Approach
C. Hertzberg, R. Wagner, U. Frese, and L. Schroeder: Integrating Generic Sensor Fusion Algorithms with Sound State Representation through Encapsulation of Manifolds, Information Fusion, under review (link)

R. Wagner, O. Birbach, and U. Frese: Rapid Development of Manifold-Based Graph Optimization Systems for Multi-Sensor Calibration and SLAM., Proceeding of the IEEE/RSJ International Conference on Intelligent Robots and Systems (IROS 2011), to appear (link)

Christoph Hertzberg: A Framework for Sparse, Non-Linear Least Squares Problems on Manifolds, Diploma Thesis, University of Bremen, 2008 (link)

License Information
This software is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
The authors allow the users of to use and modify the source code for their own research. Any commercial application, redistribution, etc has to be arranged between users and authors individually and is not covered by

MTK, SLoM and MTKM are licenced under the BSD License.

*** is not responsible for the content of this webpage ***
*** Copyright and V.i.S.d.P.: Christoph Hertzberg; Rene Wagner; Oliver Birbach; ***