MRPT  1.9.9
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 43 of file CPoseRandomSampler.h.

#include <mrpt/poses/CPoseRandomSampler.h>

Public Member Functions

 CPoseRandomSampler ()
 Default constructor. More...
 
 CPoseRandomSampler (const CPoseRandomSampler &o)
 
CPoseRandomSampleroperator= (const CPoseRandomSampler &o)
 
 CPoseRandomSampler (CPoseRandomSampler &&o)
 
CPoseRandomSampleroperator= (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 CPosePDF::Ptr &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 CPose3DPDF::Ptr &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

std::unique_ptr< const CPosePDFm_pdf2D
 A local copy of the PDF. More...
 
std::unique_ptr< const 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/3]

CPoseRandomSampler::CPoseRandomSampler ( )

Default constructor.

Definition at line 30 of file CPoseRandomSampler.cpp.

◆ CPoseRandomSampler() [2/3]

CPoseRandomSampler::CPoseRandomSampler ( const CPoseRandomSampler o)

◆ CPoseRandomSampler() [3/3]

CPoseRandomSampler::CPoseRandomSampler ( CPoseRandomSampler &&  o)

Member Function Documentation

◆ clear()

void CPoseRandomSampler::clear ( )
protected

Clear internal pdf.

Definition at line 101 of file CPoseRandomSampler.cpp.

References m_pdf2D, and m_pdf3D.

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

◆ do_sample_2D()

◆ do_sample_3D()

◆ 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 208 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 234 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 134 of file CPoseRandomSampler.h.

References getOriginalPDFCov2D().

◆ getOriginalPDFCov3D() [1/2]

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

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

Definition at line 391 of file CPoseRandomSampler.cpp.

References ASSERT_, mrpt::poses::CPose3DPDFGaussian::copyFrom(), mrpt::poses::CPose3DPDFGaussian::cov, isPrepared(), m_pdf2D, m_pdf3D, MRPT_END, and MRPT_START.

Referenced by getOriginalPDFCov3D().

◆ 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 147 of file CPoseRandomSampler.h.

References getOriginalPDFCov3D().

◆ 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 414 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 431 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 363 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=() [1/2]

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

◆ operator=() [2/2]

◆ 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 110 of file CPoseRandomSampler.cpp.

References clear(), mrpt::rtti::CObject::clone(), mrpt::poses::CPosePDFGaussian::cov, mrpt::math::cov(), 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 CPosePDF::Ptr pdf)

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

See also
drawSample

Definition at line 200 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 87 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 154 of file CPoseRandomSampler.cpp.

References clear(), mrpt::rtti::CObject::clone(), mrpt::poses::CPose3DPDFGaussian::cov, mrpt::math::cov(), 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 CPose3DPDF::Ptr pdf)

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

See also
drawSample

Definition at line 195 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 101 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 52 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 53 of file CPoseRandomSampler.h.

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

◆ m_pdf2D

std::unique_ptr<const CPosePDF> mrpt::poses::CPoseRandomSampler::m_pdf2D
protected

◆ m_pdf3D

std::unique_ptr<const CPose3DPDF> mrpt::poses::CPoseRandomSampler::m_pdf3D
protected



Page generated by Doxygen 1.8.14 for MRPT 1.9.9 Git: 7d5e6d718 Fri Aug 24 01:51:28 2018 +0200 at lun nov 2 08:35:50 CET 2020