Go to the documentation of this file.
10 #ifndef CRandomFieldGridMap2D_H
11 #define CRandomFieldGridMap2D_H
28 class COccupancyGridMap2D;
33 #if defined(MRPT_IS_X86_AMD64)
92 #if defined(MRPT_IS_X86_AMD64)
203 double x_max = 2,
double y_min = -2,
double y_max = 2,
204 double resolution = 0.1);
213 virtual bool isEmpty()
const override;
320 double new_x_min,
double new_x_max,
double new_y_min,
double new_y_max,
322 double additionalMarginMeters = 1.0f)
override;
332 const double x_min,
const double x_max,
const double y_min,
333 const double y_max,
const double resolution,
341 using Ptr = std::shared_ptr<ConnectivityDescriptor>;
355 size_t icx,
size_t icy,
357 size_t jcx,
size_t jcy,
360 double& out_edge_information) = 0;
413 const double sensorReading,
418 const bool update_map =
true,
421 const bool time_invariant =
true,
425 const double reading_stddev = .0);
441 double& out_predict_response,
443 double& out_predict_response_variance,
446 bool do_sensor_normalization,
561 void evalJacobian(
double& dr_dx_i,
double& dr_dx_j)
const override;
611 const bool update_map,
const bool time_invariant,
612 const double reading_information);
643 size_t cxo_max,
size_t cyo_min,
size_t cyo_max,
const size_t seed_cxo,
644 const size_t seed_cyo,
const size_t objective_cxo,
645 const size_t objective_cyo);
double updated_std
[Dynamic maps only] The std cell value that was updated (to be used in the Forgetting_curve
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.
double Lambda
"Information" of the observation (=inverse of the variance)
virtual void getAs3DObject(mrpt::opengl::CSetOfObjects::Ptr &outObj) const override
Returns a 3D object representing the map (mean)
void recoverMeanAndCov() const
In the KF2 implementation, takes the auxiliary matrices and from them update the cells' mean and std ...
virtual bool getEdgeInformation(const CRandomFieldGridMap2D *parent, size_t icx, size_t icy, size_t jcx, size_t jcy, double &out_edge_information)=0
Implement the check of whether node i=(icx,icy) is connected with node j=(jcx,jcy).
void updateMapEstimation()
Run the method-specific procedure required to ensure that the mean & variances are up-to-date with al...
double evaluateResidual() const override
Return the residual/error of this observation.
@ mrKalmanFilter
"Brute-force" Kalman filter (see discussion in mrpt::maps::CRandomFieldGridMap2D)
virtual void saveMetricMapRepresentationToFile(const std::string &filNamePrefix) const override
The implementation in this class just calls all the corresponding method of the contained metric maps...
TMapRepresentation m_mapType
The map representation type of this map, as passed in the constructor.
ConnectivityDescriptor::Ptr m_gmrf_connectivity
Empty: default.
bool GMRF_skip_variance
(Default:false) Skip the computation of the variance, just compute the mean
std::shared_ptr< ConnectivityDescriptor > Ptr
#define MRPT_ENUM_TYPE_END()
bool GMRF_use_occupancy_information
whether to use information of an occupancy_gridmap map for building the GMRF
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...
unsigned __int16 uint16_t
Simple, scalar (1-dim) constraint (edge) for a GMRF.
mrpt::math::CMatrixD m_stackedCov
The compressed band diagonal matrix for the KF2 implementation.
void evalJacobian(double &dr_dx_i, double &dr_dx_j) const override
Returns the derivative of the residual wrt the node values.
@ 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.
virtual ~ConnectivityDescriptor()
double Lambda
"Information" of the observation (=inverse of the variance)
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=nullptr)
Changes the size of the grid, erasing previous contents.
CRandomFieldGridMap2D * m_parent
double obsValue
Observation value.
float cell2float(const TRandomFieldCell &c) const override
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...
double m_average_normreadings_var
virtual void getAsBitmapFile(mrpt::img::CImage &out_img) const
Returns an image just as described in saveAsBitmapFile.
mrpt::system::TTimeStamp now()
A shortcut for system::getCurrentTime.
float R_min
Limits for normalization of sensor readings.
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.
size_t GMRF_gridmap_image_cx
Pixel coordinates of the origin for the occupancy_gridmap.
void insertIndividualReading(const double sensorReading, const mrpt::math::TPoint2D &point, const bool update_map=true, const bool time_invariant=true, const double reading_stddev=.0)
Direct update of the map with a reading in a given position of the map, using the appropriate method ...
double evaluateResidual() const override
Return the residual/error of this observation.
This is the global namespace for all Mobile Robot Programming Toolkit (MRPT) libraries.
float compute3DMatchingRatio(const mrpt::maps::CMetricMap *otherMap, const mrpt::poses::CPose3D &otherMapPose, const TMatchingRatioParams ¶ms) const override
See docs in base class: in this class this always returns 0.
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).
#define MRPT_ENUM_TYPE_BEGIN(_ENUM_TYPE_WITH_NS)
CRandomFieldGridMap2D * m_parent
std::deque< TPriorFactorGMRF > m_mrf_factors_priors
Vector with the precomputed priors for each GMRF model.
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
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
uint64_t TTimeStamp
A system independent time type, it holds the the number of 100-nanosecond intervals since January 1,...
GLsizei GLsizei GLchar * source
TPriorFactorGMRF(CRandomFieldGridMap2D &parent)
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.
double getInformation() const override
Return the inverse of the variance of this constraint.
virtual void internal_clear() override
Erase all the contents of the map.
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...
double GMRF_lambdaObs
The initial information (Lambda) of each observation (this information will decrease with time)
Declares a virtual base class for all metric maps storage classes.
double GMRF_gridmap_image_res
occupancy_gridmap resolution: size of each pixel (m)
double gmrf_mean
[GMRF only] The mean value of this cell
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.
TInsertionOptionsCommon()
Default values loader.
double computeConfidenceCellValue_DM_DMV(const TRandomFieldCell *cell) const
Computes the confidence of the cell concentration (alpha)
void enableProfiler(bool enable=true)
This class allows loading and storing values and vectors of different types from a configuration text...
bool time_invariant
whether the observation will lose weight (lambda) as time goes on (default false)
std::vector< float > m_DM_gaussWindow
double kf_std
[KF-methods only] The standard deviation value of this cell
bool isProfilerEnabled() const
A class used to store a 3D pose (a 3D translation + a rotation in 3D).
void evalJacobian(double &dr_dx) const override
Returns the derivative of the residual wrt the node value.
TMapRepresentation
The type of map representation to be used, see CRandomFieldGridMap2D for a discussion.
double computeVarCellValue_DM_DMV(const TRandomFieldCell *cell) const
Computes the estimated variance of the cell concentration, or the overall average variance if it has ...
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).
size_t GMRF_gridmap_image_cy
Pixel coordinates of the origin for the occupancy_gridmap.
double dm_mean_w
[Kernel-methods only] The cumulative weights (concentration = alpha
@ mrKernelDM
Gaussian kernel-based estimator (see discussion in mrpt::maps::CRandomFieldGridMap2D)
void insertObservation_KF2(double normReading, const mrpt::math::TPoint2D &point)
The implementation of "insertObservation" for the Efficient Kalman Filter map model.
void setMinLoggingLevel(const VerbosityLevel level)
Set the minimum logging level for which the incoming logs are going to be taken into account.
void enableProfiler(bool enable=true)
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.
double m_average_normreadings_mean
std::shared_ptr< CSetOfObjects > Ptr
#define DEFINE_VIRTUAL_SERIALIZABLE(class_name)
This declaration must be inserted in virtual CSerializable classes definition:
void insertObservation_GMRF(double normReading, const mrpt::math::TPoint2D &point, const bool update_map, const bool time_invariant, const double reading_information)
The implementation of "insertObservation" for the Gaussian Markov Random Field map model.
mrpt::graphs::ScalarFactorGraph m_gmrf
virtual ~CRandomFieldGridMap2D()
Destructor.
MRPT_FILL_ENUM_MEMBER(mrpt::maps::CRandomFieldGridMap2D::TMapRepresentation, mrKernelDM)
A class for storing images as grayscale or RGB bitmaps.
Versatile class for consistent logging and management of output messages.
std::vector< std::list< TObservationGMRF > > m_mrf_factors_activeObs
Vector with the active observations and their respective Information.
mrpt::system::TTimeStamp last_updated
[Dynamic maps only] The timestamp of the last time the cell was updated
virtual void saveAsBitmapFile(const std::string &filName) const
Save the current map as a graphical file (BMP,PNG,...).
void updateMapEstimation_GMRF()
solves the minimum quadratic system to determine the new concentration of each cell
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...
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).
A 2D grid of dynamic size which stores any kind of data at each cell.
void enableVerbose(bool enable_verbose)
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...
@ 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 internal_dumpToTextStream_common(std::ostream &out) const
See utils::CLoadableOptions.
TMapRepresentation getMapType()
Return the type of the random-field grid map, according to parameters passed on construction.
Sparse solver for GMRF (Gaussian Markov Random Fields) graphical models.
@ mrAchim
Another alias for "mrKernelDM", for backwards compatibility (see discussion in mrpt::maps::CRandomFie...
A class for storing an occupancy grid map.
double computeMeanCellValue_DM_DMV(const TRandomFieldCell *cell) const
Computes the average cell concentration, or the overall average value if it has never been observed
double GMRF_saturate_min
(Default:-inf,+inf) Saturate the estimated mean in these limits
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.
bool isProfilerEnabled() const
This class is a "CSerializable" wrapper for "CMatrixTemplateNumeric<double>".
void insertObservation_KF(double normReading, const mrpt::math::TPoint2D &point)
The implementation of "insertObservation" for the (whole) Kalman Filter map model.
Base class for user-supplied objects capable of describing cells connectivity, used to build prior fa...
GLsizei const GLchar ** string
double GMRF_lambdaPrior
The information (Lambda) of fixed map constraints.
The contents of each cell in a CRandomFieldGridMap2D map.
TObservationGMRF(CRandomFieldGridMap2D &parent)
VerbosityLevel getMinLoggingLevel() const
void clear()
Erase all the contents of the map.
TInsertionOptionsCommon * m_insertOptions_common
Common options to all random-field grid maps: pointer that is set to the derived-class instance of "i...
virtual bool isEmpty() const override
Returns true if the map is empty/no observation has been inserted (in this class it always return fal...
mrpt::math::CMatrixD m_cov
The whole covariance matrix, used for the Kalman Filter map representation.
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) override
Changes the size of the grid, maintaining previous contents.
float cutoffRadius
The cutoff radius for updating cells.
double getInformation() const override
Return the inverse of the variance of this constraint.
void setCellsConnectivity(const ConnectivityDescriptor::Ptr &new_connectivity_descriptor)
Sets a custom object to define the connectivity between cells.
std::string GMRF_gridmap_image_file
image name of the occupancy_gridmap
size_t m_average_normreadings_count
GLenum const GLfloat * params
Simple, scalar (1-dim) constraint (edge) for a GMRF.
void internal_loadFromConfigFile_common(const mrpt::config::CConfigFileBase &source, const std::string §ion)
See utils::CLoadableOptions.
float KF_defaultCellMeanValue
The default value for the mean of cells' concentration.
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 | |