28 CMetricMap::CMetricMap() =
default;
36 void CMetricMap::loadFromProbabilisticPosesAndObservations(
41 const size_t n = sfSeq.
size();
47 for (
size_t i = 0; i <
n; i++)
49 sfSeq.
get(i, posePDF, sf);
50 ASSERTMSG_(posePDF,
"Input map has an empty `CPose3DPDF` ptr");
51 ASSERTMSG_(sf,
"Input map has an empty `CSensoryFrame` ptr");
54 posePDF->getMean(robotPose);
56 sf->insertObservationsInto(
66 double CMetricMap::computeObservationsLikelihood(
70 for (
const auto& it : sf)
71 lik += computeObservationLikelihood(*it, takenFrom);
76 double CMetricMap::computeObservationLikelihood(
79 return computeObservationLikelihood(obs,
CPose3D(takenFrom));
85 bool CMetricMap::canComputeObservationsLikelihood(
const CSensoryFrame& sf)
const 88 for (
auto it = sf.
begin(); !can && it != sf.
end(); ++it)
89 can = can || canComputeObservationLikelihood(**it);
93 bool CMetricMap::insertObservation(
96 if (!genericMapParams.enableObservationInsertion)
return false;
98 bool done = internal_insertObservation(obs, robotPose);
101 OnPostSuccesfulInsertObs(obs);
107 bool CMetricMap::insertObservationPtr(
115 return insertObservation(*obs, robotPose);
119 void CMetricMap::determineMatching2D(
134 void CMetricMap::determineMatching3D(
149 float CMetricMap::compute3DMatchingRatio(
162 float CMetricMap::squareDistanceToClosestCorrespondence(
163 float x0,
float y0)
const 172 bool CMetricMap::canComputeObservationLikelihood(
175 if (genericMapParams.enableObservationLikelihood)
176 return internal_canComputeObservationLikelihood(obs);
181 double CMetricMap::computeObservationLikelihood(
184 if (genericMapParams.enableObservationLikelihood)
185 return internal_computeObservationLikelihood(obs, takenFrom);
#define IMPLEMENTS_VIRTUAL_SERIALIZABLE(class_name, base_class, NS)
This must be inserted as implementation of some required members for virtual CSerializable classes: ...
Parameters for CMetricMap::compute3DMatchingRatio()
#define THROW_EXCEPTION(msg)
This class stores a sequence of <Probabilistic Pose,SensoryFrame> pairs, thus a "metric map" can be t...
const_iterator begin() const
Returns a constant iterator to the first observation: this is an example of usage: ...
This base provides a set of functions for maths stuff.
This namespace contains representation of robot actions and observations.
Declares a class for storing a "sensory frame", a set of "observations" taken by the robot approximat...
#define ASSERTMSG_(f, __ERROR_MSG)
Defines an assertion mechanism.
size_t size() const
Returns the count of pairs (pose,sensory data)
void get(size_t index, mrpt::poses::CPose3DPDF::Ptr &out_posePDF, mrpt::obs::CSensoryFrame::Ptr &out_SF) const
Access to the i'th pair, first one is index '0'.
Event emitted by a metric up upon a succesful call to insertObservation()
Classes for 2D/3D geometry representation, both of single values and probability density distribution...
Event emitted by a metric up upon call of clear()
Declares a virtual base class for all metric maps storage classes.
A class used to store a 2D pose, including the 2D coordinate point and a heading (phi) angle...
A class used to store a 3D pose (a 3D translation + a rotation in 3D).
Declares a class that represents any robot's observation.
const_iterator end() const
Returns a constant iterator to the end of the list of observations: this is an example of usage: ...
Parameters for the determination of matchings between point clouds, etc.
Functions for estimating the optimal transformation between two frames of references given measuremen...
GLenum const GLfloat * params
void clear()
Clear the contents of this container.
#define MRPT_UNUSED_PARAM(a)
Determines whether this is an X86 or AMD64 platform.