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: // 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 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<CObject> Ptr; typedef std::shared_ptr<const CObject> ConstPtr; 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 static const mrpt::rtti::TRuntimeClassId& GetRuntimeClassIdStatic(); 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;
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 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()