32#ifndef __MIXTURE_PARTICLE_FILTER__
33#define __MIXTURE_PARTICLE_FILTER__
36#include "../pdf/conditionalpdf.h"
37#include "../pdf/mcpdf.h"
38#include "../pdf/mixture.h"
42#define DEFAULT_RS MULTINOMIAL_RS
43#define MULTINOMIAL_RS 0
61#define SYSTEMATIC_RS 1
82#define STRATIFIED_RS 2
114#define MINIMUM_VARIANCE_RS 4
179 typename vector<WeightedSample<StateVar> >::iterator
_os_it;
181 typename vector<WeightedSample<StateVar> >::iterator
_ns_it;
320 int resampleperiod = 0,
321 double resamplethreshold = 0,
322 int resamplescheme = DEFAULT_RS,
323 int maintainMixturePeriod = 1 );
341 Mixture<StateVar> * post,
343 int resampleperiod = 0,
344 double resamplethreshold = 0,
345 int resamplescheme = DEFAULT_RS,
346 int maintainMixturePeriod = 1 );
356 virtual void Reset(Mixture<StateVar> * prior);
372 virtual Mixture<StateVar> *
PostGet();
375#include "mixtureParticleFilter.cpp"
Abstract Class representing conditional Pdfs P(x | ...)
Abstract class representing an interface for Bayesian Filters.
Virtual Class representing all Mixture particle filters.
virtual bool Resample()
Actual Resampling happens here;.
ConditionalPdf< StateVar, StateVar > * _proposal
Pointer to the Proposal Density.
MixtureParticleFilter(Mixture< StateVar > *prior, ConditionalPdf< StateVar, StateVar > *proposal, int resampleperiod=0, double resamplethreshold=0, int resamplescheme=DEFAULT_RS, int maintainMixturePeriod=1)
Constructor.
vector< vector< WeightedSample< StateVar > > > _old_samplesVec
While updating store list of old samples.
MixtureParticleFilter(Mixture< StateVar > *prior, Mixture< StateVar > *post, ConditionalPdf< StateVar, StateVar > *proposal, int resampleperiod=0, double resamplethreshold=0, int resamplescheme=DEFAULT_RS, int maintainMixturePeriod=1)
Constructor.
bool _dynamicResampling
Dynamic resampling or fixed period resampling?
double _resampleThreshold
Threshold used when dynamic resampling.
virtual bool UpdateInternal(SystemModel< StateVar > *const sysmodel, const StateVar &u, MeasurementModel< MeasVar, StateVar > *const measmodel, const MeasVar &z, const StateVar &s)
Actual implementation of Update, varies along filters.
vector< WeightedSample< StateVar > >::iterator _ns_it
Iterator for new list of samples.
virtual Mixture< StateVar > * PostGet()
Get Posterior density.
virtual bool MaintainMixture()
Actual mixture maintainance happens here;.
virtual bool ResampleOne(int component)
Actual Resampling for one component;.
int _resamplePeriod
Number of timestep between resampling from the Posterior Pdf.
virtual bool ProposalStepInternal(SystemModel< StateVar > *const sysmodel, const StateVar &u, MeasurementModel< MeasVar, StateVar > *const measmodel, const MeasVar &z, const StateVar &s)
Proposal step.
virtual ~MixtureParticleFilter()
Destructor.
virtual void ProposalSet(ConditionalPdf< StateVar, StateVar > *const cpdf)
Set the proposal density.
virtual bool MaintainMixtureStep()
Maintain Mixture if wanted.
int _maintainMixturePeriod
Number of timestep between mixture maintainance of the Posterior.
virtual bool DynamicResampleStep()
Resample if necessary.
virtual bool DynamicResampleStepOne(int component)
Resampling for one component.
virtual bool UpdateWeightsInternalOne(int component, SystemModel< StateVar > *const sysmodel, const StateVar &u, MeasurementModel< MeasVar, StateVar > *const measmodel, const MeasVar &z, const StateVar &s)
Update Weights for one component.
ConditionalPdf< StateVar, StateVar > * ProposalGet()
Get a pointer to the proposal density.
vector< vector< Sample< StateVar > > > _new_samples_unweightedVec
While resampling.
virtual bool ProposalStepInternalOne(int component, SystemModel< StateVar > *const sysmodel, const StateVar &u, MeasurementModel< MeasVar, StateVar > *const measmodel, const MeasVar &z, const StateVar &s)
Proposal step for one component.
vector< Probability > _sumWeights
Vector containing the sum of weights during update step.
virtual bool UpdateWeightsInternal(SystemModel< StateVar > *const sysmodel, const StateVar &u, MeasurementModel< MeasVar, StateVar > *const measmodel, const MeasVar &z, const StateVar &s)
Update Weights.
virtual bool StaticResampleStep()
Resample if wanted.
bool _proposal_depends_on_meas
Proposal depends on last measurement?
int _resampleScheme
Which resample algorithm (see top of particle.h for #defines)
vector< WeightedSample< StateVar > >::iterator _os_it
Iterator for old list of samples.
virtual void Reset(Mixture< StateVar > *prior)
Reset Filter.
vector< vector< WeightedSample< StateVar > > > _new_samplesVec
While updating store list of new samples.
MixtureParticleFilter(const MixtureParticleFilter< StateVar, MeasVar > &filt)
Copy Constructor.
WeightedSample< StateVar > _sample
While updating use sample<StateVar>
bool _created_post
created own post
vector< Probability > _newMixtureWeights
Vector containing the new mixture weights during update step.