21 class vtkStructuredGrid;
30 #if defined(MRPT_IS_X86_AMD64) // Pragma defined to ensure no structure 47 #if defined(MRPT_IS_X86_AMD64) 81 public mrpt::utils::COutputLogger
98 double x_min = -2,
double x_max = 2,
double y_min = -2,
99 double y_max = 2,
double z_min = -2,
double z_max = 2,
100 double voxel_size = 0.5,
bool call_initialize_now =
true);
103 void clear()
override;
157 double new_x_min,
double new_x_max,
double new_y_min,
double new_y_max,
158 double new_z_min,
double new_z_max,
160 double additionalMarginMeters = 2.0)
override;
166 const double x_min,
const double x_max,
const double y_min,
167 const double y_max,
const double z_min,
const double z_max,
168 const double resolution_xy,
const double resolution_z = -1.0,
176 using Ptr = std::shared_ptr<ConnectivityDescriptor>;
189 size_t icx,
size_t icy,
size_t icz,
191 size_t jcx,
size_t jcy,
size_t jcz,
194 double& out_edge_information) = 0;
213 const double sensorReading,
215 const double sensorVariance,
223 const bool update_map);
232 vtkStructuredGrid* output,
275 void evalJacobian(
double& dr_dx_i,
double& dr_dx_j)
const override;
bool GMRF_skip_variance
(Default:false) Skip the computation of the variance, just compute the mean
Simple, scalar (1-dim) constraint (edge) for a GMRF.
void dumpToTextStream(mrpt::utils::CStream &out) const
See utils::CLoadableOptions.
TObservationGMRF(CRandomFieldGridMap3D &parent)
mrpt::graphs::ScalarFactorGraph m_gmrf
The virtual base class which provides a unified interface for all persistent objects in MRPT...
The contents of each voxel in a CRandomFieldGridMap3D map.
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,jcy,jcy).
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.
void internal_initialize(bool erase_prev_contents=true)
Internal: called called after each change of resolution, size, etc.
double getInformation() const override
Return the inverse of the variance of this constraint.
double evaluateResidual() const override
Return the residual/error of this observation.
double getInformation() const override
Return the inverse of the variance of this constraint.
A 3D rectangular grid of dynamic size which stores any kind of data at each voxel.
void setVoxelsConnectivity(const ConnectivityDescriptor::Ptr &new_connectivity_descriptor)
Sets a custom object to define the connectivity between voxels.
This class allows loading and storing values and vectors of different types from a configuration text...
void loadFromConfigFile(const mrpt::utils::CConfigFileBase &source, const std::string §ion)
See utils::CLoadableOptions.
double evaluateResidual() const override
Return the residual/error of this observation.
This base class is used to provide a unified interface to files,memory buffers,..Please see the deriv...
double Lambda
"Information" of the observation (=inverse of the variance)
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.
std::vector< std::deque< TObservationGMRF > > m_mrf_factors_activeObs
Vector with the active observations and their respective Information, for each map cell...
double Lambda
"Information" of the observation (=inverse of the variance)
void clear() override
Erases all added observations and start again with an empty gridmap.
virtual ~ConnectivityDescriptor()
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.
ConnectivityDescriptor::Ptr m_gmrf_connectivity
Empty: default.
GLsizei const GLchar ** string
double mean_value
Mean and sigma (standard deviation) estimated values for the voxel.
TInsertionOptions()
Default values loader.
double obsValue
Observation value.
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...
This is the global namespace for all Mobile Robot Programming Toolkit (MRPT) libraries.
#define DEFINE_SERIALIZABLE(class_name)
This declaration must be inserted in all CSerializable classes definition, within the class declarati...
CRandomFieldGridMap3D represents a 3D regular grid where each voxel is associated one real-valued pro...
utils::CDynamicGrid3D< TRandomFieldVoxel > BASE
TVoxelInterpolationMethod
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.
bool saveAsVtkStructuredGrid(const std::string &fil) const
Save the current estimated grid to a VTK file (.vts) as a "structured grid".
GLsizei GLsizei GLchar * source
Parameters common to any derived class.
CRandomFieldGridMap3D * m_parent
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...
Simple, scalar (1-dim) constraint (edge) for a GMRF.
TPriorFactorGMRF(CRandomFieldGridMap3D &parent)
std::shared_ptr< ConnectivityDescriptor > Ptr
CRandomFieldGridMap3D * m_parent
void evalJacobian(double &dr_dx_i, double &dr_dx_j) const override
Returns the derivative of the residual wrt the node values.
static bool ENABLE_GMRF_PROFILER
[default:false] Enables a profiler to show a performance report at application end.
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...
std::deque< TPriorFactorGMRF > m_mrf_factors_priors
Vector with the precomputed priors for each GMRF model.
This is a virtual base class for sets of options than can be loaded from and/or saved to configuratio...
TInsertionOptions insertionOptions
Base class for user-supplied objects capable of describing voxels connectivity, used to build prior f...
TRandomFieldVoxel(double _mean_value=.0, double _stddev_value=.0)
Constructor.
Sparse solver for GMRF (Gaussian Markov Random Fields) graphical models.