Go to the documentation of this file.
77 size_t size()
const {
return m_modes.size(); }
78 bool empty()
const {
return m_modes.empty(); }
107 m_modes.push_back(m);
125 void mergeModes(
double max_KLd = 0.5,
bool verbose =
false );
165 const double & x_min,
166 const double & x_max,
167 const double & y_min,
168 const double & y_max,
169 const double & resolutionXY,
172 bool sumOverAllPhis =
false );
CPosePDFSOG(size_t nModes=1)
Default constructor.
void getCovarianceAndMean(mrpt::math::CMatrixDouble33 &cov, CPose2D &mean_point) const MRPT_OVERRIDE
Returns an estimate of the pose covariance matrix (3x3 cov matrix) and the mean, both at once.
const Scalar * const_iterator
const_iterator end() const
void rotateAllCovariances(const double &ang)
Rotate all the covariance matrixes by replacing them by , where .
double evaluatePDF(const mrpt::poses::CPose2D &x, bool sumOverAllPhis=false) const
Evaluates the PDF at a given point.
void inverse(CPosePDF &o) const MRPT_OVERRIDE
Returns a new PDF such as: NEW_PDF = (0,0,0) - THIS_PDF.
void normalizeWeights()
Normalize the weights in m_modes such as the maximum log-weight is 0.
const TGaussianMode & get(size_t i) const
Access to individual beacons.
#define DEFINE_SERIALIZABLE_POST_CUSTOM_BASE(class_name, base_name)
void getMean(CPose2D &mean_pose) const MRPT_OVERRIDE
Returns an estimate of the pose, (the mean, or mathematical expectation of the PDF)
TGaussianMode & get(size_t i)
Access to individual beacons.
This is the global namespace for all Mobile Robot Programming Toolkit (MRPT) libraries.
void push_back(const TGaussianMode &m)
Inserts a copy of the given mode into the SOG.
void clear()
Clear the list of modes.
iterator erase(iterator i)
void assureSymmetry()
Ensures the symmetry of the covariance matrix (eventually certain operations in the math-coprocessor ...
void mergeModes(double max_KLd=0.5, bool verbose=false)
Merge very close modes so the overall number of modes is reduced while preserving the total distribut...
The struct for each mode:
std::vector< T1 > & operator+=(std::vector< T1 > &a, const std::vector< T2 > &b)
a+=b (element-wise sum)
#define MRPT_MAKE_ALIGNED_OPERATOR_NEW
A class used to store a 2D pose.
void getMostLikelyCovarianceAndMean(mrpt::math::CMatrixDouble33 &cov, CPose2D &mean_point) const
For the most likely Gaussian mode in the SOG, returns the pose covariance matrix (3x3 cov matrix) and...
A class used to store a 3D pose (a 3D translation + a rotation in 3D).
CListGaussianModes m_modes
The list of SOG modes.
void evaluatePDFInArea(const double &x_min, const double &x_max, const double &y_min, const double &y_max, const double &resolutionXY, const double &phi, mrpt::math::CMatrixD &outMatrix, bool sumOverAllPhis=false)
Evaluates the PDF within a rectangular grid (and a fixed orientation) and saves the result in a matri...
void saveToTextFile(const std::string &file) const MRPT_OVERRIDE
Save the density to a text file, with the following format: There is one row per Gaussian "mode",...
void drawManySamples(size_t N, std::vector< mrpt::math::CVectorDouble > &outSamples) const MRPT_OVERRIDE
Draws a number of samples from the distribution, and saves as a list of 1x3 vectors,...
const_iterator begin() const
void copyFrom(const CPosePDF &o) MRPT_OVERRIDE
Copy operator, translating if necesary (for example, between particles and gaussian representations)
A numeric matrix of compile-time fixed size.
mrpt::math::CMatrixDouble33 cov
Declares a class that represents a probability density function (pdf) of a 2D pose (x,...
void bayesianFusion(const CPosePDF &p1, const CPosePDF &p2, const double &minMahalanobisDistToDrop=0) MRPT_OVERRIDE
Bayesian fusion of two pose distributions, then save the result in this object (WARNING: Currently p1...
size_t size() const
Return the number of Gaussian modes.
mrpt::aligned_containers< TGaussianMode >::vector_t CListGaussianModes
CListGaussianModes::const_iterator const_iterator
#define DEFINE_SERIALIZABLE(class_name)
This declaration must be inserted in all CSerializable classes definition, within the class declarati...
void drawSingleSample(CPose2D &outPart) const MRPT_OVERRIDE
Draws a single sample from the distribution.
EIGEN_STRONG_INLINE double mean() const
Computes the mean of the entire matrix.
void resize(const size_t N)
Resize the number of SOG modes.
void changeCoordinatesReference(const CPose3D &newReferenceBase) MRPT_OVERRIDE
this = p (+) this.
This class is a "CSerializable" wrapper for "CMatrixTemplateNumeric<double>".
bool empty() const
Return whether there is any Gaussian mode.
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,...
CListGaussianModes::iterator iterator
double evaluateNormalizedPDF(const mrpt::poses::CPose2D &x) const
Evaluates the ratio PDF(x) / max_PDF(x*), that is, the normalized PDF in the range [0,...
std::vector< TYPE1, Eigen::aligned_allocator< TYPE1 > > vector_t
#define MRPT_OVERRIDE
C++11 "override" for virtuals:
Declares a class that represents a Probability Density function (PDF) of a 2D pose .
#define DEFINE_SERIALIZABLE_PRE_CUSTOM_BASE(class_name, base_name)
This declaration must be inserted in all CSerializable classes definition, before the class declarati...
double log_w
The log-weight.
Page generated by Doxygen 1.8.20 for MRPT 1.4.0 SVN: at Thu Aug 27 02:40:23 UTC 2020 | | |