21 class vtkStructuredGrid;
28 #if defined(MRPT_IS_X86_AMD64)
45 #if defined(MRPT_IS_X86_AMD64)
96 double x_min = -2,
double x_max = 2,
double y_min = -2,
97 double y_max = 2,
double z_min = -2,
double z_max = 2,
98 double voxel_size = 0.5,
bool call_initialize_now =
true);
101 void clear()
override;
155 double new_x_min,
double new_x_max,
double new_y_min,
double new_y_max,
156 double new_z_min,
double new_z_max,
158 double additionalMarginMeters = 2.0)
override;
164 const double x_min,
const double x_max,
const double y_min,
165 const double y_max,
const double z_min,
const double z_max,
166 const double resolution_xy,
const double resolution_z = -1.0,
174 using Ptr = std::shared_ptr<ConnectivityDescriptor>;
187 size_t icx,
size_t icy,
size_t icz,
189 size_t jcx,
size_t jcy,
size_t jcz,
192 double& out_edge_information) = 0;
211 const double sensorReading,
213 const double sensorVariance,
221 const bool update_map);
230 vtkStructuredGrid* output,
273 void evalJacobian(
double& dr_dx_i,
double& dr_dx_j)
const override;
#define DEFINE_SERIALIZABLE(class_name)
This declaration must be inserted in all CSerializable classes definition, within the class declarati...
This class allows loading and storing values and vectors of different types from a configuration text...
This is a virtual base class for sets of options than can be loaded from and/or saved to configuratio...
A 3D rectangular grid of dynamic size which stores any kind of data at each voxel.
Sparse solver for GMRF (Gaussian Markov Random Fields) graphical models.
CRandomFieldGridMap3D represents a 3D regular grid where each voxel is associated one real-valued pro...
std::vector< std::deque< TObservationGMRF > > m_mrf_factors_activeObs
Vector with the active observations and their respective Information, for each map cell.
bool insertIndividualReading(const double sensorReading, const double sensorVariance, const mrpt::math::TPoint3D &point, const TVoxelInterpolationMethod method, const bool update_map)
Direct update of the map with a reading in a given position of the map.
void updateMapEstimation()
Run the method-specific procedure required to ensure that the mean & variances are up-to-date with al...
static bool ENABLE_GMRF_PROFILER
[default:false] Enables a profiler to show a performance report at application end.
TVoxelInterpolationMethod
std::deque< TPriorFactorGMRF > m_mrf_factors_priors
Vector with the precomputed priors for each GMRF model.
TInsertionOptions insertionOptions
ConnectivityDescriptor::Ptr m_gmrf_connectivity
Empty: default.
CRandomFieldGridMap3D(double x_min=-2, double x_max=2, double y_min=-2, double y_max=2, double z_min=-2, double z_max=2, double voxel_size=0.5, bool call_initialize_now=true)
Constructor.
virtual void setSize(const double x_min, const double x_max, const double y_min, const double y_max, const double z_min, const double z_max, const double resolution_xy, const double resolution_z=-1.0, const TRandomFieldVoxel *fill_value=nullptr) override
Changes the size of the grid, erasing previous contents.If resolution_z<0, the same resolution will b...
void internal_initialize(bool erase_prev_contents=true)
Internal: called called after each change of resolution, size, etc.
void clear() override
Erases all added observations and start again with an empty gridmap.
mrpt::graphs::ScalarFactorGraph m_gmrf
bool saveAsVtkStructuredGrid(const std::string &fil) const
Save the current estimated grid to a VTK file (.vts) as a "structured grid".
virtual void resize(double new_x_min, double new_x_max, double new_y_min, double new_y_max, double new_z_min, double new_z_max, const TRandomFieldVoxel &defaultValueNewvoxels, double additionalMarginMeters=2.0) override
Changes the size of the grid, maintaining previous contents.
bool saveAsCSV(const std::string &filName_mean, const std::string &filName_stddev=std::string()) const
Save the current estimated mean values to a CSV file (compatible with Paraview) with fields x y z mea...
void setVoxelsConnectivity(const ConnectivityDescriptor::Ptr &new_connectivity_descriptor)
Sets a custom object to define the connectivity between voxels.
void getAsVtkStructuredGrid(vtkStructuredGrid *output, const std::string &label_mean=std::string("mean"), const std::string &label_stddev=std::string("stddev")) const
Returns the 3D grid contents as an VTK grid.
The virtual base class which provides a unified interface for all persistent objects in MRPT.
Versatile class for consistent logging and management of output messages.
GLsizei const GLchar ** string
GLsizei GLsizei GLchar * source
Simple, scalar (1-dim) constraint (edge) for a GMRF.
Simple, scalar (1-dim) constraint (edge) for a GMRF.
Base class for user-supplied objects capable of describing voxels connectivity, used to build prior f...
virtual bool getEdgeInformation(const CRandomFieldGridMap3D *parent, size_t icx, size_t icy, size_t icz, size_t jcx, size_t jcy, size_t jcz, double &out_edge_information)=0
Implement the check of whether node i=(icx,icy,icz) is connected with node j=(jcx,...
virtual ~ConnectivityDescriptor()
std::shared_ptr< ConnectivityDescriptor > Ptr
Parameters common to any derived class.
void dumpToTextStream(std::ostream &out) const
See utils::CLoadableOptions.
void loadFromConfigFile(const mrpt::config::CConfigFileBase &source, const std::string §ion)
See utils::CLoadableOptions.
TInsertionOptions()
Default values loader.
bool GMRF_skip_variance
(Default:false) Skip the computation of the variance, just compute the mean
double GMRF_lambdaPrior
The information (Lambda) of fixed map constraints.
void evalJacobian(double &dr_dx) const override
Returns the derivative of the residual wrt the node value.
double obsValue
Observation value.
double evaluateResidual() const override
Return the residual/error of this observation.
TObservationGMRF(CRandomFieldGridMap3D &parent)
double getInformation() const override
Return the inverse of the variance of this constraint.
CRandomFieldGridMap3D * m_parent
double Lambda
"Information" of the observation (=inverse of the variance)
double Lambda
"Information" of the observation (=inverse of the variance)
CRandomFieldGridMap3D * m_parent
double evaluateResidual() const override
Return the residual/error of this observation.
TPriorFactorGMRF(CRandomFieldGridMap3D &parent)
void evalJacobian(double &dr_dx_i, double &dr_dx_j) const override
Returns the derivative of the residual wrt the node values.
double getInformation() const override
Return the inverse of the variance of this constraint.
The contents of each voxel in a CRandomFieldGridMap3D map.
double mean_value
Mean and sigma (standard deviation) estimated values for the voxel.
TRandomFieldVoxel(double _mean_value=.0, double _stddev_value=.0)
Constructor.