Go to the documentation of this file.
9 #ifndef CMultiMetricMapPDF_H
10 #define CMultiMetricMapPDF_H
63 mrpt::bayes::CParticleFilterData<CRBPFParticleData>::CParticleList>,
65 CRBPFParticleData, CMultiMetricMapPDF,
66 mrpt::bayes::particle_storage_mode::POINTER>
121 std::ostream& out)
const override;
217 void getPath(
size_t i, std::deque<math::TPose3D>& out_path)
const;
256 const size_t i,
bool& pose_is_valid)
const override;
275 const size_t particleIndexForMap,
bool insertObservation(mrpt::obs::CSensoryFrame &sf)
Insert an observation to the map, at each particle's pose and to each particle's metric map.
std::deque< CParticleData > CParticleList
Use this type to refer to the list of particles m_particles.
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.
void saveCurrentPathEstimationToTextFile(const std::string &fil)
A logging utility: saves the current path estimation for each particle in a text file (a row per part...
int pfOptimalProposal_mapSelection
[pf optimal proposal only] Only for PF algorithm=2 (Exact "pfOptimalProposal") Select the map on whic...
mrpt::slam::TKLDParams KLD_params
void PF_SLAM_implementation_custom_update_particle_with_new_pose(CParticleDataContent *particleData, const mrpt::math::TPose3D &newPose) const override
Auxiliary class used in mrpt::maps::CMultiMetricMapPDF.
The ICP algorithm configuration data.
double PF_SLAM_computeObservationLikelihoodForParticle(const mrpt::bayes::CParticleFilter::TParticleFilterOptions &PF_options, const size_t particleIndexForMap, const mrpt::obs::CSensoryFrame &observation, const mrpt::poses::CPose3D &x) const override
Evaluate the observation likelihood for one particle at a given location.
void clear(const mrpt::poses::CPose2D &initialPose)
Clear all elements of the maps, and restore all paths to a single starting pose.
Option set for KLD algorithm.
void prediction_and_update_pfAuxiliaryPFOptimal(const mrpt::obs::CActionCollection *action, const mrpt::obs::CSensoryFrame *observation, const bayes::CParticleFilter::TParticleFilterOptions &PF_options) override
Performs the particle filter prediction/update stages for the algorithm "pfAuxiliaryPFOptimal" (if no...
void getPath(size_t i, std::deque< math::TPose3D > &out_path) const
Return the path (in absolute coordinate poses) for the i'th particle.
const CMultiMetricMap * getCurrentMostLikelyMetricMap() const
Returns a pointer to the current most likely map (associated to the most likely particle)
float ICPGlobalAlign_MinQuality
[prediction stage][pf optimal proposal only] If useICPGlobalAlign_withGrid=true, this is the minimum ...
This class implements a Rao-Blackwelized Particle Filter (RBPF) approach to map building (SLAM).
mrpt::maps::CMultiMetricMap averageMap
Internal buffer for the averaged map.
Declares a class for storing a collection of robot actions.
This is the global namespace for all Mobile Robot Programming Toolkit (MRPT) libraries.
void getEstimatedPosePDFAtTime(size_t timeStep, mrpt::poses::CPose3DPDFParticles &out_estimation) const
Returns the estimate of the robot pose as a particles PDF for the instant of time "timeStep",...
std::deque< mrpt::math::TPose3D > robotPath
mrpt::maps::CSimpleMap SFs
The SFs and their corresponding pose estimations.
GLsizei GLsizei GLchar * source
A set of TMetricMapInitializer structures, passed to the constructor CMultiMetricMap::CMultiMetricMap...
bool PF_SLAM_implementation_skipRobotMovement() const override
Do not move the particles until the map is populated.
Declares a class for storing a "sensory frame", a set of "observations" taken by the robot approximat...
CRBPFParticleData CParticleDataContent
This is the type inside the corresponding CParticleData class.
mrpt::slam::CICP::TConfigParams icp_params
ICP parameters, used only when "PF_algorithm=2" in the particle filter.
This class allows loading and storing values and vectors of different types from a configuration text...
A class used to store a 2D pose, including the 2D coordinate point and a heading (phi) angle.
This class stores any customizable set of metric maps.
COccupancyGridMap2D::TLikelihoodOptions update_gridMapLikelihoodOptions
[update stage] If the likelihood is computed through the occupancy grid map, then this structure is p...
A class used to store a 3D pose (a 3D translation + a rotation in 3D).
Declares a class that represents a Rao-Blackwellized set of particles for solving the SLAM problem (T...
double getCurrentJointEntropy()
Returns the joint entropy estimation over paths and maps, acording to "Information Gain-based Explora...
size_t size() const
Returns the count of pairs (pose,sensory data)
This is a virtual base class for sets of options than can be loaded from and/or saved to configuratio...
void getEstimatedPosePDF(mrpt::poses::CPose3DPDFParticles &out_estimation) const
Returns the current estimate of the robot pose, as a particles PDF.
The virtual base class which provides a unified interface for all persistent objects in MRPT.
A set of common data shared by PF implementations for both SLAM and localization.
This template class declares the array of particles and its internal data, managing some memory-relat...
const CMultiMetricMap * getAveragedMetricMapEstimation()
Returns the weighted averaged map based on the current best estimation.
Lightweight 3D pose (three spatial coordinates, plus three angular coordinates).
Declares a class that represents a Probability Density function (PDF) of a 3D pose.
void dumpToTextStream(std::ostream &out) const override
This method should clearly display all the contents of the structure in textual form,...
CMultiMetricMap mapTillNow
mrpt::math::TPose3D getLastPose(const size_t i, bool &pose_is_valid) const override
Return the last robot pose in the i'th particle; is_valid_pose will be false if there is no such last...
#define DEFINE_SERIALIZABLE(class_name)
This declaration must be inserted in all CSerializable classes definition, within the class declarati...
TPredictionParams()
Default settings method.
This class stores a sequence of <Probabilistic Pose,SensoryFrame> pairs, thus a "metric map" can be t...
double getCurrentEntropyOfPaths()
Returns the current entropy of paths, computed as the average entropy of poses along the path,...
The struct for passing extra simulation parameters to the prediction/update stage when running a part...
GLsizei const GLchar ** string
With this struct options are provided to the observation likelihood computation process.
void prediction_and_update_pfStandardProposal(const mrpt::obs::CActionCollection *action, const mrpt::obs::CSensoryFrame *observation, const bayes::CParticleFilter::TParticleFilterOptions &PF_options) override
Performs the particle filter prediction/update stages for the algorithm "pfStandardProposal" (if not ...
mrpt::maps::CMultiMetricMapPDF::TPredictionParams options
A curiously recurring template pattern (CRTP) approach to providing the basic functionality of any CP...
void rebuildAverageMap()
Rebuild the "expected" grid map.
bool PF_SLAM_implementation_doWeHaveValidObservations(const CParticleList &particles, const mrpt::obs::CSensoryFrame *sf) const override
void updateSensoryFrameSequence()
Update the poses estimation of the member "SFs" according to the current path belief.
void prediction_and_update_pfAuxiliaryPFStandard(const mrpt::obs::CActionCollection *action, const mrpt::obs::CSensoryFrame *observation, const bayes::CParticleFilter::TParticleFilterOptions &PF_options) override
Performs the particle filter prediction/update stages for the algorithm "pfAuxiliaryPFStandard" (if n...
CRBPFParticleData(const TSetOfMetricMapInitializers *mapsInitializers=nullptr)
void prediction_and_update_pfOptimalProposal(const mrpt::obs::CActionCollection *action, const mrpt::obs::CSensoryFrame *observation, const bayes::CParticleFilter::TParticleFilterOptions &PF_options) override
Performs the particle filter prediction/update stages for the algorithm "pfOptimalProposal" (if not i...
The configuration of a particle filter.
size_t getNumberOfObservationsInSimplemap() const
Get the number of CSensoryFrame inserted into the internal member SFs.
float newInfoIndex
An index [0,1] measuring how much information an observation aports to the map (Typ.
CMultiMetricMapPDF(const bayes::CParticleFilter::TParticleFilterOptions &opts=bayes::CParticleFilter::TParticleFilterOptions(), const mrpt::maps::TSetOfMetricMapInitializers *mapsInitializers=nullptr, const TPredictionParams *predictionOptions=nullptr)
Constructor.
std::vector< uint32_t > SF2robotPath
A mapping between indexes in the SFs to indexes in the robot paths from particles.
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 | |