30 CPoseRandomSampler::CPoseRandomSampler() {}
45 if (&o ==
this)
return *
this;
60 : m_pdf2D(nullptr), m_pdf3D(nullptr)
79 if (
this == &o)
return *
this;
135 D = D.array().sqrt().matrix();
145 "Unsupported class: %s",
m_pdf2D->GetRuntimeClass()->className);
179 D = D.array().sqrt().matrix();
189 "Unsoported class: %s",
m_pdf3D->GetRuntimeClass()->className);
225 THROW_EXCEPTION(
"No associated pdf: setPosePDF must be called first.");
242 p.setFromValues(
q.x(),
q.y(), 0,
q.phi(), 0, 0);
249 THROW_EXCEPTION(
"No associated pdf: setPosePDF must be called first.");
271 for (
size_t i = 0; i < 3; i++)
274 for (
size_t d = 0; d < 3; d++)
301 "Unsoported class: %s",
m_pdf2D->GetRuntimeClass()->className);
322 for (
size_t i = 0; i < 6; i++)
325 for (
size_t d = 0; d < 6; d++)
355 "Unsoported class: %s",
m_pdf3D->GetRuntimeClass()->className);
374 m_pdf2D->getCovariance(cov3x3);
405 m_pdf3D->getCovariance(cov6x6);
#define IS_CLASS(ptrObj, class_name)
Evaluates to true if the given pointer to an object (derived from mrpt::rtti::CObject) is of the give...
Column vector, like Eigen::MatrixX*, but automatically initialized to zeros since construction.
A class used to store a 2D pose, including the 2D coordinate point and a heading (phi) angle.
const double & phi() const
Get the phi angle of the 2D pose (in radians)
A class used to store a 3D pose (a 3D translation + a rotation in 3D).
double pitch() const
Get the PITCH angle (in radians)
double roll() const
Get the ROLL angle (in radians)
double yaw() const
Get the YAW angle (in radians)
Declares a class that represents a Probability Density function (PDF) of a 3D pose .
CPose3D mean
The mean value.
void copyFrom(const CPose3DPDF &o) override
Copy operator, translating if necesary (for example, between particles and gaussian representations)
mrpt::math::CMatrixDouble66 cov
The 6x6 covariance matrix.
Declares a class that represents a Probability Density Function (PDF) of a 3D pose (6D actually).
std::shared_ptr< CPose3DPDF > Ptr
Declares a class that represents a Probability Density function (PDF) of a 3D pose.
void drawSingleSample(CPose3D &outPart) const override
Draws a single sample from the distribution (WARNING: weights are assumed to be normalized!...
Declares a class that represents a Probability Density function (PDF) of a 3D(6D) pose .
double x() const
Common members of all points & poses classes.
Declares a class that represents a Probability Density function (PDF) of a 2D pose .
CPose2D mean
The mean value.
mrpt::math::CMatrixDouble33 cov
The 3x3 covariance matrix.
void copyFrom(const CPosePDF &o) override
Copy operator, translating if necesary (for example, between particles and gaussian representations)
Declares a class that represents a probability density function (pdf) of a 2D pose (x,...
std::shared_ptr< CPosePDF > Ptr
Declares a class that represents a Probability Density Function (PDF) over a 2D pose (x,...
void drawSingleSample(CPose2D &outPart) const override
Draws a single sample from the distribution (WARNING: weights are assumed to be normalized!...
Declares a class that represents a Probability Density function (PDF) of a 2D pose .
An efficient generator of random samples drawn from a given 2D (CPosePDF) or 3D (CPose3DPDF) pose pro...
CPose3D & getSamplingMean3D(CPose3D &out_mean) const
If the object has been loaded with setPosePDF this method returns the 3D pose mean samples will be dr...
void do_sample_2D(CPose2D &p) const
Used internally: sample from m_pdf2D.
CPose2D & getSamplingMean2D(CPose2D &out_mean) const
If the object has been loaded with setPosePDF this method returns the 2D pose mean samples will be dr...
CPose2D m_fastdraw_gauss_M_2D
void getOriginalPDFCov3D(mrpt::math::CMatrixDouble66 &cov6x6) const
Retrieves the 6x6 covariance of the original PDF in .
mrpt::math::CMatrixDouble33 m_fastdraw_gauss_Z3
CPose3D m_fastdraw_gauss_M_3D
std::unique_ptr< const CPose3DPDF > m_pdf3D
A local copy of the PDF.
void getOriginalPDFCov2D(mrpt::math::CMatrixDouble33 &cov3x3) const
Retrieves the 3x3 covariance of the original PDF in .
std::unique_ptr< const CPosePDF > m_pdf2D
A local copy of the PDF.
void do_sample_3D(CPose3D &p) const
Used internally: sample from m_pdf3D.
mrpt::math::CMatrixDouble66 m_fastdraw_gauss_Z6
void clear()
Clear internal pdf.
CPose2D & drawSample(CPose2D &p) const
Generate a new sample from the selected PDF.
void setPosePDF(const CPosePDF *pdf)
This method must be called to select the PDF from which to draw samples.
CPoseRandomSampler & operator=(const CPoseRandomSampler &o)
bool isPrepared() const
Return true if samples can be generated, which only requires a previous call to setPosePDF.
double drawGaussian1D_normalized()
Generate a normalized (mean=0, std=1) normally distributed sample.
virtual CObject * clone() const =0
Returns a deep copy (clone) of the object, indepently of its class.
#define ASSERT_(f)
Defines an assertion mechanism.
#define THROW_EXCEPTION(msg)
#define THROW_EXCEPTION_FMT(_FORMAT_STRING,...)
GLdouble GLdouble GLdouble GLdouble q
This base provides a set of functions for maths stuff.
Eigen::Matrix< typename MATRIX::Scalar, MATRIX::ColsAtCompileTime, MATRIX::ColsAtCompileTime > cov(const MATRIX &v)
Computes the covariance matrix from a list of samples in an NxM matrix, where each row is a sample,...
Classes for 2D/3D geometry representation, both of single values and probability density distribution...
A namespace of pseudo-random numbers generators of diferent distributions.
CRandomGenerator & getRandomGenerator()
A static instance of a CRandomGenerator class, for use in single-thread applications.
This is the global namespace for all Mobile Robot Programming Toolkit (MRPT) libraries.