Main MRPT website > C++ reference for MRPT 1.5.6
maps/CReflectivityGridMap2D.h
Go to the documentation of this file.
1 /* +---------------------------------------------------------------------------+
2  | Mobile Robot Programming Toolkit (MRPT) |
3  | http://www.mrpt.org/ |
4  | |
5  | Copyright (c) 2005-2017, Individual contributors, see AUTHORS file |
6  | See: http://www.mrpt.org/Authors - All rights reserved. |
7  | Released under BSD License. See details in http://www.mrpt.org/License |
8  +---------------------------------------------------------------------------+ */
9 
10 #ifndef CReflectivityGridMap2D_H
11 #define CReflectivityGridMap2D_H
12 
13 #include <mrpt/utils/CImage.h>
17 #include <mrpt/maps/CMetricMap.h>
19 #include <mrpt/obs/obs_frwds.h>
20 
21 #include <mrpt/maps/link_pragmas.h>
22 
23 namespace mrpt
24 {
25  namespace maps
26  {
27  DEFINE_SERIALIZABLE_PRE_CUSTOM_BASE_LINKAGE( CReflectivityGridMap2D, CMetricMap, MAPS_IMPEXP )
28 
29  /** A 2D grid map representing the reflectivity of the environment (for example, measured with an IR proximity sensor).
30  *
31  * Important implemented features are:
32  * - Insertion of mrpt::obs::CObservationReflectivity observations.
33  * - Probability estimation of observations. See base class.
34  * - Rendering as 3D object: a 2D textured plane.
35  * - Automatic resizing of the map limits when inserting observations close to the border.
36  *
37  * Each cell contains the up-to-date average height from measured falling in that cell. Algorithms that can be used:
38  * - mrSimpleAverage: Each cell only stores the current average value.
39  * \ingroup mrpt_maps_grp
40  */
42  public CMetricMap,
43  public utils::CDynamicGrid<int8_t>,
44  public CLogOddsGridMap2D<int8_t>
45  {
46  // This must be added to any CSerializable derived class:
48 
49  protected:
50  static CLogOddsGridMapLUT<cell_t> m_logodd_lut; //!< Lookup tables for log-odds
51 
52  public:
53 
54  /** Calls the base CMetricMap::clear
55  * Declared here to avoid ambiguity between the two clear() in both base classes.
56  */
57  inline void clear() { CMetricMap::clear(); }
58 
59  float cell2float(const int8_t& c) const MRPT_OVERRIDE
60  {
61  return m_logodd_lut.l2p(c);
62  }
63 
64  /** Constructor */
65  CReflectivityGridMap2D(double x_min = -2, double x_max = 2, double y_min = -2, double y_max = 2,double resolution = 0.1);
66 
67  /** Returns true if the map is empty/no observation has been inserted. */
68  bool isEmpty() const MRPT_OVERRIDE;
69 
70 
71  /** Parameters related with inserting observations into the map.
72  */
73  struct MAPS_IMPEXP TInsertionOptions : public utils::CLoadableOptions
74  {
75  /** Default values loader */
77 
78  void loadFromConfigFile(const mrpt::utils::CConfigFileBase &source,const std::string &section) MRPT_OVERRIDE; // See base docs
79  void dumpToTextStream(mrpt::utils::CStream &out) const MRPT_OVERRIDE; // See base docs
80  } insertionOptions;
81 
82  /** See docs in base class: in this class this always returns 0 */
83  float compute3DMatchingRatio(const mrpt::maps::CMetricMap *otherMap, const mrpt::poses::CPose3D &otherMapPose, const TMatchingRatioParams &params) const MRPT_OVERRIDE;
84 
85  void saveMetricMapRepresentationToFile(const std::string &filNamePrefix ) const MRPT_OVERRIDE;
86 
87  void getAs3DObject(mrpt::opengl::CSetOfObjectsPtr &outObj) const MRPT_OVERRIDE;
88 
89  /** Returns the grid as a 8-bit graylevel image, where each pixel is a cell (output image is RGB only if forceRGB is true) */
90  void getAsImage( utils::CImage &img, bool verticalFlip = false, bool forceRGB=false) const;
91 
92  protected:
93 
94  // See docs in base class
95  void internal_clear() MRPT_OVERRIDE;
96  bool internal_insertObservation( const mrpt::obs::CObservation *obs, const mrpt::poses::CPose3D *robotPose = NULL ) MRPT_OVERRIDE;
97  double internal_computeObservationLikelihood( const mrpt::obs::CObservation *obs, const mrpt::poses::CPose3D &takenFrom ) MRPT_OVERRIDE;
98 
100  double min_x,max_x,min_y,max_y,resolution; //!< See CReflectivityGridMap2DOptions::CReflectivityGridMap2DOptions
101  mrpt::maps::CReflectivityGridMap2D::TInsertionOptions insertionOpts;
102  MAP_DEFINITION_END(CReflectivityGridMap2D,MAPS_IMPEXP)
103  };
104  DEFINE_SERIALIZABLE_POST_CUSTOM_BASE_LINKAGE( CReflectivityGridMap2D, CMetricMap, MAPS_IMPEXP )
105 
106 
107  } // End of namespace
108 
109 
110 } // End of namespace
111 
112 #endif
void clear()
Erase all the contents of the map.
Definition: CMetricMap.cpp:34
Parameters for CMetricMap::compute3DMatchingRatio()
#define MAP_DEFINITION_END(_CLASS_NAME_, _LINKAGE_)
#define MRPT_OVERRIDE
C++11 "override" for virtuals:
A class for storing images as grayscale or RGB bitmaps.
Definition: CImage.h:101
const GLfloat * c
Definition: glew.h:10088
signed char int8_t
Definition: rptypes.h:42
void clear()
Clear the contents of this container.
Definition: ts_hash_map.h:113
A 2D grid map representing the reflectivity of the environment (for example, measured with an IR prox...
This class allows loading and storing values and vectors of different types from a configuration text...
GLint GLvoid * img
Definition: glew.h:1290
This base class is used to provide a unified interface to files,memory buffers,..Please see the deriv...
Definition: CStream.h:38
#define DEFINE_SERIALIZABLE_PRE_CUSTOM_BASE_LINKAGE(class_name, base_name, _LINKAGE_)
This declaration must be inserted in all CSerializable classes definition, before the class declarati...
#define DEFINE_SERIALIZABLE(class_name)
This declaration must be inserted in all CSerializable classes definition, within the class declarati...
GLsizei const GLcharARB ** string
Definition: glew.h:3293
Parameters related with inserting observations into the map.
Declares a virtual base class for all metric maps storage classes.
A class used to store a 3D pose (a 3D translation + a rotation in 3D).
Definition: CPose3D.h:72
GLfloat * params
Definition: glew.h:1436
A generic provider of log-odds grid-map maintainance functions.
#define DEFINE_SERIALIZABLE_POST_CUSTOM_BASE_LINKAGE(class_name, base_name, _LINKAGE_)
float cell2float(const int8_t &c) const MRPT_OVERRIDE
The user must implement this in order to provide "saveToTextFile" a way to convert each cell into a n...
#define MAP_DEFINITION_START(_CLASS_NAME_, _LINKAGE_)
Add a MAP_DEFINITION_START() ...
GLsizei GLsizei GLchar * source
Definition: glew.h:1739
One static instance of this struct should exist in any class implementing CLogOddsGridMap2D to hold t...



Page generated by Doxygen 1.8.6 for MRPT 1.5.6 Git: 4c65e84 Tue Apr 24 08:18:17 2018 +0200 at mar abr 24 08:26:17 CEST 2018