Class CBeaconMap
Defined in File CBeaconMap.h
Nested Relationships
Nested Types
Inheritance Relationships
Base Type
public mrpt::maps::CMetricMap
Class Documentation
-
class CBeaconMap : public mrpt::maps::CMetricMap
A class for storing a map of 3D probabilistic beacons, using a Montecarlo, Gaussian, or Sum of Gaussians (SOG) representation (for range-only SLAM).
The individual beacons are defined as
mrpt::maps::CBeaconobjects.
When invoking
CBeaconMap::insertObservation(), landmarks will be extracted and fused into the map. The only currently supported observation type is mrpt::obs::CObservationBeaconRanges. See insertionOptions and likelihoodOptions for parameters used when creating and fusing beacon landmarks.
Use “TInsertionOptions::insertAsMonteCarlo” to select between 2 different behaviors:
Initial PDF of beacons: MonteCarlo, after convergence, pass to Gaussians; or
Initial PDF of beacons: SOG, after convergence, a single Gaussian.
Refer to the papers: []
See also
Public Types
Public Functions
-
CBeaconMap()
Constructor
-
void resize(size_t N)
Resize the number of SOG modes
-
inline virtual std::string asString() const override
Returns a short description of the map.
-
inline const_iterator begin() const
-
inline const_iterator end() const
-
virtual float compute3DMatchingRatio(const mrpt::maps::CMetricMap *otherMap, const mrpt::poses::CPose3D &otherMapPose, const TMatchingRatioParams ¶ms) const override
-
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.
- Parameters:
file – The name of the file to save the script to.
style – The MATLAB-like string for the style of the lines (see ‘help plot’ in MATLAB for possibilities)
stdCount – The ellipsoids will be drawn from the center to a given confidence interval in [0,1], e.g. 2 sigmas=0.95 (default is 2std = 0.95 confidence intervals)
- Returns:
Returns false if any error occurred, true elsewere.
-
size_t size() const
Returns the stored landmarks count.
-
virtual void determineMatching2D(const mrpt::maps::CMetricMap *otherMap, const mrpt::poses::CPose2D &otherMapPose, mrpt::tfest::TMatchingPairList &correspondences, const TMatchingParams ¶ms, TMatchingExtraResults &extraResults) const override
-
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, the landmarks’ descriptor is used to find correspondences, then inconsistent ones removed by looking at their 3D poses.
- Parameters:
otherMap – [IN] The other map.
correspondences – [OUT] The matched pairs between maps.
correspondencesRatio – [OUT] This is NumberOfMatchings / NumberOfLandmarksInTheAnotherMap
otherCorrespondences – [OUT] Will be returned with a vector containing “true” for the indexes of the other map’s landmarks with a correspondence.
-
void changeCoordinatesReference(const mrpt::poses::CPose3D &newOrg)
Changes the reference system of the map to a given 3D pose.
-
void changeCoordinatesReference(const mrpt::poses::CPose3D &newOrg, const mrpt::maps::CBeaconMap *otherMap)
Changes the reference system of the map “otherMap” and save the result in “this” map.
-
virtual bool isEmpty() const override
Returns true if the map is empty/no observation has been inserted.
-
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.
- Parameters:
in_robotPose – This robot pose is used to simulate the ranges to each beacon.
in_sensorLocationOnRobot – The 3D position of the sensor on the robot
out_Observations – The results will be stored here. NOTICE that the fields “CObservationBeaconRanges::minSensorDistance”,”CObservationBeaconRanges::maxSensorDistance” and “CObservationBeaconRanges::stdError” MUST BE FILLED OUT before calling this function. An observation will be generated for each beacon in the map, but notice that some of them may be missed if out of the sensor maximum range.
-
virtual void saveMetricMapRepresentationToFile(const std::string &filNamePrefix) const override
This virtual method saves the map to a file “filNamePrefix”+< some_file_extension >, as an image or in any other applicable way (Notice that other methods to save the map may be implemented in classes implementing this virtual interface). In the case of this class, these files are generated:
”filNamePrefix”+”_3D.m”: A script for MATLAB for drawing landmarks as 3D ellipses.
”filNamePrefix”+”_3D.3DScene”: A 3D scene with a “ground plane
grid” and the set of ellipsoids in 3D.
”filNamePrefix”+”_covs.m”: A textual representation (see saveToTextFile)
-
void saveToTextFile(const std::string &fil) const
Save a text file with a row per beacon, containing this 11 elements:
X Y Z: Mean values
VX VY VZ: Variances of each dimension (C11, C22, C33)
DET2D DET3D: Determinant of the 2D and 3D covariance matrixes.
C12, C13, C23: Cross covariances
-
virtual void getVisualizationInto(mrpt::viz::CSetOfObjects &outObj) const override
Returns a 3D object representing the map.
Public Members
-
mrpt::maps::CBeaconMap::TLikelihoodOptions likelihoodOptions
-
mrpt::maps::CBeaconMap::TInsertionOptions insertionOptions
-
mrpt::maps::CBeaconMap::TInsertionOptions insertionOpts
Observations insertion options
-
mrpt::maps::CBeaconMap::TLikelihoodOptions likelihoodOpts
Probabilistic observation likelihood options
Protected Functions
-
void internal_clear() override
-
bool internal_insertObservation(const mrpt::obs::CObservation &obs, const std::optional<const mrpt::poses::CPose3D> &robotPose) override
-
double internal_computeObservationLikelihood(const mrpt::obs::CObservation &obs, const mrpt::poses::CPose3D &takenFrom) const override
Protected Attributes
-
TSequenceBeacons m_beacons
The individual beacons
-
struct TInsertionOptions : public mrpt::config::CLoadableOptions
This struct contains data for choosing the method by which new beacons are inserted in the map.
Public Functions
-
virtual void loadFromConfigFile(const mrpt::config::CConfigFileBase &source, const std::string §ion) override
Initialization of default parameters
-
virtual void dumpToTextStream(std::ostream &out) const override
Public Members
-
bool insertAsMonteCarlo = {true}
Insert a new beacon as a set of montecarlo samples (default=true), or, if false, as a sum of gaussians (see mrpt::maps::CBeacon).
See also
-
double maxElevation_deg = {0}
Minimum and maximum elevation angles (in degrees) for inserting new beacons at the first observation: the default values (both 0), makes the beacons to be in the same horizontal plane that the sensors, that is, 2D SLAM - the min/max values are -90/90.
-
double minElevation_deg = {0}
-
unsigned int MC_numSamplesPerMeter = {1000}
Number of particles per meter of range, i.e. per meter of the “radius of the ring”.
-
float MC_maxStdToGauss = {0.4f}
The threshold for the maximum std (X,Y,and Z) before colapsing the particles into a Gaussian PDF (default=0.4).
-
double MC_thresholdNegligible = {5}
Threshold for the maximum difference from the maximun (log) weight in the set of samples for erasing a given sample (default=5).
-
bool MC_performResampling = {false}
If set to false (default), the samples will be generated the first time a beacon is observed, and their weights just updated subsequently - if set to “true”, fewer samples will be required since the particles will be resamples when necessary, and a small “noise” will be added to avoid depletion.
-
float MC_afterResamplingNoise = {0.01f}
The std.dev. of the Gaussian noise to be added to each sample after resampling, only if MC_performResampling=true.
-
float SOG_thresholdNegligible = {20.0f}
Threshold for the maximum difference from the maximun (log) weight in the SOG for erasing a given mode (default=20).
-
float SOG_maxDistBetweenGaussians = {1.0f}
A parameter for initializing 2D/3D SOGs
-
float SOG_separationConstant = {3.0f}
Constant used to compute the std. dev. int the tangent direction when creating the Gaussians.
-
virtual void loadFromConfigFile(const mrpt::config::CConfigFileBase &source, const std::string §ion) override
-
struct TLikelihoodOptions : public mrpt::config::CLoadableOptions
With this struct options are provided to the likelihood computations
Public Functions
-
virtual void loadFromConfigFile(const mrpt::config::CConfigFileBase &source, const std::string §ion) override
-
virtual void dumpToTextStream(std::ostream &out) const override
Public Members
-
double rangeStd = {0.08}
The standard deviation used for Beacon ranges likelihood (default=0.08m).
-
virtual void loadFromConfigFile(const mrpt::config::CConfigFileBase &source, const std::string §ion) override