This class implements a Rao-Blackwelized Particle Filter (RBPF) approach to map building (SLAM). More...
#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 (CSensFrameProbSequence &initialMap, 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< CPose2D > &outPath) const |
Returns the current most-likely path estimation (the path associated to the most likely particle). | |
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 (CSensFrameProbSequence &out_map) const |
Fills "out_map" with the set of "poses"-"sensorial frames", thus the so far built map. | |
CMultiMetricMap * | getCurrentlyBuiltMetricMap () |
Returns the map built so far. | |
unsigned int | getCurrentlyBuiltMapSize () |
Returns just how many sensorial 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 |
mrpt::poses::CPose3DPDFGaussian | odoIncrementSinceLast |
Traveled distance since last processing of the PF. | |
non_copiable_ptr< CMultiMetricMap > | currentMetricMapEstimation |
A buffer: memory is actually hold within "mapPDF". |
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 62 of file CMetricMapBuilderRBPF.h.
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 | ( | CSensFrameProbSequence & | out_map | ) | const [virtual] |
Fills "out_map" with the set of "poses"-"sensorial frames", thus the so far built map.
Implements mrpt::slam::CMetricMapBuilder.
unsigned int mrpt::slam::CMetricMapBuilderRBPF::getCurrentlyBuiltMapSize | ( | ) | [virtual] |
Returns just how many sensorial 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).
void mrpt::slam::CMetricMapBuilderRBPF::getCurrentMostLikelyPath | ( | std::deque< CPose2D > & | outPath | ) | const |
Returns the current most-likely path estimation (the path associated to the most likely particle).
This version ignore any 3D pose components. Use the full CPose3D-based version if full 3D data is needed.
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 | ( | CSensFrameProbSequence & | initialMap, | |
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 83 of file CMetricMapBuilderRBPF.h.
float mrpt::slam::CMetricMapBuilderRBPF::insertionAngDistance [protected] |
Definition at line 76 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 76 of file CMetricMapBuilderRBPF.h.
bayes::CParticleFilter::TParticleFilterOptions mrpt::slam::CMetricMapBuilderRBPF::m_PF_options [protected] |
The configuration of the particle filter:.
Definition at line 72 of file CMetricMapBuilderRBPF.h.
This structure will hold stats after each execution of processActionObservation.
Definition at line 200 of file CMetricMapBuilderRBPF.h.
The map PDF: It includes a path and associated map for each particle.
Definition at line 67 of file CMetricMapBuilderRBPF.h.
mrpt::poses::CPose3DPDFGaussian mrpt::slam::CMetricMapBuilderRBPF::odoIncrementSinceLast [protected] |
Traveled distance since last processing of the PF.
Definition at line 79 of file CMetricMapBuilderRBPF.h.
Page generated by Doxygen 1.6.1 for MRPT 0.7.1 SVN: at Tue Dec 22 08:29:35 CET 2009 |