class mrpt::maps::CHeightGridMap2D_MRF
Overview
CHeightGridMap2D_MRF represents digital-elevation-model over a 2D area, with uncertainty, based on a Markov-Random-Field (MRF) estimator.
There are a number of methods available to build the gas grid-map, depending on the value of “TMapRepresentation maptype” passed in the constructor (see base class mrpt::maps::CRandomFieldGridMap2D).
Update the map with insertIndividualReading() or insertObservation()
New in MRPT 1.4.0
See also:
mrpt::maps::CRandomFieldGridMap2D, mrpt::maps::CMetricMap, mrpt::containers::CDynamicGrid, The application icp-slam, mrpt::maps::CMultiMetricMap
#include <mrpt/maps/CHeightGridMap2D_MRF.h> class CHeightGridMap2D_MRF: public mrpt::maps::CRandomFieldGridMap2D, public mrpt::maps::CHeightGridMap2D_Base, public mrpt::config::OptionsCapable { public: // typedefs typedef std::shared_ptr<mrpt::maps ::CHeightGridMap2D_MRF> Ptr; typedef std::shared_ptr<const mrpt::maps ::CHeightGridMap2D_MRF> ConstPtr; typedef std::unique_ptr<mrpt::maps ::CHeightGridMap2D_MRF> UniquePtr; typedef std::unique_ptr<const mrpt::maps ::CHeightGridMap2D_MRF> ConstUniquePtr; // structs struct TInsertionOptions; struct TMapDefinition; struct TMapDefinitionBase; // fields static constexpr const char* className = "mrpt::maps" "::" "CHeightGridMap2D_MRF"; static const size_t m_private_map_register_id = mrpt::maps::internal::TMetricMapTypesRegistry::Instance().doRegister("mrpt::maps::CHeightGridMap2D_MRF,dem_mrf" ,& mrpt::maps::CHeightGridMap2D_MRF ::MapDefinition,& mrpt::maps::CHeightGridMap2D_MRF ::internal_CreateFromMapDefinition); mrpt::maps::CHeightGridMap2D_MRF::TInsertionOptions insertionOptions; // construction CHeightGridMap2D_MRF( TMapRepresentation mapType = mrGMRF_SD, double x_min = -2, double x_max = 2, double y_min = -2, double y_max = 2, double resolution = 0.5, bool run_first_map_estimation_now = true ); // methods static constexpr auto getClassName(); static const mrpt::rtti::TRuntimeClassId& GetRuntimeClassIdStatic(); static std::shared_ptr<CObject> CreateObject(); template <typename... Args> static Ptr Create(Args&&... args); template <typename Alloc, typename... Args> static Ptr CreateAlloc( const Alloc& alloc, Args&&... args ); template <typename... Args> static UniquePtr CreateUnique(Args&&... args); virtual const mrpt::rtti::TRuntimeClassId* GetRuntimeClass() const; virtual mrpt::rtti::CObject* clone() const; static std::shared_ptr<mrpt::maps::TMetricMapInitializer> MapDefinition(); static std::shared_ptr<CHeightGridMap2D_MRF> CreateFromMapDefinition(const mrpt::maps::TMetricMapInitializer& def); static std::shared_ptr<mrpt::maps::CMetricMap> internal_CreateFromMapDefinition(const mrpt::maps::TMetricMapInitializer& def); virtual std::map<std::string, mrpt::config::CLoadableOptions*> optionsByName(); virtual void getVisualizationInto(mrpt::viz::CSetOfObjects& outObj) const; virtual void getAs3DObject(mrpt::viz::CSetOfObjects& meanObj, mrpt::viz::CSetOfObjects& varObj) const; virtual bool insertIndividualPoint( const double x, const double y, const double z, const CHeightGridMap2D_Base::TPointInsertParams& params = CHeightGridMap2D_Base::TPointInsertParams() ); virtual double dem_get_resolution() const; virtual size_t dem_get_size_x() const; virtual size_t dem_get_size_y() const; virtual bool dem_get_z_by_cell(size_t cx, size_t cy, double& z_out) const; virtual bool dem_get_z(const double x, const double y, double& z_out) const; virtual void dem_update_map(); virtual CRandomFieldGridMap2D::TInsertionOptionsCommon* getCommonInsertOptions(); virtual void internal_clear(); virtual bool internal_insertObservation(const mrpt::obs::CObservation& obs, const std::optional<const mrpt::poses::CPose3D>& robotPose); virtual double internal_computeObservationLikelihood(const mrpt::obs::CObservation& obs, const mrpt::poses::CPose3D& takenFrom) const; };
Inherited Members
public: // typedefs typedef std::shared_ptr<CSerializable> Ptr; typedef std::shared_ptr<const CSerializable> ConstPtr; typedef std::shared_ptr<CRandomFieldGridMap2D> Ptr; typedef std::shared_ptr<const CRandomFieldGridMap2D> ConstPtr; // structs struct TMsg; struct ConnectivityDescriptor; struct TInsertionOptionsCommon; struct TObservationGMRF; struct TPriorFactorGMRF; struct TPointInsertParams; // methods virtual const mrpt::rtti::TRuntimeClassId* GetRuntimeClass() const; virtual const mrpt::rtti::TRuntimeClassId* GetRuntimeClass() const; static const mrpt::rtti::TRuntimeClassId& GetRuntimeClassIdStatic(); Visualizable& operator = (const Visualizable&); Visualizable& operator = (Visualizable&&); virtual const mrpt::rtti::TRuntimeClassId* GetRuntimeClass() const; virtual bool isEmpty() const = 0; virtual void saveMetricMapRepresentationToFile(const std::string& filNamePrefix) const = 0; virtual std::string asString() const = 0; virtual void getVisualizationInto(mrpt::viz::CSetOfObjects& o) const = 0; COutputLogger& operator = (const COutputLogger&); COutputLogger& operator = (COutputLogger&&); virtual const mrpt::rtti::TRuntimeClassId* GetRuntimeClass() const; static const mrpt::rtti::TRuntimeClassId& GetRuntimeClassIdStatic(); virtual void getVisualizationInto(mrpt::viz::CSetOfObjects& outObj) const; virtual void getAs3DObject(mrpt::viz::CSetOfObjects& meanObj, mrpt::viz::CSetOfObjects& varObj) const; virtual bool insertIndividualPoint( const double x, const double y, const double z, const TPointInsertParams& params = TPointInsertParams() ) = 0; virtual double dem_get_resolution() const = 0; virtual size_t dem_get_size_x() const = 0; virtual size_t dem_get_size_y() const = 0; virtual bool dem_get_z_by_cell(size_t cx, size_t cy, double& z_out) const = 0; virtual bool dem_get_z(const double x, const double y, double& z_out) const = 0; virtual void dem_update_map() = 0; OptionsCapable& operator = (const OptionsCapable&); OptionsCapable& operator = (OptionsCapable&&); virtual std::map<std::string, mrpt::config::CLoadableOptions*> optionsByName() = 0;
Typedefs
typedef std::shared_ptr<mrpt::maps ::CHeightGridMap2D_MRF> Ptr
A type for the associated smart pointer.
Fields
static const size_t m_private_map_register_id = mrpt::maps::internal::TMetricMapTypesRegistry::Instance().doRegister("mrpt::maps::CHeightGridMap2D_MRF,dem_mrf" ,& mrpt::maps::CHeightGridMap2D_MRF ::MapDefinition,& mrpt::maps::CHeightGridMap2D_MRF ::internal_CreateFromMapDefinition)
ID used to initialize class registration (just ignore it)
Construction
CHeightGridMap2D_MRF( TMapRepresentation mapType = mrGMRF_SD, double x_min = -2, double x_max = 2, double y_min = -2, double y_max = 2, double resolution = 0.5, bool run_first_map_estimation_now = true )
Constructor.
Methods
virtual const mrpt::rtti::TRuntimeClassId* GetRuntimeClass() const
Returns information about the class of an object in runtime.
virtual mrpt::rtti::CObject* clone() const
Returns a deep copy (clone) of the object, indepently of its class.
static std::shared_ptr<mrpt::maps::TMetricMapInitializer> MapDefinition()
Returns default map definition initializer.
See * mrpt::maps::TMetricMapInitializer
static std::shared_ptr<CHeightGridMap2D_MRF> CreateFromMapDefinition(const mrpt::maps::TMetricMapInitializer& def)
Constructor from a map definition structure: initializes the map and * its parameters accordingly.
virtual std::map<std::string, mrpt::config::CLoadableOptions*> optionsByName()
Maps an options-group name (e.g.
“insertionOptions”) to a pointer to the corresponding, live CLoadableOptions member. Pointers remain valid as long as this is alive, and point directly to the actual option members (no copies), so writes through them (e.g. via loadFromConfigFile()) take effect immediately.
Implementations should list every CLoadableOptions member they define, INCLUDING “creationOptions” if present (so it can be discovered/exported generically); however, callers must use trySetCreationOptions(), not a direct write through this pointer, to safely modify creation options.
virtual void getVisualizationInto(mrpt::viz::CSetOfObjects& outObj) const
Returns a 3D object representing the map.
virtual void getAs3DObject(mrpt::viz::CSetOfObjects& meanObj, mrpt::viz::CSetOfObjects& varObj) const
Returns two 3D objects representing the mean and variance maps.
virtual bool insertIndividualPoint( const double x, const double y, const double z, const CHeightGridMap2D_Base::TPointInsertParams& params = CHeightGridMap2D_Base::TPointInsertParams() )
Update the DEM with one new point.
Returns:
true if updated OK, false if (x,y) is out of bounds
See also:
mrpt::maps::CMetricMap::insertObservation() for inserting higher-level objects like 2D/3D LIDAR scans
virtual bool dem_get_z_by_cell(size_t cx, size_t cy, double& z_out) const
Get cell ‘z’ by (cx,cy) cell indices.
Returns:
false if out of bounds or un-observed cell.
virtual bool dem_get_z(const double x, const double y, double& z_out) const
Get cell ‘z’ (x,y) by metric coordinates.
Returns:
false if out of bounds or un-observed cell.
virtual void dem_update_map()
Ensure that all observations are reflected in the map estimate.
virtual CRandomFieldGridMap2D::TInsertionOptionsCommon* getCommonInsertOptions()
Get the part of the options common to all CRandomFieldGridMap2D classes.
virtual void internal_clear()
Internal method called by clear()
virtual bool internal_insertObservation( const mrpt::obs::CObservation& obs, const std::optional<const mrpt::poses::CPose3D>& robotPose )
Internal method called by insertObservation()
virtual double internal_computeObservationLikelihood( const mrpt::obs::CObservation& obs, const mrpt::poses::CPose3D& takenFrom ) const
Internal method called by computeObservationLikelihood()