MRPT
2.0.1
|
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 enough to draw only the 3 required dimensions, avoiding a waste of time with the other 3 missing components.
Definition at line 42 of file CPoseRandomSampler.h.
#include <mrpt/poses/CPoseRandomSampler.h>
Public Member Functions | |
CPoseRandomSampler () | |
Default constructor. More... | |
CPoseRandomSampler (const CPoseRandomSampler &o) | |
CPoseRandomSampler & | operator= (const CPoseRandomSampler &o) |
CPoseRandomSampler (CPoseRandomSampler &&o) | |
CPoseRandomSampler & | operator= (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 CPose3DPDF &pdf) |
This method must be called to select the PDF from which to draw samples. More... | |
CPose2D & | drawSample (CPose2D &p) const |
Generate a new sample from the selected PDF. More... | |
CPose3D & | drawSample (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... | |
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. More... | |
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. More... | |
void | getOriginalPDFCov2D (mrpt::math::CMatrixDouble33 &cov3x3) const |
Retrieves the 3x3 covariance of the original PDF in . More... | |
void | getOriginalPDFCov2D (mrpt::math::CMatrixDouble &cov3x3) const |
Retrieves the 3x3 covariance of the original PDF in . More... | |
void | getOriginalPDFCov3D (mrpt::math::CMatrixDouble66 &cov6x6) const |
Retrieves the 6x6 covariance of the original PDF in . More... | |
void | getOriginalPDFCov3D (mrpt::math::CMatrixDouble &cov6x6) const |
Retrieves the 6x6 covariance of the original PDF in . 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 | |
CPosePDF::Ptr | m_pdf2D |
A local copy of the PDF. More... | |
CPose3DPDF::Ptr | m_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 |
|
default |
Default constructor.
CPoseRandomSampler::CPoseRandomSampler | ( | const CPoseRandomSampler & | o | ) |
Definition at line 31 of file CPoseRandomSampler.cpp.
CPoseRandomSampler::CPoseRandomSampler | ( | CPoseRandomSampler && | o | ) |
Definition at line 50 of file CPoseRandomSampler.cpp.
References m_fastdraw_gauss_M_2D, m_fastdraw_gauss_M_3D, m_fastdraw_gauss_Z3, m_fastdraw_gauss_Z6, m_pdf2D, and m_pdf3D.
|
protected |
Clear internal pdf.
Definition at line 92 of file CPoseRandomSampler.cpp.
References m_pdf2D, and m_pdf3D.
Referenced by operator=(), and setPosePDF().
|
protected |
Used internally: sample from m_pdf2D.
Definition at line 233 of file CPoseRandomSampler.cpp.
References ASSERT_, mrpt::random::CRandomGenerator::drawGaussian1D_normalized(), mrpt::poses::CPosePDFParticles::drawSingleSample(), mrpt::random::getRandomGenerator(), IS_CLASS, m_fastdraw_gauss_M_2D, m_fastdraw_gauss_Z3, m_pdf2D, MRPT_END, MRPT_START, mrpt::poses::CPose2D::normalizePhi(), mrpt::poses::CPose2D::phi(), mrpt::math::MatrixVectorBase< Scalar, Derived >::setZero(), THROW_EXCEPTION, THROW_EXCEPTION_FMT, mrpt::poses::CPoseOrPoint< DERIVEDCLASS, DIM >::x(), and mrpt::poses::CPoseOrPoint< DERIVEDCLASS, DIM >::y().
Referenced by drawSample().
|
protected |
Used internally: sample from m_pdf3D.
Definition at line 283 of file CPoseRandomSampler.cpp.
References ASSERT_, mrpt::random::CRandomGenerator::drawGaussian1D_normalized(), mrpt::poses::CPose3DPDFParticles::drawSingleSample(), mrpt::random::getRandomGenerator(), IS_CLASS, m_fastdraw_gauss_M_3D, m_fastdraw_gauss_Z6, m_pdf3D, MRPT_END, MRPT_START, mrpt::poses::CPose3D::pitch(), mrpt::poses::CPose3D::roll(), mrpt::poses::CPose3D::setFromValues(), mrpt::math::MatrixVectorBase< Scalar, Derived >::setZero(), THROW_EXCEPTION, THROW_EXCEPTION_FMT, mrpt::poses::CPoseOrPoint< DERIVEDCLASS, DIM >::x(), mrpt::poses::CPoseOrPoint< DERIVEDCLASS, DIM >::y(), and mrpt::poses::CPose3D::yaw().
Referenced by drawSample().
Generate a new sample from the selected PDF.
Definition at line 183 of file CPoseRandomSampler.cpp.
References do_sample_2D(), do_sample_3D(), m_pdf2D, m_pdf3D, MRPT_END, MRPT_START, mrpt::poses::CPose2D::phi(), THROW_EXCEPTION, mrpt::poses::CPoseOrPoint< DERIVEDCLASS, DIM >::x(), mrpt::poses::CPoseOrPoint< DERIVEDCLASS, DIM >::y(), and mrpt::poses::CPose3D::yaw().
Referenced by mrpt::maps::CMultiMetricMapPDF::prediction_and_update_pfOptimalProposal().
Generate a new sample from the selected PDF.
Definition at line 209 of file CPoseRandomSampler.cpp.
References do_sample_2D(), do_sample_3D(), m_pdf2D, m_pdf3D, MRPT_END, MRPT_START, mrpt::poses::CPose2D::phi(), mrpt::poses::CPose3D::setFromValues(), THROW_EXCEPTION, mrpt::poses::CPoseOrPoint< DERIVEDCLASS, DIM >::x(), and mrpt::poses::CPoseOrPoint< DERIVEDCLASS, DIM >::y().
void CPoseRandomSampler::getOriginalPDFCov2D | ( | mrpt::math::CMatrixDouble33 & | cov3x3 | ) | const |
Retrieves the 3x3 covariance of the original PDF in .
Definition at line 340 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 getOriginalPDFCov2D(), and mrpt::maps::CMultiMetricMapPDF::prediction_and_update_pfOptimalProposal().
void CPoseRandomSampler::getOriginalPDFCov2D | ( | mrpt::math::CMatrixDouble & | cov3x3 | ) | const |
Retrieves the 3x3 covariance of the original PDF in .
Definition at line 418 of file CPoseRandomSampler.cpp.
References getOriginalPDFCov2D().
void CPoseRandomSampler::getOriginalPDFCov3D | ( | mrpt::math::CMatrixDouble66 & | cov6x6 | ) | const |
Retrieves the 6x6 covariance of the original PDF in .
Definition at line 364 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().
void CPoseRandomSampler::getOriginalPDFCov3D | ( | mrpt::math::CMatrixDouble & | cov6x6 | ) | const |
Retrieves the 6x6 covariance of the original PDF in .
Definition at line 426 of file CPoseRandomSampler.cpp.
References getOriginalPDFCov3D().
If the object has been loaded with setPosePDF this method returns the 2D pose mean samples will be drawn around.
Definition at line 387 of file CPoseRandomSampler.cpp.
References ASSERT_, isPrepared(), m_fastdraw_gauss_M_2D, m_fastdraw_gauss_M_3D, m_pdf2D, MRPT_END, and MRPT_START.
If the object has been loaded with setPosePDF this method returns the 3D pose mean samples will be drawn around.
Definition at line 404 of file CPoseRandomSampler.cpp.
References ASSERT_, isPrepared(), m_fastdraw_gauss_M_2D, m_fastdraw_gauss_M_3D, m_pdf3D, MRPT_END, and MRPT_START.
bool CPoseRandomSampler::isPrepared | ( | ) | const |
Return true if samples can be generated, which only requires a previous call to setPosePDF.
Definition at line 336 of file CPoseRandomSampler.cpp.
References m_pdf2D, and m_pdf3D.
Referenced by getOriginalPDFCov2D(), getOriginalPDFCov3D(), getSamplingMean2D(), getSamplingMean3D(), and mrpt::maps::CMultiMetricMapPDF::prediction_and_update_pfOptimalProposal().
CPoseRandomSampler & CPoseRandomSampler::operator= | ( | const CPoseRandomSampler & | o | ) |
Definition at line 36 of file CPoseRandomSampler.cpp.
References m_fastdraw_gauss_M_2D, m_fastdraw_gauss_M_3D, m_fastdraw_gauss_Z3, m_fastdraw_gauss_Z6, m_pdf2D, and m_pdf3D.
CPoseRandomSampler & CPoseRandomSampler::operator= | ( | CPoseRandomSampler && | o | ) |
Definition at line 68 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.
void CPoseRandomSampler::setPosePDF | ( | const CPosePDF & | ) |
This method must be called to select the PDF from which to draw samples.
Definition at line 101 of file CPoseRandomSampler.cpp.
References mrpt::math::CMatrixFixed< T, ROWS, COLS >::asEigen(), clear(), mrpt::rtti::CObject::clone(), mrpt::math::cov(), mrpt::math::MatrixBase< Scalar, Derived >::eig_symmetric(), IS_CLASS, m_fastdraw_gauss_M_2D, m_fastdraw_gauss_Z3, m_pdf2D, mrpt::math::MatrixBase< Scalar, Derived >::matProductOf_AB(), MRPT_END, MRPT_START, mrpt::math::MatrixBase< Scalar, Derived >::setDiagonal(), and THROW_EXCEPTION_FMT.
Referenced by mrpt::maps::CMultiMetricMapPDF::prediction_and_update_pfOptimalProposal().
void CPoseRandomSampler::setPosePDF | ( | const CPose3DPDF & | ) |
This method must be called to select the PDF from which to draw samples.
Definition at line 141 of file CPoseRandomSampler.cpp.
References mrpt::math::CMatrixFixed< T, ROWS, COLS >::asEigen(), clear(), mrpt::rtti::CObject::clone(), mrpt::math::cov(), mrpt::math::MatrixBase< Scalar, Derived >::eig_symmetric(), IS_CLASS, m_fastdraw_gauss_M_3D, m_fastdraw_gauss_Z6, m_pdf3D, mrpt::math::MatrixBase< Scalar, Derived >::matProductOf_AB(), MRPT_END, MRPT_START, mrpt::math::MatrixBase< Scalar, Derived >::setDiagonal(), and THROW_EXCEPTION_FMT.
|
protected |
Definition at line 53 of file CPoseRandomSampler.h.
Referenced by CPoseRandomSampler(), do_sample_2D(), getSamplingMean2D(), getSamplingMean3D(), operator=(), and setPosePDF().
|
protected |
Definition at line 54 of file CPoseRandomSampler.h.
Referenced by CPoseRandomSampler(), do_sample_3D(), getSamplingMean2D(), getSamplingMean3D(), operator=(), and setPosePDF().
|
protected |
Definition at line 51 of file CPoseRandomSampler.h.
Referenced by CPoseRandomSampler(), do_sample_2D(), operator=(), and setPosePDF().
|
protected |
Definition at line 52 of file CPoseRandomSampler.h.
Referenced by CPoseRandomSampler(), do_sample_3D(), operator=(), and setPosePDF().
|
protected |
A local copy of the PDF.
Definition at line 47 of file CPoseRandomSampler.h.
Referenced by clear(), CPoseRandomSampler(), do_sample_2D(), drawSample(), getOriginalPDFCov2D(), getOriginalPDFCov3D(), getSamplingMean2D(), isPrepared(), operator=(), and setPosePDF().
|
protected |
A local copy of the PDF.
Definition at line 49 of file CPoseRandomSampler.h.
Referenced by clear(), CPoseRandomSampler(), do_sample_3D(), drawSample(), getOriginalPDFCov2D(), getOriginalPDFCov3D(), getSamplingMean3D(), isPrepared(), operator=(), and setPosePDF().
Page generated by Doxygen 1.8.14 for MRPT 2.0.1 Git: 0fef1a6d7 Fri Apr 3 23:00:21 2020 +0200 at vie abr 3 23:20:28 CEST 2020 |