iSAM is an optimization library for sparse nonlinear problems as encountered in simultaneous localization and mapping (SLAM). The iSAM library provides efficient algorithms for batch and incremental optimization, recovering the exact least-squares solution. The library can easily be extended to new problems, and functionality for often encountered 2D and 3D SLAM problems is already provided. The iSAM algorithm was originally developed by Michael Kaess (kaess@mit.edu) and Frank Dellaert (dellaert@cc.gatech.edu) at Georgia Tech.
Copyright (C) 2009-2012 Massachusetts Institute of Technology.
Michael Kaess (kaess@mit.edu), Hordur Johannsson (hordurj@mit.edu), David Rosen (dmrosen@mit.edu) and John Leonard (jleonard@mit.edu)
iSAM is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version.
iSAM 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. See the GNU Lesser General Public License for more details.
You should have received a copy of the GNU Lesser General Public License along with iSAM. If not, see <http://www.gnu.org/licenses/>.
The latest version of iSAM is available at http://people.csail.mit.edu/kaess/isam
The source code is available from our public subversion repository:
svn co https://svn.csail.mit.edu/isam
This software was tested under Ubuntu 9.04-11.04, and Mac OS X 10.5-10.6. iSAM depends on the following software:
To install all required packages in Ubuntu 9.10 and later, simply type:
sudo apt-get install cmake libsuitesparse-dev libeigen3-dev libsdl1.2-dev doxygen graphviz
Note that CHOLMOD is contained in SuiteSparse. On Mac OS X, SuiteSparse and SDL are available through MacPorts:
sudo port install suitesparse libsdl
Compile with:
make
Directory structure:
isamlib/
contains the source code for the iSAM library include/
contains the header files for the iSAM library isam/
contains the source code for the iSAM executable examples/
contains examples for using different components of the iSAM library doc/
contains the documentation (after calling "make doc") misc/
contains code referenced from publications data/
contains example data files lib/
contains the actual library "libisam.a" bin/
contains the main executable "isam"Usage example:
bin/isam -G data/sphere400.txt
For more usage information:
bin/isam -h
Install the library in your system with:
make install
Note that make just provides a convenient wrapper for running cmake in a separate "build" directory. Compile options can be changed with "ccmake build". In particular, support for the 3D viewer can be disabled by setting USE_GUI to OFF. Library and include paths can be modified manually in case SuiteSparse/CHOLMOD was installed in a local directory and cannot be found automatically.
To generate detailed documentation for the source code, type:
make doc
and open doc/html/index.html
in your browser.
Details of the algorithms used in this software are provided in these publications (the latex bibliography file isam.bib
is included for convenience).
A full list of iSAM-related references in BibTeX format is available here: Bibliography.
Newer publications will be available from my web page at http://people.csail.mit.edu/kaess/
Many thanks to Richard Roberts for his help with this software. Thanks also to John McDonald, Ayoung Kim, Ryan Eustice, Aisha Walcott, Been Kim and Abe Bachrach for their feedback and patience with earlier versions.