51 :
mean(init_Mean), cov_inv(init_Cov)
59 :
mean(init_Mean), cov_inv()
130 if (
this == &o)
return;
187 for (
unsigned int i = 0; i < 6; i++)
199 const CPose3D& newReferenceBase)
205 a.changeCoordinatesReference(newReferenceBase);
231 "__DEBUG_EXC_DUMP_drawSingleSample_COV_INV.txt"););
238 size_t N, vector<CVectorDouble>& outSamples)
const
248 it != outSamples.end(); ++it)
250 (*it)[0] +=
mean.
x();
251 (*it)[1] +=
mean.
y();
252 (*it)[2] +=
mean.z();
303 df_dx.multiply_HCHt(OLD_COV_INV,
cov_inv);
367 for (
unsigned int i = 0; i <
size(
cov_inv, 1) - 1; i++)
368 for (
unsigned int j = i + 1; j <
size(
cov_inv, 1); j++)
386 for (
int i = 0; i < 6; i++)
388 if (COV_.get_unsafe(i, i) == 0)
390 if (MU.get_unsafe(i, 0) != 0)
391 return std::numeric_limits<double>::infinity();
393 COV_.get_unsafe(i, i) = 1;
399 return std::sqrt(MU.multiply_HtCH_scalar(COV_.inv()));
409 out <<
"Mean: " <<
obj.mean <<
"\n";
410 out <<
"Inverse cov:\n" <<
obj.cov_inv <<
"\n";
420 out_cov.setSize(3, 3);
422 for (
int i = 0; i < 3; i++)
424 int a = i == 2 ? 3 : i;
425 for (
int j = i; j < 3; j++)
427 int b = j == 2 ? 3 : j;
429 out_cov.set_unsafe(i, j, f);
430 out_cov.set_unsafe(j, i, f);
#define IS_CLASS(ptrObj, class_name)
Evaluates to true if the given pointer to an object (derived from mrpt::utils::CSerializable) is of t...
#define CLASS_ID(T)
Access to runtime class ID for a defined class name.
#define IMPLEMENTS_SERIALIZABLE(class_name, base, NameSpace)
This must be inserted in all CSerializable classes implementation files.
A numeric matrix of compile-time fixed size.
Column vector, like Eigen::MatrixX*, but automatically initialized to zeros since construction.
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)
void setFromValues(const double x0, const double y0, const double z0, const double yaw=0, const double pitch=0, const double roll=0)
Set the pose from a 3D position (meters) and yaw/pitch/roll angles (radians) - This method recomputes...
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.
Declares a class that represents a Probability Density function (PDF) of a 3D pose as a Gaussian des...
CPose3D mean
The mean value.
void writeToStream(mrpt::utils::CStream &out, int *getVersion) const override
Introduces a pure virtual method responsible for writing to a CStream.
void inverse(CPose3DPDF &o) const override
Returns a new PDF such as: NEW_PDF = (0,0,0) - THIS_PDF.
mrpt::math::CMatrixDouble66 cov_inv
The inverse of the 6x6 covariance matrix.
void copyFrom(const CPose3DPDF &o) override
Copy operator, translating if necesary (for example, between particles and gaussian representations)
double mahalanobisDistanceTo(const CPose3DPDFGaussianInf &theOther)
Computes the Mahalanobis distance between the centers of two Gaussians.
void operator+=(const CPose3D &Ap)
Makes: thisPDF = thisPDF + Ap, where "+" is pose composition (both the mean, and the covariance matri...
double evaluatePDF(const CPose3D &x) const
Evaluates the PDF at a given point.
void drawSingleSample(CPose3D &outPart) const override
Draws a single sample from the distribution.
void getInvCovSubmatrix2D(mrpt::math::CMatrixDouble &out_cov) const
Returns a 3x3 matrix with submatrix of the inverse covariance for the variables (x,...
void saveToTextFile(const std::string &file) const override
Save the PDF to a text file, containing the 3D pose in the first line, then the covariance matrix in ...
void readFromStream(mrpt::utils::CStream &in, int version) override
Introduces a pure virtual method responsible for loading from a CStream This can not be used directly...
void assureSymmetry()
Assures the symmetry of the covariance matrix (eventually certain operations in the math-coprocessor ...
CPose3DPDFGaussianInf()
Default constructor - mean: all zeros, inverse covariance=all zeros -> so be careful!
double evaluateNormalizedPDF(const CPose3D &x) const
Evaluates the ratio PDF(x) / PDF(MEAN), that is, the normalized PDF in the range [0,...
void changeCoordinatesReference(const CPose3D &newReferenceBase) override
this = p (+) this.
void operator-=(const CPose3DPDFGaussianInf &Ap)
Makes: thisPDF = thisPDF - Ap, where "-" is pose inverse composition (both the mean,...
void drawManySamples(size_t N, std::vector< mrpt::math::CVectorDouble > &outSamples) const override
Draws a number of samples from the distribution, and saves as a list of 1x6 vectors,...
void bayesianFusion(const CPose3DPDF &p1, const CPose3DPDF &p2) override
Bayesian fusion of two points gauss.
Declares a class that represents a Probability Density Function (PDF) of a 3D pose (6D actually).
static void jacobiansPoseComposition(const CPose3D &x, const CPose3D &u, mrpt::math::CMatrixDouble66 &df_dx, mrpt::math::CMatrixDouble66 &df_du)
This static method computes the pose composition Jacobians.
virtual const mrpt::utils::TRuntimeClassId * GetRuntimeClass() const override
Returns information about the class of an object in runtime.
Declares a class that represents a Probability Density function (PDF) of a 3D pose using a quaternion...
double x() const
Common members of all points & poses classes.
A Probability Density function (PDF) of a 2D pose as a Gaussian with a mean and the inverse of the c...
mrpt::math::CMatrixDouble33 cov_inv
The inverse of the 3x3 covariance matrix (the "information" matrix)
CPose2D mean
The mean value.
Declares a class that represents a probability density function (pdf) of a 2D pose (x,...
void drawGaussianMultivariateMany(VECTOR_OF_VECTORS &ret, size_t desiredSamples, const COVMATRIX &cov, const typename VECTOR_OF_VECTORS::value_type *mean=nullptr)
Generate a given number of multidimensional random samples according to a given covariance matrix.
void drawGaussianMultivariate(std::vector< T > &out_result, const mrpt::math::CMatrixTemplateNumeric< T > &cov, const std::vector< T > *mean=nullptr)
Generate multidimensional random samples according to a given covariance matrix.
virtual void getCovarianceAndMean(mrpt::math::CMatrixFixedNumeric< double, STATE_LEN, STATE_LEN > &cov, TDATA &mean_point) const =0
Returns an estimate of the pose covariance matrix (STATE_LENxSTATE_LEN cov matrix) and the mean,...
This base class is used to provide a unified interface to files,memory buffers,..Please see the deriv...
EIGEN_STRONG_INLINE double mean() const
Computes the mean of the entire matrix.
GLsizei GLsizei GLuint * obj
GLdouble GLdouble GLdouble r
GLubyte GLubyte GLubyte a
T wrapToPi(T a)
Modifies the given angle to translate it into the ]-pi,pi] range.
int void fclose(FILE *f)
An OS-independent version of fclose.
FILE * fopen(const char *fileName, const char *mode) noexcept
An OS-independent version of fopen.
int fprintf(FILE *fil, const char *format,...) noexcept MRPT_printf_format_check(2
An OS-independent version of fprintf.
#define MRPT_THROW_UNKNOWN_SERIALIZATION_VERSION(__V)
For use in CSerializable implementations.
#define MRPT_END_WITH_CLEAN_UP(stuff)
#define THROW_EXCEPTION(msg)
#define MRPT_UNUSED_PARAM(a)
Can be used to avoid "not used parameters" warnings from the compiler.
This base provides a set of functions for maths stuff.
CMatrixFixedNumeric< double, 6, 1 > CMatrixDouble61
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...
mrpt::math::TPoint2D operator+(const CPose2D &pose, const mrpt::math::TPoint2D &pnt)
Compose a 2D point from a new coordinate base given by a 2D pose.
CPose2D operator-(const CPose2D &p)
Unary - operator: return the inverse pose "-p" (Note that is NOT the same than a pose with negative x...
std::ostream & operator<<(std::ostream &o, const CPoint< DERIVEDCLASS > &p)
Dumps a point as a string [x,y] or [x,y,z]
bool operator==(const CPoint< DERIVEDCLASS > &p1, const CPoint< DERIVEDCLASS > &p2)
A namespace of pseudo-random numbers genrators of diferent distributions.
CRandomGenerator & getRandomGenerator()
A static instance of a CRandomGenerator class, for use in single-thread applications.
This namespace provides a OS-independent interface to many useful functions: filenames manipulation,...
Classes for serialization, sockets, ini-file manipulation, streams, list of properties-values,...
This is the global namespace for all Mobile Robot Programming Toolkit (MRPT) libraries.