Main MRPT website > C++ reference for MRPT 1.9.9
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 45 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().

Here is the caller graph for this function:

◆ 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 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< mrpt::slam::OptimalProposal >().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ 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.

Here is the call graph for this function:

◆ getOriginalPDFCov2D() [1/2]

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

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

Definition at line 367 of file CPoseRandomSampler.cpp.

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

Referenced by mrpt::maps::CMultiMetricMapPDF::prediction_and_update< mrpt::slam::OptimalProposal >(), and getOriginalPDFCov2D().

Here is the call graph for this function:
Here is the caller graph for this function:

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

References getOriginalPDFCov2D().

Here is the call graph for this function:

◆ 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().

Here is the call graph for this function:
Here is the caller graph for this function:

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

References getOriginalPDFCov3D().

Here is the call graph for this function:

◆ 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.

Here is the call graph for this function:

◆ 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.

Here is the call graph for this function:

◆ 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 mrpt::maps::CMultiMetricMapPDF::prediction_and_update< mrpt::slam::OptimalProposal >(), getOriginalPDFCov2D(), getOriginalPDFCov3D(), getSamplingMean2D(), and getSamplingMean3D().

Here is the caller graph for this function:

◆ operator=() [1/2]

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

◆ operator=() [2/2]

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

Definition at line 77 of file CPoseRandomSampler.cpp.

References clear(), m_fastdraw_gauss_M_2D, m_fastdraw_gauss_M_3D, m_fastdraw_gauss_Z3, m_fastdraw_gauss_Z6, m_pdf2D, and m_pdf3D.

Here is the call graph for this function:

◆ 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::utils::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< mrpt::slam::OptimalProposal >(), and setPosePDF().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ 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().

Here is the call graph for this function:

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

References setPosePDF().

Referenced by setPosePDF().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ 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::utils::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.

Here is the call graph for this function:

◆ 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().

Here is the call graph for this function:

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

References setPosePDF().

Referenced by setPosePDF().

Here is the call graph for this function:
Here is the caller graph for this function:

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 54 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 55 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: ae4571287 Thu Nov 23 00:06:53 2017 +0100 at dom oct 27 23:51:55 CET 2019