class mrpt::poses::CPosePDFParticles

Declares a class that represents a Probability Density Function (PDF) over a 2D pose (x,y,phi), using a set of weighted samples.

This class is also the base for the implementation of Monte-Carlo Localization (MCL), in mrpt::slam::CMonteCarloLocalization2D.

See the application “app/pf-localization” for an example of usage.

See also:

CPose2D, CPosePDF, CPoseGaussianPDF, CParticleFilterCapable

#include <mrpt/poses/CPosePDFParticles.h>

class CPosePDFParticles:
    public mrpt::poses::CPosePDF,
    public mrpt::bayes::CParticleFilterData,
    public mrpt::bayes::CParticleFilterDataImpl,
    public mrpt::Stringifyable
{
public:
    //
fields

    static const particle_storage_mode PARTICLE_STORAGE = STORAGE;

    // construction

    CPosePDFParticles(size_t M = 1);

    //
methods

    void getMean(CPose2D& mean_pose) const;
};

// direct descendants

class CMonteCarloLocalization2D;

Inherited Members

public:
    // typedefs

    typedef CProbabilityDensityFunction<TDATA, STATE_LEN> self_t;

    // structs

    struct TFastDrawAuxVars;

    //
methods

    virtual void copyFrom(const CPosePDF& o) = 0;
    virtual void bayesianFusion(const CPosePDF& p1, const CPosePDF& p2, const double minMahalanobisDistToDrop = 0) = 0;
    virtual void inverse(CPosePDF& o) const = 0;
    virtual void changeCoordinatesReference(const CPose3D& newReferenceBase) = 0;
    virtual double getW(size_t i) const = 0;
    virtual void setW(size_t i, double w) = 0;
    virtual size_t particlesCount() const = 0;
    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;

Construction

CPosePDFParticles(size_t M = 1)

Constructor.

Parameters:

M

The number of m_particles.