Main MRPT website > C++ reference for MRPT 1.5.8
List of all members | Public Member Functions | Protected Member Functions | Protected Attributes
mrpt::poses::CPoseRandomSampler Class Reference

Detailed Description

An efficient generator of random samples drawn from a given 2D (CPosePDF) or 3D (CPose3DPDF) pose probability density function (pdf).

This class keeps an internal state which speeds up the sequential generation of samples. It can manage any kind of pose PDF.

Use with CPoseRandomSampler::setPosePDF, then CPoseRandomSampler::drawSample to draw values.

Notice that you can pass a 2D or 3D pose PDF, then ask for a 2D or 3D sample. This class always returns the kind of sample you ask it for, but will skip missing terms or fill out with zeroes as required. Specifically, when sampling 3D poses from a 2D pose pdf, this class will be smart enought to draw only the 3 required dimensions, avoiding a waste of time with the other 3 missing components.

See also
CPosePDF, CPose3DPDF

Definition at line 35 of file CPoseRandomSampler.h.

#include <mrpt/poses/CPoseRandomSampler.h>

Public Member Functions

 CPoseRandomSampler ()
 Ctor. More...
 
 ~CPoseRandomSampler ()
 Dtor. More...
 
 CPoseRandomSampler (const CPoseRandomSampler &o)
 
CPoseRandomSampleroperator= (const CPoseRandomSampler &o)
 
void setPosePDF (const CPosePDF *pdf)
 This method must be called to select the PDF from which to draw samples. More...
 
void setPosePDF (const CPosePDFPtr &pdf)
 This method must be called to select the PDF from which to draw samples. More...
 
void setPosePDF (const CPosePDF &pdf)
 This method must be called to select the PDF from which to draw samples. More...
 
void setPosePDF (const CPose3DPDF *pdf)
 This method must be called to select the PDF from which to draw samples. More...
 
void setPosePDF (const CPose3DPDFPtr &pdf)
 This method must be called to select the PDF from which to draw samples. More...
 
void setPosePDF (const CPose3DPDF &pdf)
 This method must be called to select the PDF from which to draw samples. More...
 
CPose2DdrawSample (CPose2D &p) const
 Generate a new sample from the selected PDF. More...
 
CPose3DdrawSample (CPose3D &p) const
 Generate a new sample from the selected PDF. More...
 
bool isPrepared () const
 Return true if samples can be generated, which only requires a previous call to setPosePDF. More...
 
CPose2DgetSamplingMean2D (CPose2D &out_mean) const
 If the object has been loaded with setPosePDF this method returns the 2D pose mean samples will be drawn around. More...
 
CPose3DgetSamplingMean3D (CPose3D &out_mean) const
 If the object has been loaded with setPosePDF this method returns the 3D pose mean samples will be drawn around. More...
 
void getOriginalPDFCov2D (mrpt::math::CMatrixDouble33 &cov3x3) const
 Retrieves the 3x3 covariance of the original PDF in $ [ x ~ y ~ \phi ] $. More...
 
void getOriginalPDFCov2D (mrpt::math::CMatrixDouble &cov3x3) const
 Retrieves the 3x3 covariance of the original PDF in $ [ x ~ y ~ \phi ] $. More...
 
void getOriginalPDFCov3D (mrpt::math::CMatrixDouble66 &cov6x6) const
 Retrieves the 6x6 covariance of the original PDF in $ [ x ~ y ~ z ~ yaw ~ pitch ~ roll ] $. More...
 
void getOriginalPDFCov3D (mrpt::math::CMatrixDouble &cov6x6) const
 Retrieves the 6x6 covariance of the original PDF in $ [ x ~ y ~ z ~ yaw ~ pitch ~ roll ] $. More...
 

Protected Member Functions

void clear ()
 Clear internal pdf. More...
 
void do_sample_2D (CPose2D &p) const
 Used internally: sample from m_pdf2D. More...
 
void do_sample_3D (CPose3D &p) const
 Used internally: sample from m_pdf3D. More...
 

Protected Attributes

CPosePDFm_pdf2D
 A local copy of the PDF. More...
 
CPose3DPDFm_pdf3D
 A local copy of the PDF. More...
 
mrpt::math::CMatrixDouble33 m_fastdraw_gauss_Z3
 
mrpt::math::CMatrixDouble66 m_fastdraw_gauss_Z6
 
CPose2D m_fastdraw_gauss_M_2D
 
CPose3D m_fastdraw_gauss_M_3D
 

Constructor & Destructor Documentation

◆ CPoseRandomSampler() [1/2]

CPoseRandomSampler::CPoseRandomSampler ( )

Ctor.

Definition at line 31 of file CPoseRandomSampler.cpp.

◆ ~CPoseRandomSampler()

CPoseRandomSampler::~CPoseRandomSampler ( )

Dtor.

Definition at line 44 of file CPoseRandomSampler.cpp.

References clear().

◆ CPoseRandomSampler() [2/2]

CPoseRandomSampler::CPoseRandomSampler ( const CPoseRandomSampler o)

Member Function Documentation

◆ clear()

void CPoseRandomSampler::clear ( )
protected

Clear internal pdf.

Definition at line 120 of file CPoseRandomSampler.cpp.

References mrpt::mrpt::utils::delete_safe(), m_pdf2D, and m_pdf3D.

Referenced by operator=(), setPosePDF(), and ~CPoseRandomSampler().

◆ do_sample_2D()

void CPoseRandomSampler::do_sample_2D ( CPose2D p) const
protected

◆ do_sample_3D()

void CPoseRandomSampler::do_sample_3D ( CPose3D p) const
protected

◆ drawSample() [1/2]

CPose2D & CPoseRandomSampler::drawSample ( CPose2D p) const

Generate a new sample from the selected PDF.

Returns
A reference to the same object passed as argument.
See also
setPosePDF

Definition at line 225 of file CPoseRandomSampler.cpp.

References do_sample_2D(), do_sample_3D(), m_pdf2D, m_pdf3D, MRPT_END, MRPT_START, and THROW_EXCEPTION.

Referenced by mrpt::maps::CMultiMetricMapPDF::prediction_and_update_pfOptimalProposal().

◆ drawSample() [2/2]

CPose3D & CPoseRandomSampler::drawSample ( CPose3D p) const

Generate a new sample from the selected PDF.

Returns
A reference to the same object passed as argument.
See also
setPosePDF

Definition at line 250 of file CPoseRandomSampler.cpp.

References do_sample_2D(), do_sample_3D(), m_pdf2D, m_pdf3D, MRPT_END, MRPT_START, and THROW_EXCEPTION.

◆ getOriginalPDFCov2D() [1/2]

void CPoseRandomSampler::getOriginalPDFCov2D ( mrpt::math::CMatrixDouble33 cov3x3) const

◆ getOriginalPDFCov2D() [2/2]

void mrpt::poses::CPoseRandomSampler::getOriginalPDFCov2D ( mrpt::math::CMatrixDouble cov3x3) const
inline

Retrieves the 3x3 covariance of the original PDF in $ [ x ~ y ~ \phi ] $.

Definition at line 118 of file CPoseRandomSampler.h.

◆ getOriginalPDFCov3D() [1/2]

void CPoseRandomSampler::getOriginalPDFCov3D ( mrpt::math::CMatrixDouble66 cov6x6) const

◆ getOriginalPDFCov3D() [2/2]

void mrpt::poses::CPoseRandomSampler::getOriginalPDFCov3D ( mrpt::math::CMatrixDouble cov6x6) const
inline

Retrieves the 6x6 covariance of the original PDF in $ [ x ~ y ~ z ~ yaw ~ pitch ~ roll ] $.

Definition at line 128 of file CPoseRandomSampler.h.

◆ getSamplingMean2D()

CPose2D & CPoseRandomSampler::getSamplingMean2D ( CPose2D out_mean) const

If the object has been loaded with setPosePDF this method returns the 2D pose mean samples will be drawn around.

Returns
A reference to the argument

Definition at line 434 of file CPoseRandomSampler.cpp.

References ASSERT_, isPrepared(), m_fastdraw_gauss_M_2D, m_fastdraw_gauss_M_3D, m_pdf2D, MRPT_END, and MRPT_START.

◆ getSamplingMean3D()

CPose3D & CPoseRandomSampler::getSamplingMean3D ( CPose3D out_mean) const

If the object has been loaded with setPosePDF this method returns the 3D pose mean samples will be drawn around.

Returns
A reference to the argument

Definition at line 450 of file CPoseRandomSampler.cpp.

References ASSERT_, isPrepared(), m_fastdraw_gauss_M_2D, m_fastdraw_gauss_M_3D, m_pdf3D, MRPT_END, and MRPT_START.

◆ isPrepared()

bool CPoseRandomSampler::isPrepared ( ) const

Return true if samples can be generated, which only requires a previous call to setPosePDF.

Definition at line 379 of file CPoseRandomSampler.cpp.

References m_pdf2D, and m_pdf3D.

Referenced by getOriginalPDFCov2D(), getOriginalPDFCov3D(), getSamplingMean2D(), getSamplingMean3D(), and mrpt::maps::CMultiMetricMapPDF::prediction_and_update_pfOptimalProposal().

◆ operator=()

CPoseRandomSampler & CPoseRandomSampler::operator= ( const CPoseRandomSampler o)

◆ setPosePDF() [1/6]

void CPoseRandomSampler::setPosePDF ( const CPosePDF pdf)

This method must be called to select the PDF from which to draw samples.

See also
drawSample

Computes the eigenvalues/eigenvector decomposition of this matrix, so that: M = Z · D · ZT, where columns in Z are the eigenvectors and the diagonal matrix D contains the eigenvalues as diagonal elements, sorted in ascending order.

Definition at line 129 of file CPoseRandomSampler.cpp.

References mrpt::utils::TRuntimeClassId::className, clear(), mrpt::poses::CPosePDFGaussian::cov, mrpt::math::cov(), mrpt::utils::CObject::duplicate(), mrpt::poses::CPosePDF::GetRuntimeClass(), IS_CLASS, m_fastdraw_gauss_M_2D, m_fastdraw_gauss_Z3, m_pdf2D, mrpt::poses::CPosePDFGaussian::mean, MRPT_END, MRPT_START, and THROW_EXCEPTION_FMT.

Referenced by mrpt::maps::CMultiMetricMapPDF::prediction_and_update_pfOptimalProposal(), and setPosePDF().

◆ setPosePDF() [2/6]

void CPoseRandomSampler::setPosePDF ( const CPosePDFPtr &  pdf)

This method must be called to select the PDF from which to draw samples.

See also
drawSample

Definition at line 218 of file CPoseRandomSampler.cpp.

References setPosePDF().

◆ setPosePDF() [3/6]

void mrpt::poses::CPoseRandomSampler::setPosePDF ( const CPosePDF pdf)
inline

This method must be called to select the PDF from which to draw samples.

See also
drawSample

Definition at line 76 of file CPoseRandomSampler.h.

References setPosePDF().

Referenced by setPosePDF().

◆ setPosePDF() [4/6]

void CPoseRandomSampler::setPosePDF ( const CPose3DPDF pdf)

This method must be called to select the PDF from which to draw samples.

See also
drawSample

Computes the eigenvalues/eigenvector decomposition of this matrix, so that: M = Z · D · ZT, where columns in Z are the eigenvectors and the diagonal matrix D contains the eigenvalues as diagonal elements, sorted in ascending order.

Definition at line 174 of file CPoseRandomSampler.cpp.

References mrpt::utils::TRuntimeClassId::className, clear(), mrpt::poses::CPose3DPDFGaussian::cov, mrpt::math::cov(), mrpt::utils::CObject::duplicate(), mrpt::poses::CPose3DPDF::GetRuntimeClass(), IS_CLASS, m_fastdraw_gauss_M_3D, m_fastdraw_gauss_Z6, m_pdf3D, mrpt::poses::CPose3DPDFGaussian::mean, MRPT_END, MRPT_START, and THROW_EXCEPTION_FMT.

◆ setPosePDF() [5/6]

void CPoseRandomSampler::setPosePDF ( const CPose3DPDFPtr &  pdf)

This method must be called to select the PDF from which to draw samples.

See also
drawSample

Definition at line 214 of file CPoseRandomSampler.cpp.

References setPosePDF().

◆ setPosePDF() [6/6]

void mrpt::poses::CPoseRandomSampler::setPosePDF ( const CPose3DPDF pdf)
inline

This method must be called to select the PDF from which to draw samples.

See also
drawSample

Definition at line 91 of file CPoseRandomSampler.h.

References setPosePDF().

Referenced by setPosePDF().

Member Data Documentation

◆ m_fastdraw_gauss_M_2D

CPose2D mrpt::poses::CPoseRandomSampler::m_fastdraw_gauss_M_2D
protected

◆ m_fastdraw_gauss_M_3D

CPose3D mrpt::poses::CPoseRandomSampler::m_fastdraw_gauss_M_3D
protected

◆ m_fastdraw_gauss_Z3

mrpt::math::CMatrixDouble33 mrpt::poses::CPoseRandomSampler::m_fastdraw_gauss_Z3
protected

Definition at line 42 of file CPoseRandomSampler.h.

Referenced by CPoseRandomSampler(), do_sample_2D(), operator=(), and setPosePDF().

◆ m_fastdraw_gauss_Z6

mrpt::math::CMatrixDouble66 mrpt::poses::CPoseRandomSampler::m_fastdraw_gauss_Z6
protected

Definition at line 43 of file CPoseRandomSampler.h.

Referenced by CPoseRandomSampler(), do_sample_3D(), operator=(), and setPosePDF().

◆ m_pdf2D

CPosePDF* mrpt::poses::CPoseRandomSampler::m_pdf2D
protected

◆ m_pdf3D

CPose3DPDF* mrpt::poses::CPoseRandomSampler::m_pdf3D
protected



Page generated by Doxygen 1.8.14 for MRPT 1.5.8 Git: f67d0f871 Wed Sep 25 18:32:17 2019 +0200 at lun oct 28 01:58:29 CET 2019