SLAM++

SLAM++ is a very fast nonlinear least squares solver. For simple nonlinear solving it is up to three times faster than the Ceres solver (tested Q4 2016). For more complicated tasks such as covariance recovery, the theoretical complexity (the big O notation) is completely different and speedups of several orders of magnitude are common.

Keywords: SLAM++, SLAM ++, sparse matrix, block matrix, parallel processing, C++, GPU, SLAM, simultaneous localization and mapping, BA, bundle adjustment, SfN, structure from motion, robotics, 3D reconstruction, computer vision, nonlinear least squares, nonlinear optimization.

Not to be confused with the SLAM++ proposed by Salas-Moreno. Both softwares were developed and named independently and simultaneously. Our incremental SLAM framework was first introduced at ICRA 2013 (May 6-10) during the interactive presentation of our seminal work in this direction. This presentation took place one day prior to the introduction of the object-based SLAM with the same name in a workshop session. The full paper describing the object-based SLAM did not appear until CVPR 2013 (June 25-27). Unlike its "evil twin", our SLAM++ solver is actively maintained open-source, with thousands of downloads and users in both academia and industry.

status: functional, under development
language: C++
os: multiplatform, os independent

Downloads

Download SLAM++ from its SourceForge website http://sf.net/p/slam-plus-plus/. Online documentation for the latest public version is always available at http://slam-plus-plus.sf.net/doc/. The relevant academic publications can be downloaded from Scholar or from SLAM++ Wiki.

Demos

We made some cool demos to showcase or explain some features of SLAM++ on conferences. These are typically written in C++ and use OpenGL for rendering. You can get source codes for some of the demos here.

SLAM++ ICRA 2015 Demo

This demo showcases incremental covariance recovery methods implemented in SLAM++. Aside of that, it shows fancy animations of matrices and sparsity patterns, there are a few 3D objects with precomputed ambient occlusion laid out between the "slides" and at the end, there is animation of a robot going around Intel lab and incrementally solving for its position as well as for its uncertainty.

It was voiced by Viorela Ila, the recording was done in a living room on M-Audio FireWire 410.


Smoothing Techniques for Underwater Localization

This is a tech demo of using smoothing for localization using acoustic (sonar) system. This work was supported by an OSEO grant and is used in the BOT project. The demo has simple water with reflections and refractions.


SLAM++ RSS 2013 SLAM Race

This is a timing comparison of incremental SLAM solvers. The contestants get to race each other on the 10k dataset. The demo runs offline, and uses times that were recorded for each of the benchmarked solvers. This way, each solver could run on exactly the same machine and with identical conditions. This was shown to the visiotors of our booth / stand at the Robotics: Science and Systems 2013 conference.


SLAM++ ICRA 2013 Block Matrix Tetris

This is a SLAM++ demo we showed at ICRA 2013, it showcases the block matrix format we developed for highly efficient arithmetic operations. At the conference, the visitors of our booth could play this interactively on tablets. Android version is available from SourceForge. This is also an easter egg.

After implementing our block matrix class, we needed to test it. Apart from some hard-coded test cases and public datasets which do not really have block matrices, there was really no good data. After a little thinking about blocks, we decided to use off-the-shelf implementation of tetris AI, and let it generate the test data for us.