Go to the documentation of this file.
10 #ifndef CRandomFieldGridMap2D_H
11 #define CRandomFieldGridMap2D_H
23 #if EIGEN_VERSION_AT_LEAST(3,1,0) // eigen 3.1+
24 #include <Eigen/SparseCore>
25 #include <Eigen/SparseCholesky>
35 #if defined(MRPT_IS_X86_AMD64)
46 kf_mean (kfmean_dm_mean),
47 kf_std (kfstd_dmmeanw),
49 last_updated(
mrpt::system::
now()),
50 updated_std (kfstd_dmmeanw)
81 #if defined(MRPT_IS_X86_AMD64)
149 double x_min = -2,
double x_max = 2,
150 double y_min = -2,
double y_max = 2,
151 double resolution = 0.1
188 void internal_loadFromConfigFile_common(
190 const std::string §ion);
232 virtual void resize(
double new_x_min,
double new_x_max,
double new_y_min,
double new_y_max,
const TRandomFieldCell& defaultValueNewCells,
double additionalMarginMeters = 1.0f )
MRPT_OVERRIDE;
235 virtual void setSize(
const double x_min,
const double x_max,
const double y_min,
const double y_max,
const double resolution,
const TRandomFieldCell * fill_value = NULL);
256 virtual void getAs3DObject ( mrpt::opengl::CSetOfObjectsPtr &meanObj, mrpt::opengl::CSetOfObjectsPtr &varObj )
const;
266 const double sensorReading,
268 const bool update_map =
true,
269 const bool time_invariant =
true
281 double &out_predict_response,
282 double &out_predict_response_variance,
283 bool do_sensor_normalization,
332 #if EIGEN_VERSION_AT_LEAST(3,1,0)
333 std::vector<Eigen::Triplet<double> > H_prior;
414 const
size_t seed_cxo,
415 const
size_t seed_cyo,
416 const
size_t objective_cxo,
417 const
size_t objective_cyo);
void recoverMeanAndCov() const
In the KF2 implementation, takes the auxiliary matrices and from them update the cells' mean and std ...
CMatrixTemplateNumeric< double > CMatrixDouble
Declares a matrix of double numbers (non serializable).
double updated_std
[Dynamic maps only] The std cell value that was updated (to be used in the Forgetting_curve
@ mrKalmanFilter
"Brute-force" Kalman filter (see discussion in mrpt::maps::CRandomFieldGridMap2D)
TMapRepresentation m_mapType
The map representation type of this map, as passed in the constructor.
double computeConfidenceCellValue_DM_DMV(const TRandomFieldCell *cell) const
Computes the confidence of the cell concentration (alpha)
bool GMRF_skip_variance
(Default:false) Skip the computation of the variance, just compute the mean
uint16_t GMRF_constraintsSize
[mrGMRF_G only] The size of the Gaussian window to impose fixed restrictions between cells.
virtual void resize(double new_x_min, double new_x_max, double new_y_min, double new_y_max, const TRandomFieldCell &defaultValueNewCells, double additionalMarginMeters=1.0f) MRPT_OVERRIDE
Changes the size of the grid, maintaining previous contents.
bool GMRF_use_occupancy_information
whether to use information of an occupancy_gridmap map for buidling the GMRF
void setMeanAndSTD(mrpt::math::CVectorDouble &out_means, mrpt::math::CVectorDouble &out_STD)
Load the mean and STD vectors of the full Kalman filter estimate (works for all KF-based methods).
mrpt::math::CMatrixD m_stackedCov
The compressed band diagonal matrix for the KF2 implementation.
@ mrKalmanApproximate
(see discussion in mrpt::maps::CRandomFieldGridMap2D)
TRandomFieldCell(double kfmean_dm_mean=1e-20, double kfstd_dmmeanw=0)
Constructor.
Column vector, like Eigen::MatrixX*, but automatically initialized to zeros since construction.
float KF_observationModelNoise
The sensor model noise (in normalized concentration units).
Parameters common to any derived class.
bool m_rfgm_run_update_upon_clear
@ mrGMRF_SD
Gaussian Markov Random Field, squared differences prior weights between 4 neighboring cells (see disc...
void updateMapEstimation_GMRF()
solves the minimum quadratic system to determine the new concentration of each cell
virtual bool isEmpty() const MRPT_OVERRIDE
Returns true if the map is empty/no observation has been inserted (in this class it always return fal...
virtual void saveAsBitmapFile(const std::string &filName) const
Save the current map as a graphical file (BMP,PNG,...).
double m_average_normreadings_var
utils::CDynamicGrid< TRandomFieldCell > BASE
mrpt::system::TTimeStamp now()
A shortcut for system::getCurrentTime.
A bidirectional version of std::map, declared as bimap<KEY,VALUE> and which actually contains two std...
bool m_rfgm_verbose
Enable verbose debug output for Random Field grid map operations (Default: false)
void clear()
Erase all the contents of the map.
Parameters for CMetricMap::compute3DMatchingRatio()
bool m_hasToRecoverMeanAndCov
Only for the KF2 implementation.
bool isEnabledVerbose() const
void getAsMatlab3DGraphScript(std::string &out_script) const
Return a large text block with a MATLAB script to plot the contents of this map.
float cell2float(const TRandomFieldCell &c) const MRPT_OVERRIDE
size_t GMRF_gridmap_image_cx
Pixel coordinates of the origin for the occupancy_gridmap.
float compute3DMatchingRatio(const mrpt::maps::CMetricMap *otherMap, const mrpt::poses::CPose3D &otherMapPose, const TMatchingRatioParams ¶ms) const MRPT_OVERRIDE
See docs in base class: in this class this always returns 0.
This is the global namespace for all Mobile Robot Programming Toolkit (MRPT) libraries.
std::vector< std::vector< TobservationGMRF > > activeObs
double computeMeanCellValue_DM_DMV(const TRandomFieldCell *cell) const
Computes the average cell concentration, or the overall average value if it has never been observed
virtual void getAsMatrix(mrpt::math::CMatrixDouble &out_mat) const
Like saveAsBitmapFile(), but returns the data in matrix form (first row in the matrix is the upper (y...
virtual CRandomFieldGridMap2D::TInsertionOptionsCommon * getCommonInsertOptions()=0
Get the part of the options common to all CRandomFieldGridMap2D classes.
float KF_covSigma
The "sigma" for the initial covariance value between cells (in meters).
bool exist_relation_between2cells(const mrpt::maps::COccupancyGridMap2D *m_Ocgridmap, size_t cxo_min, size_t cxo_max, size_t cyo_min, size_t cyo_max, const size_t seed_cxo, const size_t seed_cyo, const size_t objective_cxo, const size_t objective_cyo)
Check if two cells of the gridmap (m_map) are connected, based on the provided occupancy gridmap.
float KF_initialCellStd
The initial standard deviation of each cell's concentration (will be stored both at each cell's struc...
double kf_mean
[KF-methods only] The mean value of this cell
CRandomFieldGridMap2D(TMapRepresentation mapType=mrKernelDM, double x_min=-2, double x_max=2, double y_min=-2, double y_max=2, double resolution=0.1)
Constructor.
virtual ~CRandomFieldGridMap2D()
Destructor.
uint64_t TTimeStamp
A system independent time type, it holds the the number of 100-nanosecond intervals since January 1,...
void clear()
Calls the base CMetricMap::clear Declared here to avoid ambiguity between the two clear() in both bas...
std::string GMRF_simplemap_file
simplemap_file name of the occupancy_gridmap
double dmv_var_mean
[Kernel DM-V only] The cumulative weighted variance of this cell
void insertObservation_KF(double normReading, const mrpt::math::TPoint2D &point)
The implementation of "insertObservation" for the (whole) Kalman Filter map model.
double dm_mean
[Kernel-methods only] The cumulative weighted readings of this cell
double dm_sigma_omega
[DM/DM+V methods] The scaling parameter for the confidence "alpha" values (see the IROS 2009 paper; s...
float sigma
The sigma of the "Parzen"-kernel Gaussian.
void updateMapEstimation()
Run the method-specific procedure required to ensure that the mean & variances are up-to-date with al...
virtual void getAs3DObject(mrpt::opengl::CSetOfObjectsPtr &outObj) const MRPT_OVERRIDE
Returns a 3D object representing the map (mean)
double GMRF_lambdaObs
The initial information (Lambda) of each observation (this information will decrease with time)
static void fill(bimap< enum_t, std::string > &m_map)
Declares a virtual base class for all metric maps storage classes.
virtual void predictMeasurement(const double x, const double y, double &out_predict_response, double &out_predict_response_variance, bool do_sensor_normalization, const TGridInterpolationMethod interp_method=gimNearest)
Returns the prediction of the measurement at some (x,y) coordinates, and its certainty (in the form o...
double GMRF_gridmap_image_res
occupancy_gridmap resolution: size of each pixel (m)
double gmrf_mean
[GMRF only] The mean value of this cell
void insertObservation_KernelDM_DMV(double normReading, const mrpt::math::TPoint2D &point, bool is_DMV)
The implementation of "insertObservation" for Achim Lilienthal's map models DM & DM+V.
This base class is used to provide a unified interface to files,memory buffers,..Please see the deriv...
std::multimap< size_t, size_t > cell_interconnections
This class allows loading and storing values and vectors of different types from a configuration text...
std::vector< float > m_DM_gaussWindow
double kf_std
[KF-methods only] The standard deviation value of this cell
A class used to store a 3D pose (a 3D translation + a rotation in 3D).
TMapRepresentation
The type of map representation to be used, see CRandomFieldGridMap2D for a discussion.
virtual void getAsBitmapFile(mrpt::utils::CImage &out_img) const
Returns an image just as described in saveAsBitmapFile.
size_t GMRF_gridmap_image_cy
Pixel coordinates of the origin for the occupancy_gridmap.
#define DEFINE_SERIALIZABLE_POST_CUSTOM_BASE_LINKAGE(class_name, base_name, _LINKAGE_)
void getMeanAndCov(mrpt::math::CVectorDouble &out_means, mrpt::math::CMatrixDouble &out_cov) const
Return the mean and covariance vector of the full Kalman filter estimate (works for all KF-based meth...
double dm_mean_w
[Kernel-methods only] The cumulative weights (concentration = alpha * dm_mean / dm_mean_w + (1-alpha)...
@ mrKernelDM
Gaussian kernel-based estimator (see discussion in mrpt::maps::CRandomFieldGridMap2D)
uint16_t KF_W_size
[mrKalmanApproximate] The size of the window of neighbor cells.
double GMRF_lambdaObsLoss
The loss of information of the observations with each iteration.
virtual void saveAsMatlab3DGraph(const std::string &filName) const
Save a matlab ".m" file which represents as 3D surfaces the mean and a given confidence level for the...
virtual void saveMetricMapRepresentationToFile(const std::string &filNamePrefix) const MRPT_OVERRIDE
The implementation in this class just calls all the corresponding method of the contained metric maps...
double m_average_normreadings_mean
A 2D grid of dynamic size which stores any kind of data at each cell.
#define DEFINE_VIRTUAL_SERIALIZABLE(class_name)
This declaration must be inserted in virtual CSerializable classes definition:
@ mrGMRF_G
Gaussian Markov Random Field, Gaussian prior weights between neighboring cells up to a certain distan...
mrpt::system::TTimeStamp last_updated
[Dynamic maps only] The timestamp of the last time the cell was updated
#define DEFINE_SERIALIZABLE_PRE_CUSTOM_BASE_LINKAGE(class_name, base_name, _LINKAGE_)
This declaration must be inserted in all CSerializable classes definition, before the class declarati...
TMapRepresentation getMapType()
Return the type of the random-field grid map, according to parameters passed on construction.
void insertObservation_KF2(double normReading, const mrpt::math::TPoint2D &point)
The implementation of "insertObservation" for the Efficient Kalman Filter map model.
static bool ENABLE_GMRF_PROFILER
[default:false] Enables a profiler to show a performance report at application end.
void getMeanAndSTD(mrpt::math::CVectorDouble &out_means, mrpt::math::CVectorDouble &out_STD) const
Return the mean and STD vectors of the full Kalman filter estimate (works for all KF-based methods).
std::vector< float > gauss_val
void enableVerbose(bool enable_verbose)
double GMRF_constraintsSigma
[mrGMRF_G only] The sigma of the Gaussian window to impose fixed restrictions between cells.
@ mrKernelDMV
Double mean + variance Gaussian kernel-based estimator (see discussion in mrpt::maps::CRandomFieldGri...
CRandomFieldGridMap2D represents a 2D grid map where each cell is associated one real-valued property...
void insertObservation_GMRF(double normReading, const mrpt::math::TPoint2D &point, const bool update_map, const bool time_invariant)
The implementation of "insertObservation" for the Gaussian Markov Random Field map model.
virtual void internal_clear() MRPT_OVERRIDE
Erase all the contents of the map.
@ mrAchim
Another alias for "mrKernelDM", for backwards compatibility (see discussion in mrpt::maps::CRandomFie...
A class for storing an occupancy grid map.
This class is a "CSerializable" wrapper for "CMatrixTemplateNumeric<double>".
void insertIndividualReading(const double sensorReading, const mrpt::math::TPoint2D &point, const bool update_map=true, const bool time_invariant=true)
Direct update of the map with a reading in a given position of the map, using the appropriate method ...
double GMRF_lambdaPrior
The information (Lambda) of fixed map constraints.
The contents of each cell in a CRandomFieldGridMap2D map.
TInsertionOptionsCommon * m_insertOptions_common
Common options to all random-field grid maps: pointer that is set to the derived-class instance of "i...
mrpt::math::CMatrixD m_cov
The whole covariance matrix, used for the Kalman Filter map representation.
float cutoffRadius
The cutoff radius for updating cells.
std::vector< TRandomFieldCell > m_map
The cells.
double computeVarCellValue_DM_DMV(const TRandomFieldCell *cell) const
Computes the estimated variance of the cell concentration, or the overall average variance if it has ...
maps::CRandomFieldGridMap2D::TMapRepresentation enum_t
virtual void setSize(const double x_min, const double x_max, const double y_min, const double y_max, const double resolution, const TRandomFieldCell *fill_value=NULL)
Changes the size of the grid, erasing previous contents.
std::string GMRF_gridmap_image_file
image name of the occupancy_gridmap
#define MRPT_OVERRIDE
C++11 "override" for virtuals:
size_t m_average_normreadings_count
Only specializations of this class are defined for each enum type of interest.
float KF_defaultCellMeanValue
The default value for the mean of cells' concentration.
Page generated by Doxygen 1.8.17 for MRPT 1.4.0 SVN: at Tue Mar 3 09:15:16 UTC 2020 | | |