Bayesian range-only SLAM (RO-SLAM) with SOGs

This is a C++ implementation for generic RBPF-SLAM with different kinds of maps, including one solution to Range-Only SLAM (RO-SLAM) with landmark maps represented as Sum of Gaussians (SOGs), which are dynamically adapted to represent well the uncertainty of all mapped beacons. There exists a stand-alone executable ready for use and demo configuration files and datasets.

Jose Luis Blanco; Juan Antonio Fernandez Madrigal; Javier Gonzalez Jimenez;

Get the Source Code via SVN
svn co

Long Description
This solution to Range-Only SLAM (RO-SLAM) addresses the Bayesian inference problem of sequentially tracking a vehicle while estimating the location of a set of beacons without any prior information. The only assumptions are the availability of odometry and a range sensor able of identifying the different beacons (i.e. no need to solve data association).

We exploit the conditional independence between each beacon distribution within a Rao-Blackwellized Particle Filter (RBPF) for maintaining independent Sum of Gaussians (SOGs) for each map element in Euclidean coordinates.

It is shown then that a proper probabilistic observation model can be derived for online operation with no need for delayed initializations. This solution is far more accurate and efficient than a previous implementation with beacons modeled with a Monte-Carlo approximation.

Example Images

Video: Results for three real UWB beacons.

Video: Symmetries in RO-SLAM.

Input Data
Pairs of action (movements from odometry) + observation (sensed ranges to a set of static beacons).

Logfile Format
A binary format called "Rawlog", suitable to laser or RGB+D scans, images, UWB beacons, 2D or 3D odometry, etc. See its specifications: These files can be visualized and manipulated with RawLogViewer or rawlog-edit. Both programs come in precompiled versions of MRPT and can be also found in the official Debian and Ubuntu repositories.

Type of Map

Hardware/Software Requirements
The implementation is part of the C++ library: within the Mobile Robot Programming Toolkit (MRPT). Built and tested on Windows/Linux, with Visual Studio 2008+/GCC 4.1+. Requires: Eigen 3, but will use an included version if no system version is found. wxWidgets (optional, for GUI only)

Papers Describing the Approach
Jose Luis Blanco, Juan Antonio Fernandez Madrigal, Javier Gonzalez Jimenez: Efficient Probabilistic Range-Only SLAM, IEEE/RSJ International Conference on Intelligent Robots and Systems (IROS), 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

MRPT is released under the New BSD license since version 1.0.0, under GNU GPL 3 for previous versions.

Further Information
Please see: for further instructions on how to reproduce the experiments shown in the paper, Doxygen documentation, the slides of our IROS presentation, etc. The main SVN repository for this project is located at Google code:

*** is not responsible for the content of this webpage ***
*** Copyright and V.i.S.d.P.: Jose Luis Blanco; Juan Antonio Fernandez Madrigal; Javier Gonzalez Jimenez; ***