MH-iSAM2, or Multi-hypothesis Incremental Smoothing and Mapping (iSAM) Using Bayes Tree and Hypo-tree, is a library of C++ classes based on GTSAM library that implements multi-hypothesis inference and optimization for robotics and vision applications, especially for online simultaneous localization and mapping (SLAM) problems.
Different from most other optimizers such as g2o, Ceres, iSAM, or iSAM2, MH-iSAM2 models ambiguous measurements or data associations specifically as multi-mode factors (MMF), and solves for multiple possible solutions of the estimated states when the ambiguities cannot be resolved, or converges back to one single solution when sufficienct measurements/constraints are given.
Current version: 1.0 (based on GTSAM 4)
Link to the paper: MH-iSAM2
#!bash
$ mkdir build
$ cd build
$ cmake ..
$ make
Prerequisites (same as GTSAM 4):
- Boost >= 1.43 (Ubuntu:
sudo apt-get install libboost-all-dev
) - CMake >= 2.6 (Ubuntu:
sudo apt-get install cmake
) - A modern compiler, i.e., at least gcc 4.7.3 on Linux.
Optional prerequisites - used automatically if findable by CMake:
- Intel Threaded Building Blocks (TBB) (Ubuntu:
sudo apt-get install libtbb-dev
) - Intel Math Kernel Library (MKL)
Notice: Most classes and functions in GTSAM are preserved in the MH-iSAM2 library, so you do not have to install GTSAM if you have MH-iSAM2 installed already. However new updates in GTSAM after 2018 are not included.
Warning: It is highly suggested to only use the Eigen library that has the exact same version as the one in gtsam/3rdparty/Eigen to avoid conflict when building your own project. E.g.: install Point Cloud Library (PCL) from source with the same version of Eigen.
The examples of using MH-iSAM2 in a SLAM system can be found in:
examples/MH_ISAM2_TEST_city10000.cpp
and
examples/MH_ISAM2_TEST_victoriaPark.cpp
More information of the examples are in MH_example_tutorial.md.
Usage guidance for building your own multi-hypothesis SLAM system is in USAGE.md.
Since MH-iSAM2 is based on (and still contains a large part of) GTSAM, most information in USAGE_GTSAM.md can still be apllied to MH-iSAM2. The differences are that now Values can contain multiple hypotheses and Factors can contain multiple modes.
MH-iSAM2 was developed in the Robot Perception Lab of Michael Kaess at the Robotics Institute of Carnegie Mellon University.