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_