Program Listing for File SlidingWindowIterator.hpp
↰ Return to documentation for file (/tmp/ws/src/grid_map/grid_map_core/include/grid_map_core/iterators/SlidingWindowIterator.hpp
)
/*
* SlidingWindowIterator.hpp
*
* Created on: Aug 17, 2017
* Author: Péter Fankhauser
* Institute: ETH Zurich, ANYbotics
*/
#ifndef GRID_MAP_CORE__ITERATORS__SLIDINGWINDOWITERATOR_HPP_
#define GRID_MAP_CORE__ITERATORS__SLIDINGWINDOWITERATOR_HPP_
#include <Eigen/Core>
#include <string>
#include "grid_map_core/GridMap.hpp"
#include "grid_map_core/iterators/GridMapIterator.hpp"
namespace grid_map
{
class SlidingWindowIterator : public GridMapIterator
{
public:
enum class EdgeHandling
{
INSIDE, // Only visit indices that are surrounded by a full window.
CROP, // Crop data matrix with missing cells at edges.
EMPTY, // Fill in missing edges with empty cells (NAN-value).
MEAN // Fill in missing edges with MEAN of valid values.
};
SlidingWindowIterator(
const GridMap & gridMap, const std::string & layer,
const EdgeHandling & edgeHandling = EdgeHandling::CROP,
const size_t windowSize = 3);
explicit SlidingWindowIterator(const SlidingWindowIterator * other);
void setWindowLength(const GridMap & gridMap, const double windowLength);
SlidingWindowIterator & operator++();
const Matrix getData() const;
private:
void setup(const GridMap & gridMap);
bool dataInsideMap() const;
const EdgeHandling edgeHandling_;
const Matrix & data_;
size_t windowSize_;
size_t windowMargin_;
public:
EIGEN_MAKE_ALIGNED_OPERATOR_NEW
};
} // namespace grid_map
#endif // GRID_MAP_CORE__ITERATORS__SLIDINGWINDOWITERATOR_HPP_