template class mrpt::maps::CVoxelMapBase
Overview
An mrpt CMetricMap wrapper for Bonxai ‘s VoxelMap container.
Refer to Davide Faconti’s Bonxai repository for publication and algorithm details, but in short, this is a sparse generic container for voxels, not needing redimensioning when the map grows, and with efficient insertion and update operations.
Users normally use the derived classes, not this generic base template. This base class implements all common aspects to CMetricMap that do not depend on the specific contents to be stored at each voxel.
No multi-threading protection is applied at all in the API.
See also:
CMetricMap, the example in “MRPT/mrpt_examples_cpp/maps_voxelmap_simple”,
#include <mrpt/maps/CVoxelMapBase.h> template <typename node_t> class CVoxelMapBase: public mrpt::maps::CMetricMap { public: // typedefs typedef CVoxelMapBase<node_t> myself_t; typedef node_t voxel_node_t; // structs struct Impl; // construction CVoxelMapBase(double resolution, uint8_t inner_bits = 2, uint8_t leaf_bits = 3); CVoxelMapBase(const CVoxelMapBase& o); CVoxelMapBase(CVoxelMapBase&& o); // methods CVoxelMapBase& operator = (const CVoxelMapBase&); CVoxelMapBase& operator = (CVoxelMapBase&& o); const Bonxai::VoxelGrid<node_t>& grid() const; virtual std::string asString() const; virtual void getVisualizationInto(mrpt::viz::CSetOfObjects& o) const; virtual void getAsOctoMapVoxels(mrpt::viz::COctoMapVoxels& gl_obj) const = 0; virtual void saveMetricMapRepresentationToFile(const std::string& filNamePrefix) const; }; // direct descendants template <typename voxel_node_t, typename occupancy_t = int8_t> class CVoxelMapOccupancyBase;
Inherited Members
public: // typedefs typedef std::shared_ptr<CObject> Ptr; typedef std::shared_ptr<const CObject> ConstPtr; typedef std::unique_ptr<CObject> UniquePtr; typedef std::unique_ptr<const CObject> ConstUniquePtr; typedef std::shared_ptr<CSerializable> Ptr; typedef std::shared_ptr<const CSerializable> ConstPtr; typedef std::shared_ptr<CMetricMap> Ptr; typedef std::shared_ptr<const CMetricMap> ConstPtr; // fields TMapGenericParams genericMapParams; // methods mrpt::rtti::CObject::Ptr duplicateGetSmartPtr() const; static const mrpt::rtti::TRuntimeClassId& GetRuntimeClassIdStatic(); virtual const mrpt::rtti::TRuntimeClassId* GetRuntimeClass() const; virtual CObject* clone() const = 0; virtual const mrpt::rtti::TRuntimeClassId* GetRuntimeClass() const; static const mrpt::rtti::TRuntimeClassId& GetRuntimeClassIdStatic(); virtual std::string asString() const = 0; Visualizable& operator = (const Visualizable&); Visualizable& operator = (Visualizable&&); virtual void getVisualizationInto(mrpt::viz::CSetOfObjects& o) const = 0; std::shared_ptr<mrpt::viz::CSetOfObjects> getVisualization() const; virtual const mrpt::rtti::TRuntimeClassId* GetRuntimeClass() const; static const mrpt::rtti::TRuntimeClassId& GetRuntimeClassIdStatic(); void clear(); virtual bool isEmpty() const = 0; virtual auto boundingBox() const; void loadFromSimpleMap(const mrpt::maps::CSimpleMap& Map); bool insertObservation(const mrpt::obs::CObservation& obs, const std::optional<const mrpt::poses::CPose3D>& robotPose = std::nullopt); bool insertObservationPtr(const mrpt::obs::CObservation::Ptr& obs, const std::optional<const mrpt::poses::CPose3D>& robotPose = std::nullopt); double computeObservationLikelihood(const mrpt::obs::CObservation& obs, const mrpt::poses::CPose3D& takenFrom) const; virtual bool canComputeObservationLikelihood(const mrpt::obs::CObservation& obs) const; double computeObservationsLikelihood(const mrpt::obs::CSensoryFrame& sf, const mrpt::poses::CPose3D& takenFrom); bool canComputeObservationsLikelihood(const mrpt::obs::CSensoryFrame& sf) const; virtual void determineMatching2D( const mrpt::maps::CMetricMap* otherMap, const mrpt::poses::CPose2D& otherMapPose, mrpt::tfest::TMatchingPairList& correspondences, const TMatchingParams& params, TMatchingExtraResults& extraResults ) const; virtual void determineMatching3D( const mrpt::maps::CMetricMap* otherMap, const mrpt::poses::CPose3D& otherMapPose, mrpt::tfest::TMatchingPairList& correspondences, const TMatchingParams& params, TMatchingExtraResults& extraResults ) const; virtual float compute3DMatchingRatio(const mrpt::maps::CMetricMap* otherMap, const mrpt::poses::CPose3D& otherMapPose, const TMatchingRatioParams& params) const; virtual void saveMetricMapRepresentationToFile(const std::string& filNamePrefix) const = 0; virtual void auxParticleFilterCleanUp(); virtual float squareDistanceToClosestCorrespondence(float x0, float y0) const;
Construction
CVoxelMapBase(double resolution, uint8_t inner_bits = 2, uint8_t leaf_bits = 3)
Constructor, defines the resolution of the voxelmap (length of each voxel side, in meters).
Methods
virtual std::string asString() const
Returns a short description of the map.
virtual void getVisualizationInto(mrpt::viz::CSetOfObjects& o) const
Returns a 3D object representing the map.
See also:
renderingOptions
virtual void getAsOctoMapVoxels(mrpt::viz::COctoMapVoxels& gl_obj) const = 0
Builds a renderizable representation of the octomap as a mrpt::viz::COctoMapVoxels object.
Implementation defined for each children class.
See also:
renderingOptions
virtual void saveMetricMapRepresentationToFile(const std::string& filNamePrefix) const
This virtual method saves the map to a file “filNamePrefix”+< some_file_extension >, as an image or in any other applicable way (Notice that other methods to save the map may be implemented in classes implementing this virtual interface).