Main MRPT website > C++ reference
MRPT logo
List of all members | Public Member Functions | Private Member Functions
mrpt::slam::PF_implementation< PARTICLE_TYPE, MYSELF > Class Template Referenceabstract

Detailed Description

template<class PARTICLE_TYPE, class MYSELF>
class mrpt::slam::PF_implementation< PARTICLE_TYPE, MYSELF >

A set of common data shared by PF implementations for both SLAM and localization.

Definition at line 46 of file PF_implementations_data.h.

#include <mrpt/slam/PF_implementations_data.h>

Inheritance diagram for mrpt::slam::PF_implementation< PARTICLE_TYPE, MYSELF >:
Inheritance graph
[legend]

Public Member Functions

 PF_implementation ()
 
template<class BINTYPE >
bool PF_SLAM_implementation_gatherActionsCheckBothActObs (const CActionCollection *actions, const CSensoryFrame *sf)
 Auxiliary method called by PF implementations: return true if we have both action & observation, otherwise, return false AND accumulate the odometry so when we have an observation we didn't lose a thing. More...
 
Virtual methods that the PF_implementations assume exist.
virtual const TPose3DgetLastPose (const size_t i) const =0
 Return a pointer to the last robot pose in the i'th particle (or NULL if it's a path and it's empty). More...
 
virtual void PF_SLAM_implementation_custom_update_particle_with_new_pose (PARTICLE_TYPE *particleData, const TPose3D &newPose) const =0
 
virtual void PF_SLAM_implementation_replaceByNewParticleSet (typename CParticleFilterData< PARTICLE_TYPE >::CParticleList &old_particles, const vector< TPose3D > &newParticles, const vector_double &newParticlesWeight, const vector< size_t > &newParticlesDerivedFromIdx) const
 This is the default algorithm to efficiently replace one old set of samples by another new set. More...
 
virtual bool PF_SLAM_implementation_doWeHaveValidObservations (const typename CParticleFilterData< PARTICLE_TYPE >::CParticleList &particles, const CSensoryFrame *sf) const
 
virtual bool PF_SLAM_implementation_skipRobotMovement () const
 Make a specialization if needed, eg. More...
 
virtual double PF_SLAM_computeObservationLikelihoodForParticle (const CParticleFilter::TParticleFilterOptions &PF_options, const size_t particleIndexForMap, const CSensoryFrame &observation, const CPose3D &x) const =0
 Evaluate the observation likelihood for one particle at a given location. More...
 

Protected Member Functions

The generic PF implementations for localization & SLAM.
template<class BINTYPE >
void PF_SLAM_implementation_pfAuxiliaryPFOptimal (const CActionCollection *actions, const CSensoryFrame *sf, const CParticleFilter::TParticleFilterOptions &PF_options, const TKLDParams &KLD_options)
 A generic implementation of the PF method "prediction_and_update_pfAuxiliaryPFOptimal" (optimal sampling with rejection sampling approximation), common to both localization and mapping. More...
 
template<class BINTYPE >
void PF_SLAM_implementation_pfAuxiliaryPFStandard (const CActionCollection *actions, const CSensoryFrame *sf, const CParticleFilter::TParticleFilterOptions &PF_options, const TKLDParams &KLD_options)
 A generic implementation of the PF method "prediction_and_update_pfAuxiliaryPFStandard" (Auxiliary particle filter with the standard proposal), common to both localization and mapping. More...
 
template<class BINTYPE >
void PF_SLAM_implementation_pfStandardProposal (const CActionCollection *actions, const CSensoryFrame *sf, const CParticleFilter::TParticleFilterOptions &PF_options, const TKLDParams &KLD_options)
 A generic implementation of the PF method "pfStandardProposal" (standard proposal distribution, that is, a simple SIS particle filter), common to both localization and mapping. More...
 

Private Member Functions

template<class BINTYPE >
void PF_SLAM_implementation_pfAuxiliaryPFStandardAndOptimal (const CActionCollection *actions, const CSensoryFrame *sf, const CParticleFilter::TParticleFilterOptions &PF_options, const TKLDParams &KLD_options, const bool USE_OPTIMAL_SAMPLING)
 The shared implementation body of two PF methods: APF and Optimal-APF, depending on USE_OPTIMAL_SAMPLING. More...
 
template<class BINTYPE >
void PF_SLAM_aux_perform_one_rejection_sampling_step (const bool USE_OPTIMAL_SAMPLING, const bool doResample, const double maxMeanLik, size_t k, const CSensoryFrame *sf, const CParticleFilter::TParticleFilterOptions &PF_options, CPose3D &out_newPose, double &out_newParticleLogWeight)
 

Data members and methods used by generic PF implementations

CActionRobotMovement2D m_accumRobotMovement2D
 
bool m_accumRobotMovement2DIsValid
 
CPose3DPDFGaussian m_accumRobotMovement3D
 
bool m_accumRobotMovement3DIsValid
 
CPoseRandomSampler m_movementDrawer
 Used in al PF implementations. More...
 
vector_double m_pfAuxiliaryPFOptimal_estimatedProb
 Auxiliary variable used in the "pfAuxiliaryPFOptimal" algorithm. More...
 
vector_double m_pfAuxiliaryPFStandard_estimatedProb
 Auxiliary variable used in the "pfAuxiliaryPFStandard" algorithm. More...
 
vector_double m_pfAuxiliaryPFOptimal_maxLikelihood
 Auxiliary variable used in the "pfAuxiliaryPFOptimal" algorithm. More...
 
std::vector< TPose3Dm_pfAuxiliaryPFOptimal_maxLikDrawnMovement
 Auxiliary variable used in the "pfAuxiliaryPFOptimal" algorithm. More...
 
std::vector< bool > m_pfAuxiliaryPFOptimal_maxLikMovementDrawHasBeenUsed
 
template<class BINTYPE >
static double PF_SLAM_particlesEvaluator_AuxPFStandard (const CParticleFilter::TParticleFilterOptions &PF_options, const CParticleFilterCapable *obj, size_t index, const void *action, const void *observation)
 Compute w[i]·p(z_t | mu_t^i), with mu_t^i being the mean of the new robot pose. More...
 
template<class BINTYPE >
static double PF_SLAM_particlesEvaluator_AuxPFOptimal (const CParticleFilter::TParticleFilterOptions &PF_options, const CParticleFilterCapable *obj, size_t index, const void *action, const void *observation)
 

Constructor & Destructor Documentation

◆ PF_implementation()

template<class PARTICLE_TYPE, class MYSELF>
mrpt::slam::PF_implementation< PARTICLE_TYPE, MYSELF >::PF_implementation ( )
inline

Definition at line 49 of file PF_implementations_data.h.

Member Function Documentation

◆ getLastPose()

template<class PARTICLE_TYPE, class MYSELF>
virtual const TPose3D* mrpt::slam::PF_implementation< PARTICLE_TYPE, MYSELF >::getLastPose ( const size_t  i) const
pure virtual

Return a pointer to the last robot pose in the i'th particle (or NULL if it's a path and it's empty).

Implemented in mrpt::slam::CMultiMetricMapPDF, mrpt::slam::CMonteCarloLocalization2D, and mrpt::slam::CMonteCarloLocalization3D.

◆ PF_SLAM_aux_perform_one_rejection_sampling_step()

template<class PARTICLE_TYPE , class MYSELF >
template<class BINTYPE >
void mrpt::slam::PF_implementation< PARTICLE_TYPE, MYSELF >::PF_SLAM_aux_perform_one_rejection_sampling_step ( const bool  USE_OPTIMAL_SAMPLING,
const bool  doResample,
const double  maxMeanLik,
size_t  k,
const CSensoryFrame sf,
const CParticleFilter::TParticleFilterOptions PF_options,
CPose3D out_newPose,
double &  out_newParticleLogWeight 
)
private

Definition at line 841 of file PF_implementations.h.

◆ PF_SLAM_computeObservationLikelihoodForParticle()

template<class PARTICLE_TYPE, class MYSELF>
virtual double mrpt::slam::PF_implementation< PARTICLE_TYPE, MYSELF >::PF_SLAM_computeObservationLikelihoodForParticle ( const CParticleFilter::TParticleFilterOptions PF_options,
const size_t  particleIndexForMap,
const CSensoryFrame observation,
const CPose3D x 
) const
pure virtual

Evaluate the observation likelihood for one particle at a given location.

Implemented in mrpt::slam::CMultiMetricMapPDF, mrpt::slam::CMonteCarloLocalization2D, and mrpt::slam::CMonteCarloLocalization3D.

◆ PF_SLAM_implementation_custom_update_particle_with_new_pose()

template<class PARTICLE_TYPE, class MYSELF>
virtual void mrpt::slam::PF_implementation< PARTICLE_TYPE, MYSELF >::PF_SLAM_implementation_custom_update_particle_with_new_pose ( PARTICLE_TYPE *  particleData,
const TPose3D newPose 
) const
pure virtual

◆ PF_SLAM_implementation_doWeHaveValidObservations()

template<class PARTICLE_TYPE, class MYSELF>
virtual bool mrpt::slam::PF_implementation< PARTICLE_TYPE, MYSELF >::PF_SLAM_implementation_doWeHaveValidObservations ( const typename CParticleFilterData< PARTICLE_TYPE >::CParticleList &  particles,
const CSensoryFrame sf 
) const
inlinevirtual

Definition at line 240 of file PF_implementations_data.h.

◆ PF_SLAM_implementation_pfAuxiliaryPFOptimal()

template<class PARTICLE_TYPE , class MYSELF >
template<class BINTYPE >
void mrpt::slam::PF_implementation< PARTICLE_TYPE, MYSELF >::PF_SLAM_implementation_pfAuxiliaryPFOptimal ( const CActionCollection actions,
const CSensoryFrame sf,
const CParticleFilter::TParticleFilterOptions PF_options,
const TKLDParams KLD_options 
)
protected

A generic implementation of the PF method "prediction_and_update_pfAuxiliaryPFOptimal" (optimal sampling with rejection sampling approximation), common to both localization and mapping.

  • BINTYPE: TPoseBin or whatever to discretize the sample space for KLD-sampling.

    This method implements optimal sampling with a rejection sampling-based approximation of the true posterior. For details, see the papers:

    J.-L. Blanco, J. González, and J.-A. Fernández-Madrigal, "An Optimal Filtering Algorithm for Non-Parametric Observation Models in Robot Localization," in Proc. IEEE International Conference on Robotics and Automation (ICRA'08), 2008, pp. 461–466.

  • BINTYPE: TPoseBin or whatever to discretize the sample space for KLD-sampling.

    This method implements optimal sampling with a rejection sampling-based approximation of the true posterior. For details, see the papers:

    J.-L. Blanco, J. González, and J.-A. Fernández-Madrigal, "An Optimal Filtering Algorithm for Non-Parametric Observation Models in Robot Localization," in Proc. IEEE International Conference on Robotics and Automation (ICRA'08), 2008, pp. 461–466.

Definition at line 136 of file PF_implementations.h.

◆ PF_SLAM_implementation_pfAuxiliaryPFStandard()

template<class PARTICLE_TYPE , class MYSELF >
template<class BINTYPE >
void mrpt::slam::PF_implementation< PARTICLE_TYPE, MYSELF >::PF_SLAM_implementation_pfAuxiliaryPFStandard ( const CActionCollection actions,
const CSensoryFrame sf,
const CParticleFilter::TParticleFilterOptions PF_options,
const TKLDParams KLD_options 
)
protected

A generic implementation of the PF method "prediction_and_update_pfAuxiliaryPFStandard" (Auxiliary particle filter with the standard proposal), common to both localization and mapping.

  • BINTYPE: TPoseBin or whatever to discretize the sample space for KLD-sampling.

    This method is described in the paper: Pitt, M.K.; Shephard, N. (1999). "Filtering Via Simulation: Auxiliary Particle Filters". Journal of the American Statistical Association 94 (446): 590–591. doi:10.2307/2670179.

  • BINTYPE: TPoseBin or whatever to discretize the sample space for KLD-sampling.

    This method is described in the paper: Pitt, M.K.; Shephard, N. (1999). "Filtering Via Simulation: Auxiliary Particle Filters". Journal of the American Statistical Association 94 (446): 590–591. doi:10.2307/2670179.

Definition at line 321 of file PF_implementations.h.

◆ PF_SLAM_implementation_pfAuxiliaryPFStandardAndOptimal()

template<class PARTICLE_TYPE , class MYSELF >
template<class BINTYPE >
void mrpt::slam::PF_implementation< PARTICLE_TYPE, MYSELF >::PF_SLAM_implementation_pfAuxiliaryPFStandardAndOptimal ( const CActionCollection actions,
const CSensoryFrame sf,
const CParticleFilter::TParticleFilterOptions PF_options,
const TKLDParams KLD_options,
const bool  USE_OPTIMAL_SAMPLING 
)
private

The shared implementation body of two PF methods: APF and Optimal-APF, depending on USE_OPTIMAL_SAMPLING.

Definition at line 500 of file PF_implementations.h.

◆ PF_SLAM_implementation_pfStandardProposal()

template<class PARTICLE_TYPE , class MYSELF >
template<class BINTYPE >
void mrpt::slam::PF_implementation< PARTICLE_TYPE, MYSELF >::PF_SLAM_implementation_pfStandardProposal ( const CActionCollection actions,
const CSensoryFrame sf,
const CParticleFilter::TParticleFilterOptions PF_options,
const TKLDParams KLD_options 
)
protected

A generic implementation of the PF method "pfStandardProposal" (standard proposal distribution, that is, a simple SIS particle filter), common to both localization and mapping.

  • BINTYPE: TPoseBin or whatever to discretize the sample space for KLD-sampling.

Definition at line 154 of file PF_implementations.h.

◆ PF_SLAM_implementation_replaceByNewParticleSet()

template<class PARTICLE_TYPE, class MYSELF>
virtual void mrpt::slam::PF_implementation< PARTICLE_TYPE, MYSELF >::PF_SLAM_implementation_replaceByNewParticleSet ( typename CParticleFilterData< PARTICLE_TYPE >::CParticleList &  old_particles,
const vector< TPose3D > &  newParticles,
const vector_double newParticlesWeight,
const vector< size_t > &  newParticlesDerivedFromIdx 
) const
inlinevirtual

This is the default algorithm to efficiently replace one old set of samples by another new set.

The method uses pointers to make fast copies the first time each particle is duplicated, then makes real copies for the next ones.

Note that more efficient specializations might exist for specific particle data structs.

Definition at line 175 of file PF_implementations_data.h.

◆ PF_SLAM_implementation_skipRobotMovement()

template<class PARTICLE_TYPE, class MYSELF>
virtual bool mrpt::slam::PF_implementation< PARTICLE_TYPE, MYSELF >::PF_SLAM_implementation_skipRobotMovement ( ) const
inlinevirtual

Make a specialization if needed, eg.

in the first step in SLAM.

Reimplemented in mrpt::slam::CMultiMetricMapPDF.

Definition at line 248 of file PF_implementations_data.h.

◆ PF_SLAM_particlesEvaluator_AuxPFOptimal()

template<class PARTICLE_TYPE , class MYSELF >
template<class BINTYPE >
double mrpt::slam::PF_implementation< PARTICLE_TYPE, MYSELF >::PF_SLAM_particlesEvaluator_AuxPFOptimal ( const CParticleFilter::TParticleFilterOptions PF_options,
const CParticleFilterCapable obj,
size_t  index,
const void *  action,
const void *  observation 
)
staticprotected

Definition at line 336 of file PF_implementations.h.

◆ PF_SLAM_particlesEvaluator_AuxPFStandard()

template<class PARTICLE_TYPE , class MYSELF >
template<class BINTYPE >
double mrpt::slam::PF_implementation< PARTICLE_TYPE, MYSELF >::PF_SLAM_particlesEvaluator_AuxPFStandard ( const CParticleFilter::TParticleFilterOptions PF_options,
const CParticleFilterCapable obj,
size_t  index,
const void *  action,
const void *  observation 
)
staticprotected

Compute w[i]·p(z_t | mu_t^i), with mu_t^i being the mean of the new robot pose.

Compute w[i]·p(z_t | mu_t^i), with mu_t^i being the mean of the new robot pose.

Parameters
actionMUST be a "const CPose3D*"
observationMUST be a "const CSensoryFrame*"

Definition at line 409 of file PF_implementations.h.

Member Data Documentation

◆ m_accumRobotMovement2D

template<class PARTICLE_TYPE, class MYSELF>
CActionRobotMovement2D mrpt::slam::PF_implementation< PARTICLE_TYPE, MYSELF >::m_accumRobotMovement2D
protected

Definition at line 66 of file PF_implementations_data.h.

◆ m_accumRobotMovement2DIsValid

template<class PARTICLE_TYPE, class MYSELF>
bool mrpt::slam::PF_implementation< PARTICLE_TYPE, MYSELF >::m_accumRobotMovement2DIsValid
protected

Definition at line 67 of file PF_implementations_data.h.

◆ m_accumRobotMovement3D

template<class PARTICLE_TYPE, class MYSELF>
CPose3DPDFGaussian mrpt::slam::PF_implementation< PARTICLE_TYPE, MYSELF >::m_accumRobotMovement3D
protected

Definition at line 68 of file PF_implementations_data.h.

◆ m_accumRobotMovement3DIsValid

template<class PARTICLE_TYPE, class MYSELF>
bool mrpt::slam::PF_implementation< PARTICLE_TYPE, MYSELF >::m_accumRobotMovement3DIsValid
protected

Definition at line 69 of file PF_implementations_data.h.

◆ m_movementDrawer

template<class PARTICLE_TYPE, class MYSELF>
CPoseRandomSampler mrpt::slam::PF_implementation< PARTICLE_TYPE, MYSELF >::m_movementDrawer
protected

Used in al PF implementations.

See also
PF_SLAM_implementation_gatherActionsCheckBothActObs

Definition at line 71 of file PF_implementations_data.h.

◆ m_pfAuxiliaryPFOptimal_estimatedProb

template<class PARTICLE_TYPE, class MYSELF>
vector_double mrpt::slam::PF_implementation< PARTICLE_TYPE, MYSELF >::m_pfAuxiliaryPFOptimal_estimatedProb
mutableprotected

Auxiliary variable used in the "pfAuxiliaryPFOptimal" algorithm.

Definition at line 72 of file PF_implementations_data.h.

◆ m_pfAuxiliaryPFOptimal_maxLikDrawnMovement

template<class PARTICLE_TYPE, class MYSELF>
std::vector<TPose3D> mrpt::slam::PF_implementation< PARTICLE_TYPE, MYSELF >::m_pfAuxiliaryPFOptimal_maxLikDrawnMovement
mutableprotected

Auxiliary variable used in the "pfAuxiliaryPFOptimal" algorithm.

Definition at line 75 of file PF_implementations_data.h.

◆ m_pfAuxiliaryPFOptimal_maxLikelihood

template<class PARTICLE_TYPE, class MYSELF>
vector_double mrpt::slam::PF_implementation< PARTICLE_TYPE, MYSELF >::m_pfAuxiliaryPFOptimal_maxLikelihood
mutableprotected

Auxiliary variable used in the "pfAuxiliaryPFOptimal" algorithm.

Definition at line 74 of file PF_implementations_data.h.

◆ m_pfAuxiliaryPFOptimal_maxLikMovementDrawHasBeenUsed

template<class PARTICLE_TYPE, class MYSELF>
std::vector<bool> mrpt::slam::PF_implementation< PARTICLE_TYPE, MYSELF >::m_pfAuxiliaryPFOptimal_maxLikMovementDrawHasBeenUsed
protected

Definition at line 76 of file PF_implementations_data.h.

◆ m_pfAuxiliaryPFStandard_estimatedProb

template<class PARTICLE_TYPE, class MYSELF>
vector_double mrpt::slam::PF_implementation< PARTICLE_TYPE, MYSELF >::m_pfAuxiliaryPFStandard_estimatedProb
mutableprotected

Auxiliary variable used in the "pfAuxiliaryPFStandard" algorithm.

Definition at line 73 of file PF_implementations_data.h.




Page generated by Doxygen 1.8.14 for MRPT 1.1.0 SVN: at lun oct 28 00:54:49 CET 2019 Hosted on:
SourceForge.net Logo