This application implements a simple Kalman Filter for solving the SLAM problem for generic 3D range-bearing sensors and a full 6D robot state space. This program is a front-end for the class mrpt::slam::CRangeBearingKFSLAM . 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 generates a number of files describing the evolution of the filter.
kf-slam can also optionally employ a 2D version of the same range-bearing problem (since mrpt 0.9.4), a more efficient approach for SLAM problems really happening in planar environments. See this configuration file as an example of how to use the
The theoretical background of 6D Range-Bearing SLAM is explained in this paper .
The following results have been obtained from synthetic data, generated with a the application "simul-landmarks". That simulator generates a set of random landmarks in 3D and generates noisy range-bearing measurements from some predefined robot path. The output is a rawlog file, which is processed by the kf-slam application. You can reproduce the example shown in the videos below doing, from a console:
$ cd MRPT/share/mrpt/config_files/kf-slam
$ kf-slam EKF-SLAM_6D_test.ini
(Also on YouTube, with worse quality: http://www.youtube.com/watch?v=eOkzd_i_-ps )
Another example of a path in 2D only: