GridMap.hpp
Go to the documentation of this file.
1 /*
2  * GridMap.hpp
3  *
4  * Created on: Jul 14, 2014
5  * Author: Péter Fankhauser
6  * Institute: ETH Zurich, ANYbotics
7  */
8 
9 #pragma once
10 
14 
15 // STL
16 #include <unordered_map>
17 #include <vector>
18 
19 // Eigen
20 #include <Eigen/Core>
21 #include <Eigen/Geometry>
22 
23 namespace grid_map {
24 
25 class SubmapGeometry;
26 
40 class GridMap {
41  public:
42  // Type traits for use with template methods/classes using GridMap as a template parameter.
45 
50  GridMap(const std::vector<std::string>& layers);
51 
55  GridMap();
56 
60  GridMap(const GridMap&) = default;
61  GridMap& operator=(const GridMap&) = default;
62  GridMap(GridMap&&) = default;
63  GridMap& operator=(GridMap&&) = default;
64 
68  virtual ~GridMap() = default;
69 
76  void setGeometry(const Length& length, const double resolution, const Position& position = Position::Zero());
77 
82  void setGeometry(const SubmapGeometry& geometry);
83 
89  void add(const std::string& layer, const double value = NAN);
90 
96  void add(const std::string& layer, const Matrix& data);
97 
103  bool exists(const std::string& layer) const;
104 
111  const Matrix& get(const std::string& layer) const;
112 
120  Matrix& get(const std::string& layer);
121 
128  const Matrix& operator[](const std::string& layer) const;
129 
137  Matrix& operator[](const std::string& layer);
138 
144  bool erase(const std::string& layer);
145 
150  const std::vector<std::string>& getLayers() const;
151 
158  void setBasicLayers(const std::vector<std::string>& basicLayers);
159 
164  const std::vector<std::string>& getBasicLayers() const;
165 
170  bool hasBasicLayers() const;
171 
179  bool hasSameLayers(const grid_map::GridMap& other) const;
180 
188  float& atPosition(const std::string& layer, const Position& position);
189 
198  float atPosition(const std::string& layer, const Position& position,
199  InterpolationMethods interpolationMethod = InterpolationMethods::INTER_NEAREST) const;
200 
208  float& at(const std::string& layer, const Index& index);
209 
217  float at(const std::string& layer, const Index& index) const;
218 
225  bool getIndex(const Position& position, Index& index) const;
226 
234  bool getPosition(const Index& index, Position& position) const;
235 
241  bool isInside(const Position& position) const;
242 
249  bool isValid(const Index& index) const;
250 
257  bool isValid(const Index& index, const std::string& layer) const;
258 
265  bool isValid(const Index& index, const std::vector<std::string>& layers) const;
266 
275  bool getPosition3(const std::string& layer, const Index& index, Position3& position) const;
276 
284  bool getVector(const std::string& layerPrefix, const Index& index, Eigen::Vector3d& vector) const;
285 
296  GridMap getSubmap(const Position& position, const Length& length, bool& isSuccess) const;
297 
309  GridMap getSubmap(const Position& position, const Length& length, Index& indexInSubmap, bool& isSuccess) const;
310 
324  GridMap getTransformedMap(const Eigen::Isometry3d& transform, const std::string& heightLayerName, const std::string& newFrameId,
325  const double sampleRatio = 0.0) const;
326 
335  void setPosition(const Position& position);
336 
355  bool move(const Position& position, std::vector<BufferRegion>& newRegions);
356 
364  bool move(const Position& position);
365 
375  bool addDataFrom(const GridMap& other, bool extendMap, bool overwriteData, bool copyAllLayers,
376  std::vector<std::string> layers = std::vector<std::string>());
377 
383  bool extendToInclude(const GridMap& other);
384 
389  void clear(const std::string& layer);
390 
395  void clearBasic();
396 
402  void clearAll();
403 
408  void setTimestamp(const Time timestamp);
409 
414  Time getTimestamp() const;
415 
419  void resetTimestamp();
420 
425  void setFrameId(const std::string& frameId);
426 
431  const std::string& getFrameId() const;
432 
437  const Length& getLength() const;
438 
443  const Position& getPosition() const;
444 
449  double getResolution() const;
450 
455  const Size& getSize() const;
456 
462  void setStartIndex(const Index& startIndex);
463 
468  const Index& getStartIndex() const;
469 
474  bool isDefaultStartIndex() const;
475 
480 
487  Position getClosestPositionInMap(const Position& position) const;
488 
489  private:
495  bool isValid(DataType value) const;
496 
502  void clearCols(unsigned int index, unsigned int nCols);
503 
509  void clearRows(unsigned int index, unsigned int nRows);
510 
518  bool atPositionLinearInterpolated(const std::string& layer, const Position& position, float& value) const;
519 
531  bool atPositionBicubicConvolutionInterpolated(const std::string& layer, const Position& position, float& value) const;
532 
544  bool atPositionBicubicInterpolated(const std::string& layer, const Position& position, float& value) const;
545 
550  void resize(const Index& bufferSize);
551 
553  std::string frameId_;
554 
557 
559  std::unordered_map<std::string, Matrix> data_;
560 
562  std::vector<std::string> layers_;
563 
567  std::vector<std::string> basicLayers_;
568 
571 
573  double resolution_;
574 
577 
580 
583 
584  public:
585  EIGEN_MAKE_ALIGNED_OPERATOR_NEW
586 };
587 
588 } // namespace grid_map
void setGeometry(const Length &length, const double resolution, const Position &position=Position::Zero())
Definition: GridMap.cpp:44
GridMap getTransformedMap(const Eigen::Isometry3d &transform, const std::string &heightLayerName, const std::string &newFrameId, const double sampleRatio=0.0) const
Definition: GridMap.cpp:332
Size size_
Size of the buffer (rows and cols of the data structure).
Definition: GridMap.hpp:579
bool hasSameLayers(const grid_map::GridMap &other) const
Definition: GridMap.cpp:77
virtual ~GridMap()=default
bool isDefaultStartIndex() const
Definition: GridMap.cpp:673
void setPosition(const Position &position)
Definition: GridMap.cpp:438
float & atPosition(const std::string &layer, const Position &position)
Definition: GridMap.cpp:153
void clear(const std::string &layer)
Definition: GridMap.cpp:745
void setBasicLayers(const std::vector< std::string > &basicLayers)
Definition: GridMap.cpp:65
const Index & getStartIndex() const
Definition: GridMap.cpp:669
double resolution_
Map resolution in xy plane [m/cell].
Definition: GridMap.hpp:573
std::vector< std::string > basicLayers_
Definition: GridMap.hpp:567
const std::vector< std::string > & getBasicLayers() const
Definition: GridMap.cpp:69
std::unordered_map< std::string, Matrix > data_
Grid map data stored as layers of matrices.
Definition: GridMap.hpp:559
const Size & getSize() const
Definition: GridMap.cpp:661
grid_map::DataType DataType
Definition: GridMap.hpp:43
std::string frameId_
Frame id of the grid map.
Definition: GridMap.hpp:553
uint64_t Time
Definition: TypeDefs.hpp:25
const Position & getPosition() const
Definition: GridMap.cpp:653
bool getVector(const std::string &layerPrefix, const Index &index, Eigen::Vector3d &vector) const
Definition: GridMap.cpp:272
const std::vector< std::string > & getLayers() const
Definition: GridMap.cpp:149
bool atPositionBicubicInterpolated(const std::string &layer, const Position &position, float &value) const
Definition: GridMap.cpp:872
bool atPositionLinearInterpolated(const std::string &layer, const Position &position, float &value) const
Definition: GridMap.cpp:777
grid_map::Matrix Matrix
Definition: GridMap.hpp:44
bool atPositionBicubicConvolutionInterpolated(const std::string &layer, const Position &position, float &value) const
Definition: GridMap.cpp:856
bool move(const Position &position, std::vector< BufferRegion > &newRegions)
Definition: GridMap.cpp:442
void convertToDefaultStartIndex()
Definition: GridMap.cpp:677
double getResolution() const
Definition: GridMap.cpp:657
InterpolationMethods
Definition: TypeDefs.hpp:39
bool isInside(const Position &position) const
Definition: GridMap.cpp:236
bool hasBasicLayers() const
Definition: GridMap.cpp:73
bool addDataFrom(const GridMap &other, bool extendMap, bool overwriteData, bool copyAllLayers, std::vector< std::string > layers=std::vector< std::string >())
Definition: GridMap.cpp:514
bool extendToInclude(const GridMap &other)
Definition: GridMap.cpp:554
std::vector< std::string > layers_
Names of the data layers.
Definition: GridMap.hpp:562
Eigen::Vector2d Position
Definition: TypeDefs.hpp:18
bool isValid(const Index &index) const
Definition: GridMap.cpp:244
void resetTimestamp()
Definition: GridMap.cpp:637
Eigen::Array2i Index
Definition: TypeDefs.hpp:22
void setStartIndex(const Index &startIndex)
Definition: GridMap.cpp:665
Eigen::Array2i Size
Definition: TypeDefs.hpp:23
GridMap getSubmap(const Position &position, const Length &length, bool &isSuccess) const
Definition: GridMap.cpp:282
Eigen::MatrixXf Matrix
Definition: TypeDefs.hpp:16
Position position_
Map position in the grid map frame [m].
Definition: GridMap.hpp:576
Eigen::Array2d Length
Definition: TypeDefs.hpp:24
Position getClosestPositionInMap(const Position &position) const
Definition: GridMap.cpp:709
float & at(const std::string &layer, const Index &index)
Definition: GridMap.cpp:212
Time timestamp_
Timestamp of the grid map (nanoseconds).
Definition: GridMap.hpp:556
const std::string & getFrameId() const
Definition: GridMap.cpp:645
Index startIndex_
Circular buffer start indices.
Definition: GridMap.hpp:582
void add(const std::string &layer, const double value=NAN)
Definition: GridMap.cpp:82
Time getTimestamp() const
Definition: GridMap.cpp:633
Eigen::Vector3d Position3
Definition: TypeDefs.hpp:20
bool exists(const std::string &layer) const
Definition: GridMap.cpp:100
bool getPosition3(const std::string &layer, const Index &index, Position3 &position) const
Definition: GridMap.cpp:260
Matrix::Scalar DataType
Definition: TypeDefs.hpp:17
void clearCols(unsigned int index, unsigned int nCols)
Definition: GridMap.cpp:771
void clearRows(unsigned int index, unsigned int nRows)
Definition: GridMap.cpp:765
Length length_
Side length of the map in x- and y-direction [m].
Definition: GridMap.hpp:570
void setFrameId(const std::string &frameId)
Definition: GridMap.cpp:641
bool getIndex(const Position &position, Index &index) const
Definition: GridMap.cpp:228
GridMap & operator=(const GridMap &)=default
void setTimestamp(const Time timestamp)
Definition: GridMap.cpp:629
bool erase(const std::string &layer)
Definition: GridMap.cpp:128
const Matrix & operator[](const std::string &layer) const
Definition: GridMap.cpp:120
void resize(const Index &bufferSize)
Definition: GridMap.cpp:848
const Length & getLength() const
Definition: GridMap.cpp:649


grid_map_core
Author(s): Péter Fankhauser
autogenerated on Wed Jul 5 2023 02:23:35