Inherited Members
public:
// typedefs
typedef T CParticleDataContent;
typedef CProbabilityParticle<T, STORAGE> CParticleData;
typedef std::deque<CParticleData> CParticleList;
typedef std::function<double(const bayes::CParticleFilter::TParticleFilterOptions&PF_options, const CParticleFilterCapable*obj, size_t index, const void*action, const void*observation)> TParticleProbabilityEvaluator;
// structs
struct TFastDrawAuxVars;
// fields
static const particle_storage_mode PARTICLE_STORAGE = STORAGE;
CParticleList m_particles;
// methods
void clearParticles();
template <class STREAM>
void writeParticlesToStream(STREAM& out) const;
template <class STREAM>
void readParticlesFromStream(STREAM& in);
void getWeights(std::vector<double>& out_logWeights) const;
std::vector<double> getWeights() const;
const CParticleData* getMostLikelyParticle() const;
void prepareFastDrawSample(
const bayes::CParticleFilter::TParticleFilterOptions& PF_options,
TParticleProbabilityEvaluator partEvaluator = defaultEvaluator,
const void* action = nullptr,
const void* observation = nullptr
) const;
size_t fastDrawSample(const bayes::CParticleFilter::TParticleFilterOptions& PF_options) const;
virtual double getW(size_t i) const = 0;
virtual void setW(size_t i, double w) = 0;
virtual size_t particlesCount() const = 0;
void prediction_and_update(const mrpt::obs::CActionCollection* action, const mrpt::obs::CSensoryFrame* observation, const bayes::CParticleFilter::TParticleFilterOptions& PF_options);
virtual void performSubstitution(const std::vector<size_t>& indx) = 0;
virtual double normalizeWeights(double* out_max_log_w = nullptr) = 0;
virtual double ESS() const = 0;
void performResampling(const bayes::CParticleFilter::TParticleFilterOptions& PF_options, size_t out_particle_count = 0);
static double defaultEvaluator(
] const bayes::CParticleFilter::TParticleFilterOptions& PF_options,
] const CParticleFilterCapable* obj,
size_t index,
] const void* action,
] const void* observation
);
static void computeResampling(
CParticleFilter::TParticleResamplingAlgorithm method,
const std::vector<double>& in_logWeights,
std::vector<size_t>& out_indexes,
size_t out_particle_count = 0
);
static void log2linearWeights(
const std::vector<double>& in_logWeights,
std::vector<double>& out_linWeights
);
static std::vector<double> logWeightsToLinear(const std::vector<double>& in_logWeights);
const Derived& derived() const;
Derived& derived();
virtual double getW(size_t i) const;
virtual void setW(size_t i, double w);
virtual size_t particlesCount() const;
virtual double normalizeWeights(double* out_max_log_w = nullptr);
virtual double ESS() const;
virtual void performSubstitution(const std::vector<size_t>& indx);