This class implements a Rao-Blackwelized Particle Filter (RBPF) approach to map building (SLAM).
Internally, the list of particles, each containing a hypothesis for the robot path plus its associated metric map, is stored in an object of class CMultiMetricMapPDF.
This class processes robot actions and observations sequentially (through the method CMetricMapBuilderRBPF::processActionObservation) and exploits the generic design of metric map classes in MRPT to deal with any number and combination of maps simultaneously: the likelihood of observations is the product of the likelihood in the different maps, etc.
A number of particle filter methods are implemented as well, by selecting the appropriate values in TConstructionOptions::PF_options. Not all the PF algorithms are implemented for all kinds of maps.
For an example of usage, check the application "rbpf-slam", in "apps/RBPF-SLAM". See also the wiki page.
Definition at line 65 of file CMetricMapBuilderRBPF.h.
#include <mrpt/slam/CMetricMapBuilderRBPF.h>

Classes | |
| struct | TConstructionOptions |
| Options for building a CMetricMapBuilderRBPF object, passed to the constructor. More... | |
| struct | TStats |
| This structure will hold stats after each execution of processActionObservation. More... | |
Public Member Functions | |
| CMetricMapBuilderRBPF (const TConstructionOptions &initializationOptions) | |
| Constructor. | |
| virtual | ~CMetricMapBuilderRBPF () |
| Destructor. | |
| void | initialize (const CSimpleMap &initialMap=CSimpleMap(), CPosePDF *x0=NULL) |
| Initialize the method, starting with a known location PDF "x0"(if supplied, set to NULL to left unmodified) and a given fixed, past map. | |
| void | clear () |
| Clear all elements of the maps. | |
| CPose3DPDFPtr | getCurrentPoseEstimation () const |
| Returns a copy of the current best pose estimation as a pose PDF. | |
| void | getCurrentMostLikelyPath (std::deque< TPose3D > &outPath) const |
| Returns the current most-likely path estimation (the path associated to the most likely particle). | |
| void | processActionObservation (CActionCollection &action, CSensoryFrame &observations) |
| Appends a new action and observations to update this map: See the description of the class at the top of this page to see a more complete description. | |
| void | getCurrentlyBuiltMap (CSimpleMap &out_map) const |
| Fills "out_map" with the set of "poses"-"sensory-frames", thus the so far built map. | |
| CMultiMetricMap * | getCurrentlyBuiltMetricMap () |
| Returns the map built so far. | |
| unsigned int | getCurrentlyBuiltMapSize () |
| Returns just how many sensory-frames are stored in the currently build map. | |
| void | saveCurrentEstimationToImage (const std::string &file, bool formatEMF_BMP=true) |
| A useful method for debugging: the current map (and/or poses) estimation is dumped to an image file. | |
| void | drawCurrentEstimationToImage (utils::CCanvas *img) |
| A usefull method for debugging: draws the current map and path hypotheses to a CCanvas. | |
| void | saveCurrentPathEstimationToTextFile (std::string fil) |
| A logging utility: saves the current path estimation for each particle in a text file (a row per particle, each 3-column-entry is a set [x,y,phi], respectively). | |
| double | getCurrentJointEntropy () |
Public Attributes | |
| CMultiMetricMapPDF | mapPDF |
| The map PDF: It includes a path and associated map for each particle. | |
| TStats | m_statsLastIteration |
| This structure will hold stats after each execution of processActionObservation. | |
Protected Attributes | |
| bayes::CParticleFilter::TParticleFilterOptions | m_PF_options |
| The configuration of the particle filter: | |
| float | insertionLinDistance |
| Distances (linear and angular) for inserting a new observation into the map. | |
| float | insertionAngDistance |
| float | localizeLinDistance |
| Distances (linear and angular) for updating the robot pose estimate (and particles weighs, if applicable). | |
| float | localizeAngDistance |
| mrpt::poses::CPose3DPDFGaussian | odoIncrementSinceLastLocalization |
| Traveled distance since last localization update. | |
| mrpt::poses::CPose3D | odoIncrementSinceLastMapUpdate |
| Traveled distance since last map update. | |
| non_copiable_ptr< CMultiMetricMap > | currentMetricMapEstimation |
| A buffer: memory is actually hold within "mapPDF". | |
| mrpt::slam::CMetricMapBuilderRBPF::CMetricMapBuilderRBPF | ( | const TConstructionOptions & | initializationOptions ) |
Constructor.
| virtual mrpt::slam::CMetricMapBuilderRBPF::~CMetricMapBuilderRBPF | ( | ) | [virtual] |
Destructor.
| void mrpt::slam::CMetricMapBuilderRBPF::clear | ( | ) |
Clear all elements of the maps.
Reimplemented from mrpt::slam::CMetricMapBuilder.
| void mrpt::slam::CMetricMapBuilderRBPF::drawCurrentEstimationToImage | ( | utils::CCanvas * | img ) |
A usefull method for debugging: draws the current map and path hypotheses to a CCanvas.
| double mrpt::slam::CMetricMapBuilderRBPF::getCurrentJointEntropy | ( | ) |
| void mrpt::slam::CMetricMapBuilderRBPF::getCurrentlyBuiltMap | ( | CSimpleMap & | out_map ) | const [virtual] |
Fills "out_map" with the set of "poses"-"sensory-frames", thus the so far built map.
Implements mrpt::slam::CMetricMapBuilder.
| unsigned int mrpt::slam::CMetricMapBuilderRBPF::getCurrentlyBuiltMapSize | ( | ) | [virtual] |
Returns just how many sensory-frames are stored in the currently build map.
Implements mrpt::slam::CMetricMapBuilder.
| CMultiMetricMap* mrpt::slam::CMetricMapBuilderRBPF::getCurrentlyBuiltMetricMap | ( | ) | [virtual] |
Returns the map built so far.
NOTE that for efficiency a pointer to the internal object is passed, DO NOT delete nor modify the object in any way, if desired, make a copy of ir with "duplicate()".
Implements mrpt::slam::CMetricMapBuilder.
| void mrpt::slam::CMetricMapBuilderRBPF::getCurrentMostLikelyPath | ( | std::deque< TPose3D > & | outPath ) | const |
Returns the current most-likely path estimation (the path associated to the most likely particle).
| CPose3DPDFPtr mrpt::slam::CMetricMapBuilderRBPF::getCurrentPoseEstimation | ( | ) | const [virtual] |
Returns a copy of the current best pose estimation as a pose PDF.
Implements mrpt::slam::CMetricMapBuilder.
| void mrpt::slam::CMetricMapBuilderRBPF::initialize | ( | const CSimpleMap & | initialMap = CSimpleMap(), |
| CPosePDF * | x0 = NULL |
||
| ) | [virtual] |
Initialize the method, starting with a known location PDF "x0"(if supplied, set to NULL to left unmodified) and a given fixed, past map.
Implements mrpt::slam::CMetricMapBuilder.
| void mrpt::slam::CMetricMapBuilderRBPF::processActionObservation | ( | CActionCollection & | action, |
| CSensoryFrame & | observations | ||
| ) | [virtual] |
Appends a new action and observations to update this map: See the description of the class at the top of this page to see a more complete description.
| action | The incremental 2D pose change in the robot pose. This value is deterministic. |
| observations | The set of observations that robot senses at the new pose. Statistics will be saved to statsLastIteration |
Implements mrpt::slam::CMetricMapBuilder.
| void mrpt::slam::CMetricMapBuilderRBPF::saveCurrentEstimationToImage | ( | const std::string & | file, |
| bool | formatEMF_BMP = true |
||
| ) | [virtual] |
A useful method for debugging: the current map (and/or poses) estimation is dumped to an image file.
| file | The output file name |
| formatEMF_BMP | Output format = true:EMF, false:BMP |
Implements mrpt::slam::CMetricMapBuilder.
| void mrpt::slam::CMetricMapBuilderRBPF::saveCurrentPathEstimationToTextFile | ( | std::string | fil ) |
A logging utility: saves the current path estimation for each particle in a text file (a row per particle, each 3-column-entry is a set [x,y,phi], respectively).
non_copiable_ptr<CMultiMetricMap> mrpt::slam::CMetricMapBuilderRBPF::currentMetricMapEstimation [protected] |
A buffer: memory is actually hold within "mapPDF".
Definition at line 91 of file CMetricMapBuilderRBPF.h.
float mrpt::slam::CMetricMapBuilderRBPF::insertionAngDistance [protected] |
Definition at line 79 of file CMetricMapBuilderRBPF.h.
float mrpt::slam::CMetricMapBuilderRBPF::insertionLinDistance [protected] |
Distances (linear and angular) for inserting a new observation into the map.
Definition at line 79 of file CMetricMapBuilderRBPF.h.
float mrpt::slam::CMetricMapBuilderRBPF::localizeAngDistance [protected] |
Definition at line 83 of file CMetricMapBuilderRBPF.h.
float mrpt::slam::CMetricMapBuilderRBPF::localizeLinDistance [protected] |
Distances (linear and angular) for updating the robot pose estimate (and particles weighs, if applicable).
Definition at line 83 of file CMetricMapBuilderRBPF.h.
bayes::CParticleFilter::TParticleFilterOptions mrpt::slam::CMetricMapBuilderRBPF::m_PF_options [protected] |
The configuration of the particle filter:
Definition at line 75 of file CMetricMapBuilderRBPF.h.
This structure will hold stats after each execution of processActionObservation.
Definition at line 206 of file CMetricMapBuilderRBPF.h.
The map PDF: It includes a path and associated map for each particle.
Definition at line 70 of file CMetricMapBuilderRBPF.h.
mrpt::poses::CPose3DPDFGaussian mrpt::slam::CMetricMapBuilderRBPF::odoIncrementSinceLastLocalization [protected] |
Traveled distance since last localization update.
Definition at line 86 of file CMetricMapBuilderRBPF.h.
Traveled distance since last map update.
Definition at line 87 of file CMetricMapBuilderRBPF.h.
| Page generated by Doxygen 1.7.2 for MRPT 0.9.4 SVN: at Mon Jan 10 22:30:30 UTC 2011 |