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.
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.
It is shown then that a proper probabilistic observation model can be derived for online operation with no need for delayed initializations:
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).
4. Input data
mrpt::obs::CActionRobotMovement2D) and observations the sensed ranges to a set of static beacons (
mrpt::slam::CMetricMapBuilderRBPF, after setting its multi-metric map to hold only one beacon map.
$ cd MRPT/share/mrpt/config_files/rbpf-slam/
$ rbpf-slam RO-SLAM_simulatedData_SOG.ini
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.
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)