Application: pf-localization

See also: ROS package mrpt_localizationros

The application pf-localization implements a particle filter for localization (aka Markov Localization) of a mobile robot given odometry, a map of the environment and any number and combination of sensor observations such as a likelihood can be computed given the map. This generic implementation is possible through the generic design of metric maps in the MRPT C++ libraries.

1. Overview

The application pf-localization implements a particle filter for localization (aka Markov Localization) of a mobile robot given odometry, a map of the environment and any number and combination of sensor observations such as a likelihood can be computed given the map. This generic implementation is possible through the generic design of metric maps in the MRPT C++ libraries. One typical situation is 2D laser scans used against an occupancy grid map. Note that the program can handles both action-observation and observations-only datasets (since MRPT 0.9.3), but the action-observation is preferred. The application processes all data from a rawlog: it is not intended for real-time operation on a robot, though the source code requires little modification to do so.

2. C++ classes

If you are more interested in the C++ API of Monte Carlo localization than in this front-end application, see:

See also the description of the generic particle filtering algorithms and their corresponding C++ virtual classes.

3. Invokation

With the configuration file as the only argument:

With a configuration file and a rawlog file as input dataset (in this case the field “rawlog_file” in the configuration file is ignored):

4. Examples

Read the configuration file in ”share/mrpt/config_files/pf-localization/localization_demo.ini’‘ for an example.

Results for global localization:

 

 

  • ilja

    Is it possible to use a beacon map for localiazion with a PF?

  • Jorge Santos Simón

    Hi all, I’m using MRPT’s PF-localization with the mrpt_localization ROS wrapper (http://wiki.ros.org/mrpt_localization) with good results.

    However, I’m trying to tune up the algorithm to make the localization more stable, for example making it rely more on the odometry. The example file comment a bit about the parameters, but I cannot get better results blindly modifying them. Is there any place where the parameters are better documented?

    Is there a specific parameters for making the localization trust more the odometry?
    Thanks!