Program Listing for File NormalVectorsFilter.hpp

Return to documentation for file (/tmp/ws/src/grid_map/grid_map_filters/include/grid_map_filters/NormalVectorsFilter.hpp)

/*
 * NormalVectorsFilter.hpp
 *
 *  Created on: May 05, 2015
 *      Author: Peter Fankhauser, Martin Wermelinger
 *   Institute: ETH Zurich, ANYbotics
 */

#ifndef GRID_MAP_FILTERS__NORMALVECTORSFILTER_HPP_
#define GRID_MAP_FILTERS__NORMALVECTORSFILTER_HPP_

#include <filters/filter_base.hpp>
#include <grid_map_core/grid_map_core.hpp>

#include <Eigen/Core>
#include <string>

namespace grid_map
{

template<typename T>
class NormalVectorsFilter : public filters::FilterBase<T>
{
public:
  NormalVectorsFilter();

  ~NormalVectorsFilter() override;

  bool configure() override;

  bool update(const T & mapIn, T & mapOut) override;

private:
  void computeWithAreaSerial(
    GridMap & map, const std::string & inputLayer,
    const std::string & outputLayersPrefix);

  void computeWithAreaParallel(
    GridMap & map, const std::string & inputLayer,
    const std::string & outputLayersPrefix);

  void areaSingleNormalComputation(
    GridMap & map, const std::string & inputLayer, const std::string & outputLayersPrefix,
    const grid_map::Index & index);
  void computeWithRasterSerial(
    GridMap & map, const std::string & inputLayer,
    const std::string & outputLayersPrefix);

  void computeWithRasterParallel(
    GridMap & map, const std::string & inputLayer,
    const std::string & outputLayersPrefix);

  void rasterSingleNormalComputation(
    GridMap & map, const std::string & outputLayersPrefix, const grid_map::Matrix & dataMap,
    const grid_map::Index & index);

  enum class Method { AreaSerial, AreaParallel, RasterSerial, RasterParallel };

  Method method_;

  double estimationRadius_;

  bool parallelizationEnabled_;

  int threadCount_;

  Eigen::Vector3d normalVectorPositiveAxis_;

  std::string inputLayer_;

  std::string outputLayersPrefix_;

  double gridMapResolution_;
};

}  // namespace grid_map
#endif  // GRID_MAP_FILTERS__NORMALVECTORSFILTER_HPP_