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

1. Description

Short version:

The module mrpt-slam provides a generic C++ implementation of RBPF-SLAM for different map types, among which there is one solution to Range-Only SLAM with maps represented as Sum of Gaussians, which are dynamically adapted to represent well the uncertainty of all mapped beacons. There exists a stand-alone executable (rbpf-slam) and demonstration configuration files and datasets.

Long version:

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.

ro-slam-factoring

It is shown then that a proper probabilistic observation model can be derived for online operation with no need for delayed initializations:

ro-slam-sensor-model

We provide a rigorous statistical comparison of this proposal with previous work of the authors where a Monte-Carlo approximation was employed instead for the conditional densities. As verified experimentally, this new proposal represents a significant improvement in accuracy, computation time, and robustness against outliers.

 

2. Papers describing the method

  • Blanco, J.L. and Fernandez-Madrigal, J.A. and González, J. “Efficient Probabilistic Range-Only SLAM”, IEEE/RSJ International Conference on Intelligent Robots and Systems (IROS), pp. 1017-1022, 2008. PDF – Slides PPT

3. Example screenshots and videos

The next video shows: (i) results for 2D RO-SLAM with a simulated sensor, and (ii) results from real UWB radio data in 3D. Refer to the paper for more details on these results.

This animation illustrates the symmetries found in RO-SLAM for a robot moving in a straight line. When the robot turns a corner, the symmetry is broken, but it still remains with respect to the plane the robot is moving (above and below the movement plane).

Evolution of one landmark estimate (as a SOG) for 4 time steps (t1,t2,t3,t4), as the robot moves in a straight line:
demo_ROSLAM_symmetry1

4. Input data

The input to the algorithm are “action+observation” pairs, with actions being odometry readings (mrpt::obs::CActionRobotMovement2D) and observations the sensed ranges to a set of static beacons (mrpt::obs::CObservationBeaconRanges).
Users should reach the RBPF-SLAM algorithm via the generic class mrpt::slam::CMetricMapBuilderRBPF, after setting its multi-metric map to hold only one beacon map.
sample RO-SLAM dataset is included in MRPT under: MRPT/share/mrpt/datasets/RO-SLAM_demo.rawlog
It’s a Rawlog file, which can be visualized and manipulated with RawLogViewer or rawlog-edit. Both programs come in precompiled versions of MRPT and are also in the official Ubuntu repositories.
In order to execute an example run of RO RBPF-based SLAM, open up a terminal and execute:
Open RO-SLAM_simulatedData_SOG.ini to see all the relevant parameters.

5. API Documentation

The programs employed in the experimental results of this paper are:

  • simul-beacons: This program generates a random 2D or 3D map of beacons and produces the simulated observations of a robot according to some predefined path.
  • rbpf-slam: This application is actually a front-end to the class mrpt::slam::CMetricMapBuilderRBPF. All the parameters to the algorithm are passed through a configuration file in the command line. The filter processes actions and observations from a rawlog file and optionally generates a number of files describing the evolution of the filter and the maps.

More concretely, the SOG approach described in this paper is implemented in the classes: mrpt::maps::CBeacon, and mrpt::maps::CBeaconMap.

 

6. Hardware/Software Requirements

The implementation is part of the C++ library “mrpt-slam” within the Mobile Robot Programming Toolkit (MRPT). basic requirements are:

  • Windows/Linux, Visual Studio 2008+/GCC 4.1+
  • Eigen 3 (will use MRPT’s embedded version if no system version is found).
  • wxWidgets (optional, for GUI only)

Refer to common instructions on how to compile MRPT or see Ubuntu PPA and official repositories.

 

7. License information

Since MRPT 1.0.0, all MRPT code is released under the New BSD License.
  • Michael Dooley

    I’ve been checking out the source for this package and can’t seem to find the way to enable the 3D mode for RO-SLAM. I am able to run the 2D mode successfully, is there something that I’m missing for doing 3D?