Go to the documentation of this file.
55 insertionOpts.loadFromConfigFile(
56 source, sectionNamePrefix +
string(
"_insertOpts"));
57 likelihoodOpts.loadFromConfigFile(
58 source, sectionNamePrefix +
string(
"_likelihoodOpts"));
62 std::ostream& out)
const
66 this->insertionOpts.dumpToTextStream(out);
67 this->likelihoodOpts.dumpToTextStream(out);
106 out << genericMapParams;
123 if (version >= 1)
in >> genericMapParams;
134 for (i = 0; i < n; i++) in >> m_beacons[i];
180 beac = getBeaconByID(it_obs->beaconID);
182 if (beac !=
nullptr && it_obs->sensedDistance > 0 &&
183 !std::isnan(it_obs->sensedDistance))
185 float sensedRange = it_obs->sensedDistance;
190 sensor3D = robotPose3D + it_obs->sensorLocationOnRobot;
208 itLW = logWeights.begin(), itLL = logLiks.begin();
210 ++it, ++itLW, ++itLL)
213 it->d->x, it->d->y, it->d->z);
220 (sensedRange - expectedRange) /
221 likelihoodOptions.rangeStd);
227 if (logWeights.size())
229 logWeights, logLiks);
241 float varZ, varR =
square(likelihoodOptions.rangeStd);
251 float expectedRange =
253 H *= 1.0 / expectedRange;
268 -0.5 *
square(sensedRange - expectedRange) / varZ;
283 itLW = logWeights.begin(), itLL = logLiks.begin();
285 ++it, ++itLW, ++itLL)
289 varR =
square(likelihoodOptions.rangeStd);
290 double Ax = it->val.mean.x() - sensor3D.
x();
291 double Ay = it->val.mean.y() - sensor3D.
y();
292 double Az = it->val.mean.z() - sensor3D.z();
296 double expectedRange =
301 varZ = H.multiply_HCHt_scalar(it->val.cov);
311 *itLL = -0.5 *
square(sensedRange - expectedRange) /
316 if (logWeights.size())
364 robotPose2D =
CPose2D(*robotPose);
365 robotPose3D = (*robotPose);
397 CPoint3D sensorPnt(robotPose3D + it->sensorLocationOnRobot);
398 float sensedRange = it->sensedDistance;
399 unsigned int sensedID = it->beaconID;
401 CBeacon* beac = getBeaconByID(sensedID);
411 newBeac.
m_ID = sensedID;
413 if (insertionOptions.insertAsMonteCarlo)
420 size_t numParts =
round(
421 insertionOptions.MC_numSamplesPerMeter *
424 insertionOptions.minElevation_deg <=
425 insertionOptions.maxElevation_deg);
427 DEG2RAD(insertionOptions.minElevation_deg);
429 DEG2RAD(insertionOptions.maxElevation_deg);
441 sensedRange, likelihoodOptions.rangeStd);
442 itP->d->x = sensorPnt.
x() +
R * cos(th) * cos(el);
443 itP->d->y = sensorPnt.
y() +
R * sin(th) * cos(el);
444 itP->d->z = sensorPnt.z() +
R * sin(el);
461 m_beacons.push_back(newBeac);
476 double maxW = -1e308, sumW = 0;
482 p.d->x,
p.d->y,
p.d->z);
485 (sensedRange - expectedRange) /
486 likelihoodOptions.rangeStd);
487 maxW = max(
p.log_w, maxW);
488 sumW += exp(
p.log_w);
494 if (insertionOptions.MC_performResampling)
502 vector<double> log_ws;
503 vector<size_t> indxs;
507 CParticleFilterCapable::computeResampling(
508 CParticleFilter::prSystematic, log_ws,
517 (insertionOptions.minElevation_deg ==
518 insertionOptions.maxElevation_deg);
521 .MC_afterResamplingNoise;
559 (maxW - insertionOptions
560 .MC_thresholdNegligible))
585 double D1 = sqrt(COV(0, 0));
586 double D2 = sqrt(COV(1, 1));
587 double D3 = sqrt(COV(2, 2));
589 double mxVar =
max3(D1, D2, D3);
591 if (mxVar < insertionOptions.MC_maxStdToGauss)
604 if (insertionOptions.minElevation_deg ==
605 insertionOptions.maxElevation_deg)
625 float varR =
square(likelihoodOptions.rangeStd);
637 float y = sensedRange - expectedRange;
656 varZ = H.multiply_HCHt_scalar(
670 (Eigen::Matrix<double, 3, 3>::Identity() -
683 float varR =
square(likelihoodOptions.rangeStd);
692 double expectedRange =
696 double y = sensedRange - expectedRange;
701 double Ax = (
mode.val.mean.x() - sensorPnt.
x());
702 double Ay = (
mode.val.mean.y() - sensorPnt.
y());
703 double Az = (
mode.val.mean.z() - sensorPnt.z());
707 H *= 1.0 / expectedRange;
708 varZ = H.multiply_HCHt_scalar(
mode.val.cov);
711 K.multiply(
mode.val.cov, H.transpose());
715 mode.val.mean.x_incr(K(0, 0) *
y);
716 mode.val.mean.y_incr(K(1, 0) *
y);
717 mode.val.mean.z_incr(K(2, 0) *
y);
720 (Eigen::Matrix3d::Identity() - K * H) *
728 max_w = max(max_w,
mode.log_w);
736 if (max_w - it_p->log_w >
737 insertionOptions.SOG_thresholdNegligible)
754 double D1 = sqrt(curCov(0, 0));
755 double D2 = sqrt(curCov(1, 1));
756 double D3 = sqrt(curCov(2, 2));
757 float maxDiag =
max3(D1, D2, D3);
802 CPose3D otherMapPose3D(otherMapPose);
807 vector<bool> otherCorrespondences;
813 computeMatchingWith3DLandmarks(
814 otherMap2, correspondences, extraResults.correspondencesRatio,
815 otherCorrespondences);
826 for (
iterator lm = m_beacons.begin(); lm != m_beacons.end(); ++lm)
827 lm->changeCoordinatesReference(newOrg);
839 changeCoordinatesReference(newOrg);
848 vector<bool>& otherCorrespondences)
const
853 size_t nThis, nOther;
857 vector<bool> thisLandmarkAssigned;
860 nThis = m_beacons.size();
864 thisLandmarkAssigned.resize(nThis,
false);
867 correspondences.clear();
868 otherCorrespondences.clear();
869 otherCorrespondences.resize(nOther,
false);
870 correspondencesRatio = 0;
872 for (k = 0, otherIt = anotherMap->
m_beacons.begin();
873 otherIt != anotherMap->
m_beacons.end(); ++otherIt, ++k)
875 for (j = 0, thisIt = m_beacons.begin(); thisIt != m_beacons.end();
879 if ((otherIt)->m_ID == (thisIt)->m_ID)
883 if (!thisLandmarkAssigned[j])
885 thisLandmarkAssigned[j] =
true;
888 otherCorrespondences[k] =
true;
892 CPoint3D mean_j = m_beacons[j].getMeanVal();
896 match.
this_z = mean_j.z();
904 correspondences.push_back(match);
913 correspondencesRatio =
914 2.0f * correspondences.size() /
static_cast<float>(nThis + nOther);
923 const string& file,
const char* style,
float confInterval)
const
929 if (!f)
return false;
933 f,
"%%-------------------------------------------------------\n");
934 os::fprintf(f,
"%% File automatically generated using the MRPT method:\n");
935 os::fprintf(f,
"%% 'CBeaconMap::saveToMATLABScript3D'\n");
939 f,
"%% Jose Luis Blanco Claraco, University of Malaga @ 2006\n");
942 f,
"%%-------------------------------------------------------\n\n");
946 std::vector<std::string> strs;
949 for (
const_iterator it = m_beacons.begin(); it != m_beacons.end(); ++it)
951 it->getAsMatlabDrawCommands(strs);
965 "\n----------- [CBeaconMap::TLikelihoodOptions] ------------ \n\n");
967 "rangeStd = %f\n", rangeStd);
977 rangeStd =
iniFile.read_float(section.c_str(),
"rangeStd", rangeStd);
983 "\n----------- [CBeaconMap::TInsertionOptions] ------------ \n\n");
986 "insertAsMonteCarlo = %c\n",
987 insertAsMonteCarlo ?
'Y' :
'N');
989 "minElevation_deg = %.03f\n", minElevation_deg);
991 "maxElevation_deg = %.03f\n", maxElevation_deg);
993 "MC_numSamplesPerMeter = %d\n",
994 MC_numSamplesPerMeter);
996 "MC_maxStdToGauss = %.03f\n", MC_maxStdToGauss);
998 "MC_thresholdNegligible = %.03f\n",
999 MC_thresholdNegligible);
1001 "MC_performResampling = %c\n",
1002 MC_performResampling ?
'Y' :
'N');
1004 "MC_afterResamplingNoise = %.03f\n",
1005 MC_afterResamplingNoise);
1007 "SOG_thresholdNegligible = %.03f\n",
1008 SOG_thresholdNegligible);
1010 "SOG_maxDistBetweenGaussians = %.03f\n",
1011 SOG_maxDistBetweenGaussians);
1013 "SOG_separationConstant = %.03f\n",
1014 SOG_separationConstant);
1031 MC_thresholdNegligible,
float,
iniFile, section.c_str());
1034 MC_afterResamplingNoise,
float,
iniFile, section.c_str());
1036 SOG_thresholdNegligible,
float,
iniFile, section.c_str());
1038 SOG_maxDistBetweenGaussians,
float,
iniFile, section.c_str());
1040 SOG_separationConstant,
float,
iniFile, section.c_str());
1051 const CPose3D& in_robotPose,
const CPoint3D& in_sensorLocationOnRobot,
1060 point3D = in_robotPose + in_sensorLocationOnRobot;
1066 for (it = m_beacons.begin(); it != m_beacons.end(); ++it)
1068 it->getMean(beacon3D);
1085 out_Observations.
sensedData.push_back(newMeas);
1095 const string& filNamePrefix)
const
1100 string fil1(filNamePrefix +
string(
"_3D.m"));
1101 saveToMATLABScript3D(fil1);
1106 mrpt::make_aligned_shared<opengl::CSetOfObjects>();
1108 getAs3DObject(obj3D);
1110 -100.0f, 100.0f, -100.0f, 100.0f, .0f, 1.f);
1115 string fil2(filNamePrefix +
string(
"_3D.3Dscene"));
1119 string fil3(filNamePrefix +
string(
"_covs.txt"));
1123 string fil4(filNamePrefix +
string(
"_population.txt"));
1125 FILE* f =
os::fopen(fil4.c_str(),
"wt");
1128 size_t nParts = 0, nGaussians = 0;
1131 it != m_beacons.end(); ++it)
1133 switch (it->m_typePDF)
1136 nParts += it->m_locationMC.size();
1139 nGaussians += it->m_locationSOG.size();
1148 f,
"%u %u",
static_cast<unsigned>(nParts),
1149 static_cast<unsigned>(nGaussians));
1164 if (!genericMapParams.enableSaveAs3DObject)
return;
1172 for (
const_iterator it = m_beacons.begin(); it != m_beacons.end(); ++it)
1173 it->getAs3DObject(outObj);
1206 otherMap =
static_cast<const CBeaconMap*
>(otherMap2);
1208 if (!otherMap)
return 0;
1211 vector<bool> otherCorrespondences;
1212 float out_corrsRatio;
1218 computeMatchingWith3DLandmarks(
1219 &modMap, matchList, out_corrsRatio, otherCorrespondences);
1221 return out_corrsRatio;
1231 for (
const_iterator it = m_beacons.begin(); it != m_beacons.end(); ++it)
1232 if (it->m_ID ==
id)
return &(*it);
1241 for (
iterator it = m_beacons.begin(); it != m_beacons.end(); ++it)
1242 if (it->m_ID ==
id)
return &(*it);
1261 for (
const_iterator it = m_beacons.begin(); it != m_beacons.end(); ++it)
1263 it->getCovarianceAndMean(C,
p);
1266 float D2 = C(0, 0) * C(1, 1) -
square(C(0, 1));
1268 f,
"%i %f %f %f %e %e %e %e %e %e %e %e\n",
1269 static_cast<int>(it->m_ID),
p.x(),
p.y(),
p.z(), C(0, 0), C(1, 1),
1270 C(2, 2), D2, D3, C(0, 1), C(1, 2), C(1, 2));
CMatrixTemplateNumeric< double > CMatrixDouble
Declares a matrix of double numbers (non serializable).
void saveMetricMapRepresentationToFile(const std::string &filNamePrefix) const override
This virtual method saves the map to a file "filNamePrefix"+< some_file_extension >,...
Each one of the measurements.
TTypePDF m_typePDF
Which one of the different 3D point PDF is currently used in this object: montecarlo,...
EIGEN_STRONG_INLINE iterator begin()
float sensedDistance
The sensed range itself (in meters).
float compute3DMatchingRatio(const mrpt::maps::CMetricMap *otherMap, const mrpt::poses::CPose3D &otherMapPose, const TMatchingRatioParams ¶ms) const override
Computes the ratio in [0,1] of correspondences between "this" and the "otherMap" map,...
void clear()
Clear the contents of this container.
const Scalar * const_iterator
int void fclose(FILE *f)
An OS-independent version of fclose.
mrpt::math::CMatrixDouble33 cov
The 3x3 covariance matrix.
void setSize(size_t numberParticles, const mrpt::math::TPoint3Df &defaultValue=mrpt::math::TPoint3Df{0, 0, 0})
Erase all the previous particles and change the number of particles, with a given initial value
void serializeFrom(mrpt::serialization::CArchive &in, uint8_t serial_version) override
Pure virtual method for reading (deserializing) from an abstract archive.
void x_incr(const double v)
float minSensorDistance
Info about sensor.
void insert(const CRenderizable::Ptr &newObject, const std::string &viewportName=std::string("main"))
Insert a new object into the scene, in the given viewport (by default, into the "main" viewport).
#define MRPT_LOAD_CONFIG_VAR( variableName, variableType, configFileObject, sectionNameStr)
An useful macro for loading variables stored in a INI-like file under a key with the same name that t...
void y_incr(const double v)
void normalizeWeights()
Normalize the weights in m_modes such as the maximum log-weight is 0.
Column vector, like Eigen::MatrixX*, but automatically initialized to zeros since construction.
A gaussian distribution for 3D points.
This class allows the user to create, load, save, and render 3D scenes using OpenGL primitives.
TSequenceBeacons m_beacons
The individual beacons.
void dumpToTextStream(std::ostream &out) const override
This method should clearly display all the contents of the structure in textual form,...
#define MAP_DEFINITION_REGISTER(_CLASSNAME_STRINGS, _CLASSNAME_WITH_NS)
Registers one map class into TMetricMapInitializer factory.
GLsizei GLsizei GLuint * obj
double distanceTo(const CPoseOrPoint< OTHERCLASS > &b) const
Returns the Euclidean distance to another pose/point:
#define MRPT_UNUSED_PARAM(a)
Determines whether this is an X86 or AMD64 platform.
Parameters for CMetricMap::compute3DMatchingRatio()
void getAs3DObject(mrpt::opengl::CSetOfObjects::Ptr &outObj) const override
Returns a 3D object representing the map.
Functions for estimating the optimal transformation between two frames of references given measuremen...
This is the global namespace for all Mobile Robot Programming Toolkit (MRPT) libraries.
Virtual base for specifying the kind and parameters of one map (normally, to be inserted into mrpt::m...
virtual void internal_clear() override
Internal method called by clear()
A structure for holding correspondences between two sets of points or points-like entities in 2D or 3...
const T max3(const T &A, const T &B, const T &C)
void dumpToTextStream(std::ostream &out) const override
This method should clearly display all the contents of the structure in textual form,...
#define THROW_EXCEPTION(msg)
void serializeTo(mrpt::serialization::CArchive &out) const override
Pure virtual method for writing (serializing) to an abstract archive.
#define ASSERT_(f)
Defines an assertion mechanism.
T square(const T x)
Inline function for the square of a number.
Classes for 2D/3D geometry representation, both of single values and probability density distribution...
void changeCoordinatesReference(const mrpt::poses::CPose3D &newOrg)
Changes the reference system of the map to a given 3D pose.
This namespace contains representation of robot actions and observations.
#define MRPT_CHECK_NORMAL_NUMBER(v)
Throws an exception if the number is NaN, IND, or +/-INF, or return the same number otherwise.
Virtual base class for "archives": classes abstracting I/O streams.
void saveToTextFile(const std::string &file, mrpt::math::TMatrixTextFileFormat fileFormat=mrpt::math::MATRIX_FORMAT_ENG, bool appendMRPTHeader=false, const std::string &userHeader=std::string()) const
Save matrix to a text file, compatible with MATLAB text format (see also the methods of matrix classe...
GLsizei GLsizei GLchar * source
std::deque< TMeasurement > sensedData
The list of observed ranges.
Declares a virtual base class for all metric maps storage classes.
virtual const mrpt::rtti::TRuntimeClassId * GetRuntimeClass() const override
Returns information about the class of an object in runtime.
void getCovarianceAndMean(mrpt::math::CMatrixDouble33 &cov, CPoint3D &mean_point) const override
Returns an estimate of the point covariance matrix (3x3 cov matrix) and the mean, both at once.
double drawUniform(const double Min, const double Max)
Generate a uniformly distributed pseudo-random number using the MT19937 algorithm,...
Declares a class derived from "CObservation" that represents one (or more) range measurements to labe...
int round(const T value)
Returns the closer integer (int) to x.
static Ptr Create(Args &&... args)
void loadFromConfigFile(const mrpt::config::CConfigFileBase &source, const std::string §ion) override
Initilization of default parameters.
This class allows loading and storing values and vectors of different types from a configuration text...
float stdError
The "sigma" of the sensor, assuming a zero-mean Gaussian noise model.
mrpt::poses::CPointPDFGaussian m_locationGauss
The individual PDF, if m_typePDF=pdfGauss (publicly accesible for ease of use, but the CPointPDF inte...
std::string format(const char *fmt,...) MRPT_printf_format_check(1
A std::string version of C sprintf.
A class used to store a 2D pose, including the 2D coordinate point and a heading (phi) angle.
double x() const
Common members of all points & poses classes.
A class used to store a 3D pose (a 3D translation + a rotation in 3D).
int32_t beaconID
The ID of the sensed beacon (or INVALID_BEACON_ID if unknown)
string iniFile(myDataDir+string("benchmark-options.ini"))
void clear()
Clear all the particles (free memory)
mrpt::maps::CBeaconMap::TInsertionOptions insertionOpts
Observations insertion options.
mrpt::maps::CBeaconMap::TLikelihoodOptions likelihoodOpts
Probabilistic observation likelihood options.
mrpt::poses::CPointPDFSOG m_locationSOG
The individual PDF, if m_typePDF=pdfSOG (publicly accesible for ease of use, but the CPointPDF interf...
void getWeights(std::vector< double > &out_logWeights) const
Returns a vector with the sequence of the logaritmic weights of all the samples.
std::deque< CBeacon >::const_iterator const_iterator
static mrpt::maps::CMetricMap * internal_CreateFromMapDefinition(const mrpt::maps::TMetricMapInitializer &def)
std::shared_ptr< CSetOfObjects > Ptr
#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.
Parameters for the determination of matchings between point clouds, etc.
void saveToTextFile(const std::string &fil) const
Save a text file with a row per beacon, containing this 11 elements:
const CBeacon * getBeaconByID(CBeacon::TBeaconID id) const
Returns a pointer to the beacon with the given ID, or nullptr if it does not exist.
TBeaconID m_ID
An ID for the landmark (see details next...) This ID was introduced in the version 3 of this class (2...
std::deque< TGaussianMode >::const_iterator const_iterator
static void generateRingSOG(const float &sensedRange, mrpt::poses::CPointPDFSOG &outPDF, const CBeaconMap *myBeaconMap, const mrpt::poses::CPoint3D &sensorPnt, const mrpt::math::CMatrixDouble33 *covarianceCompositionToAdd=nullptr, bool clearPreviousContentsOutPDF=true, const mrpt::poses::CPoint3D ¢erPoint=mrpt::poses::CPoint3D(0, 0, 0), const float &maxDistanceFromCenter=0)
This static method returns a SOG with ring-shape (or as a 3D sphere) that can be used to initialize a...
bool saveToFile(const std::string &fil) const
Saves the scene to a 3Dscene file, loadable by the application SceneViewer3D.
CParticleList m_particles
The array of particles.
int fprintf(FILE *fil, const char *format,...) noexcept MRPT_printf_format_check(2
An OS-independent version of fprintf.
#define CLASS_ID(T)
Access to runtime class ID for a defined class name.
CSetOfObjects::Ptr CornerXYZ(float scale=1.0)
Returns three arrows representing a X,Y,Z 3D corner.
mrpt::poses::CPointPDFParticles m_locationMC
The individual PDF, if m_typePDF=pdfMonteCarlo (publicly accesible for ease of use,...
void performSubstitution(const std::vector< size_t > &indx) override
Replaces the old particles by copies determined by the indexes in "indx", performing an efficient cop...
CRandomGenerator & getRandomGenerator()
A static instance of a CRandomGenerator class, for use in single-thread applications.
void loadFromConfigFile(const mrpt::config::CConfigFileBase &source, const std::string §ion) override
This method load the options from a ".ini"-like file or memory-stored string list.
The namespace for Bayesian filtering algorithm: different particle filters and Kalman filter algorith...
double distance3DTo(double ax, double ay, double az) const
Returns the 3D distance from this pose/point to a 3D point.
A class for storing a map of 3D probabilistic beacons, using a Montecarlo, Gaussian,...
virtual const mrpt::rtti::TRuntimeClassId * GetRuntimeClass() const override
Returns information about the class of an object in runtime.
void dumpToTextStream_map_specific(std::ostream &out) const override
The class for storing individual "beacon landmarks" under a variety of 3D position PDF distributions.
virtual void determineMatching2D(const mrpt::maps::CMetricMap *otherMap, const mrpt::poses::CPose2D &otherMapPose, mrpt::tfest::TMatchingPairList &correspondences, const TMatchingParams ¶ms, TMatchingExtraResults &extraResults) const override
Computes the matching between this and another 2D point map, which includes finding:
virtual bool internal_insertObservation(const mrpt::obs::CObservation *obs, const mrpt::poses::CPose3D *robotPose=nullptr) override
Internal method called by insertObservation()
Declares a class that represents any robot's observation.
iterator erase(iterator i)
This base provides a set of functions for maths stuff.
void resize(const size_t N)
Resize the number of SOG modes.
FILE * fopen(const char *fileName, const char *mode) noexcept
An OS-independent version of fopen.
GLsizei const GLchar ** string
void simulateBeaconReadings(const mrpt::poses::CPose3D &in_robotPose, const mrpt::poses::CPoint3D &in_sensorLocationOnRobot, mrpt::obs::CObservationBeaconRanges &out_Observations) const
Simulates a reading toward each of the beacons in the landmarks map, if any.
double internal_computeObservationLikelihood(const mrpt::obs::CObservation *obs, const mrpt::poses::CPose3D &takenFrom) override
Internal method called by computeObservationLikelihood()
A namespace of pseudo-random numbers generators of diferent distributions.
bool saveToMATLABScript3D(const std::string &file, const char *style="b", float confInterval=0.95f) const
Save to a MATLAB script which displays 3D error ellipses for the map.
double drawGaussian1D(const double mean, const double std)
Generate a normally distributed pseudo-random number.
std::deque< CBeacon >::iterator iterator
A class used to store a 3D point.
#define MRPT_THROW_UNKNOWN_SERIALIZATION_VERSION(__V)
For use in CSerializable implementations.
CPoint3D mean
The mean value.
int64_t TBeaconID
The type for the IDs of landmarks.
double averageLogLikelihood(const CVectorDouble &logLikelihoods)
A numerically-stable method to compute average likelihood values with strongly different ranges (unwe...
void stringListAsString(const std::vector< std::string > &lst, std::string &out, const std::string &newline="\r\n")
Convert a string list to one single string with new-lines.
mrpt::poses::CPoint3D sensorLocationOnRobot
Position of the sensor on the robot.
uint8_t serializeGetVersion() const override
Must return the current versioning number of the object.
size_t size() const
Returns the stored landmarks count.
void computeMatchingWith3DLandmarks(const mrpt::maps::CBeaconMap *otherMap, mrpt::tfest::TMatchingPairList &correspondences, float &correspondencesRatio, std::vector< bool > &otherCorrespondences) const
Perform a search for correspondences between "this" and another lansmarks map: Firsly,...
void loadFromConfigFile_map_specific(const mrpt::config::CConfigFileBase &source, const std::string §ionNamePrefix) override
Load all map-specific params.
double ESS() const override
Returns the normalized ESS (Estimated Sample Size), in the range [0,1].
unsigned __int32 uint32_t
size_t size() const
Return the number of Gaussian modes.
void getCovarianceAndMean(mrpt::math::CMatrixDouble33 &cov, CPoint3D &mean_point) const override
Returns an estimate of the point covariance matrix (3x3 cov matrix) and the mean, both at once.
This namespace provides a OS-independent interface to many useful functions: filenames manipulation,...
bool isEmpty() const override
Returns true if the map is empty/no observation has been inserted.
GLenum const GLfloat * params
double DEG2RAD(const double x)
Degrees to radians.
Page generated by Doxygen 1.8.17 for MRPT 1.9.9 Git: ad3a9d8ae Tue May 1 23:10:22 2018 -0700 at mié 12 jul 2023 10:03:34 CEST | |