49 /** This class acts as a common interface to the different interfaces (see CParticleFilter::TParticleFilterAlgorithm) any bayes::CParticleFilterCapable class can implement: it is the invoker of particle filter algorithms.
50 * The particle filter is executed on a probability density function (PDF) described by a CParticleFilterCapable object, passed in the constructor or alternatively through the CParticleFilter::executeOn method.<br>
51 *
52 * For a complete example and further details, see the <a href="http://www.mrpt.org/Particle_Filter_Tutorial" >Particle Filter tutorial</a>.
53 *
54 * The basic SIR algorithm (pfStandardProposal) consists of:
55 * - Execute a prediction with the given "action".
56 * - Update the weights of the particles using the likelihood of the "observation".
57 * - Normalize weights.
58 * - Perform resampling if the ESS is below the threshold options.BETA.
67 /** Defines different types of particle filter algorithms.
68 * The defined SIR implementations are:
69 * - pfStandardProposal: Standard proposal distribution + weights according to likelihood function.
70 * - pfAuxiliaryPFStandard: An auxiliary PF using the standard proposal distribution.
71 * - pfOptimalProposal: Use the optimal proposal distribution (where available!, usually this will perform approximations)
72 * - pfAuxiliaryPFOptimal: Use the optimal proposal and a auxiliary particle filter (see <a href="http://www.mrpt.org/Paper:An_Optimal_Filtering_Algorithm_for_Non-Parametric_Observation_Models_in_Robot_Localization_(ICRA_2008)" >paper</a>).
73 *
74 * See the theoretical discussion in <a href="http://www.mrpt.org/Resampling_Schemes" >resampling schemes</a>.
132 /** In the algorithm "CParticleFilter::pfAuxiliaryPFOptimal" (and in "CParticleFilter::pfAuxiliaryPFStandard" only if pfAuxFilterStandard_FirstStageWeightsMonteCarlo = true) the number of samples for searching the maximum likelihood value and also to estimate the "first stage weights" (see papers!) (default=100)
136 /** An optional step to "smooth" dramatic changes in the observation model to affect the variance of the particle weights, eg weight*=likelihood^powFactor (default=1 = no effects).
149 /** Only for PF_algorithm=pfAuxiliaryPFOptimal: If a given particle has a max_likelihood (from the a-priori estimate) below the maximum from all the samples - max_loglikelihood_dyn_range, then the particle is directly discarded.
150 * This is done to assure that the rejection sampling doesn't get stuck in an infinite loop trying to get an acceptable sample.
155 /** Only for PF_algorithm==pfAuxiliaryPFStandard:
156 * If false, the APF will predict the first stage weights just at the mean of the prior of the next time step.
157 * If true, these weights will be estimated as described in the papers for the "pfAuxiliaryPFOptimal" method, i.e. through a monte carlo simulation.
158 * In that case, "pfAuxFilterOptimal_MaximumSearchSamples" is the number of MC samples used.
162boolverbose; //!< Enable extra messages for each PF iteration (Default=false)
163
164 /** (Default=false) In the algorithm "CParticleFilter::pfAuxiliaryPFOptimal", if set to true, do not perform rejection sampling, but just the most-likely (ML) particle found in the preliminary weight-determination stage.
186 /** Executes a complete prediction + update step of the selected particle filtering algorithm.
187 * The member CParticleFilter::m_options must be set before calling this to settle the algorithm parameters.
188 *
189 * \param obj The object representing the probability distribution function (PDF) which apply the particle filter algorithm to.
190 * \param action A pointer to an action in the form of a CActionCollection, or NULL if there is no action.
191 * \param observation A pointer to observations in the form of a CSensoryFrame, or NULL if there is no observation.
192 * \param stats An output structure for gathering statistics of the particle filter execution, or set to NULL if you do not need it (see CParticleFilter::TParticleFilterStats).