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.
Definition at line 35 of file CPoseRandomSampler.h.
#include <mrpt/poses/CPoseRandomSampler.h>
Public Member Functions | |
CPoseRandomSampler () | |
Default constructor. | |
~CPoseRandomSampler () | |
Destructor. | |
void | setPosePDF (const CPosePDF *pdf) |
This method must be called to select the PDF from which to draw samples. | |
void | setPosePDF (const CPosePDFPtr &pdf) |
This method must be called to select the PDF from which to draw samples. | |
void | setPosePDF (const CPosePDF &pdf) |
This method must be called to select the PDF from which to draw samples. | |
void | setPosePDF (const CPose3DPDF *pdf) |
This method must be called to select the PDF from which to draw samples. | |
void | setPosePDF (const CPose3DPDFPtr &pdf) |
This method must be called to select the PDF from which to draw samples. | |
void | setPosePDF (const CPose3DPDF &pdf) |
This method must be called to select the PDF from which to draw samples. | |
CPose2D & | drawSample (CPose2D &p) const |
Generate a new sample from the selected PDF. | |
CPose3D & | drawSample (CPose3D &p) const |
Generate a new sample from the selected PDF. | |
bool | isPrepared () const |
Return true if samples can be generated, which only requires a previous call to setPosePDF. | |
CPose2D & | 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. | |
CPose3D & | 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. | |
void | getOriginalPDFCov2D (mrpt::math::CMatrixDouble33 &cov3x3) const |
Retrieves the 3x3 covariance of the original PDF in ![]() | |
void | getOriginalPDFCov2D (mrpt::math::CMatrixDouble &cov3x3) const |
Retrieves the 3x3 covariance of the original PDF in ![]() | |
void | getOriginalPDFCov3D (mrpt::math::CMatrixDouble66 &cov6x6) const |
Retrieves the 6x6 covariance of the original PDF in ![]() | |
void | getOriginalPDFCov3D (mrpt::math::CMatrixDouble &cov6x6) const |
Retrieves the 6x6 covariance of the original PDF in ![]() | |
Protected Member Functions | |
void | clear () |
Clear internal pdf. | |
void | do_sample_2D (CPose2D &p) const |
Used internally: sample from m_pdf2D. | |
void | do_sample_3D (CPose3D &p) const |
Used internally: sample from m_pdf3D. | |
Protected Attributes | |
CPosePDF * | m_pdf2D |
A local copy of the PDF. | |
CPose3DPDF * | m_pdf3D |
A local copy of the PDF. | |
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 |
mrpt::poses::CPoseRandomSampler::CPoseRandomSampler | ( | ) |
Default constructor.
mrpt::poses::CPoseRandomSampler::~CPoseRandomSampler | ( | ) |
Destructor.
|
protected |
Clear internal pdf.
|
protected |
Used internally: sample from m_pdf2D.
|
protected |
Used internally: sample from m_pdf3D.
Generate a new sample from the selected PDF.
Generate a new sample from the selected PDF.
|
inline |
Retrieves the 3x3 covariance of the original PDF in
Definition at line 114 of file CPoseRandomSampler.h.
void mrpt::poses::CPoseRandomSampler::getOriginalPDFCov2D | ( | mrpt::math::CMatrixDouble33 & | cov3x3 | ) | const |
Retrieves the 3x3 covariance of the original PDF in
|
inline |
Retrieves the 6x6 covariance of the original PDF in
Definition at line 124 of file CPoseRandomSampler.h.
void mrpt::poses::CPoseRandomSampler::getOriginalPDFCov3D | ( | mrpt::math::CMatrixDouble66 & | cov6x6 | ) | const |
Retrieves the 6x6 covariance of the original PDF in
If the object has been loaded with setPosePDF this method returns the 2D pose mean samples will be drawn around.
If the object has been loaded with setPosePDF this method returns the 3D pose mean samples will be drawn around.
bool mrpt::poses::CPoseRandomSampler::isPrepared | ( | ) | const |
Return true if samples can be generated, which only requires a previous call to setPosePDF.
|
inline |
This method must be called to select the PDF from which to draw samples.
Definition at line 87 of file CPoseRandomSampler.h.
References setPosePDF().
Referenced by setPosePDF().
void mrpt::poses::CPoseRandomSampler::setPosePDF | ( | const CPose3DPDF * | ) |
This method must be called to select the PDF from which to draw samples.
void mrpt::poses::CPoseRandomSampler::setPosePDF | ( | const CPose3DPDFPtr & | ) |
This method must be called to select the PDF from which to draw samples.
|
inline |
This method must be called to select the PDF from which to draw samples.
Definition at line 72 of file CPoseRandomSampler.h.
References setPosePDF().
Referenced by setPosePDF().
void mrpt::poses::CPoseRandomSampler::setPosePDF | ( | const CPosePDF * | ) |
This method must be called to select the PDF from which to draw samples.
void mrpt::poses::CPoseRandomSampler::setPosePDF | ( | const CPosePDFPtr & | ) |
This method must be called to select the PDF from which to draw samples.
|
protected |
Definition at line 44 of file CPoseRandomSampler.h.
|
protected |
Definition at line 45 of file CPoseRandomSampler.h.
|
protected |
Definition at line 42 of file CPoseRandomSampler.h.
|
protected |
Definition at line 43 of file CPoseRandomSampler.h.
|
protected |
A local copy of the PDF.
Definition at line 39 of file CPoseRandomSampler.h.
|
protected |
A local copy of the PDF.
Definition at line 40 of file CPoseRandomSampler.h.
Page generated by Doxygen 1.9.6 for MRPT 1.4.0 SVN: at Wed Mar 22 04:35:51 UTC 2023 |