Generator.h
Go to the documentation of this file.
1 /* -------------------------------------------------------------------------
2  * A repertory of multi primitive-to-primitive (MP2P) ICP algorithms in C++
3  * Copyright (C) 2018-2021 Jose Luis Blanco, University of Almeria
4  * See LICENSE for license information.
5  * ------------------------------------------------------------------------- */
13 #pragma once
14 
15 #include <mp2p_icp/metricmap.h>
16 #include <mrpt/containers/yaml.h>
17 #include <mrpt/maps/CPointsMap.h>
18 #include <mrpt/obs/obs_frwds.h>
19 #include <mrpt/rtti/CObject.h>
20 #include <mrpt/system/COutputLogger.h>
21 
22 #include <cstdint>
23 #include <regex>
24 #include <stdexcept>
25 
26 namespace mp2p_icp_filters
27 {
33 struct NotImplementedError : public std::runtime_error
34 {
35  // NotImplementedError() = default;
36  template <typename T>
37  NotImplementedError(T v) : std::runtime_error(v)
38  {
39  }
40 };
41 
72 class Generator : public mrpt::rtti::CObject, // RTTI support
73  public mrpt::system::COutputLogger // Logging support
74 {
75  DEFINE_MRPT_OBJECT(Generator, mp2p_icp_filters)
76 
77  public:
78  Generator();
79 
88  virtual void initialize(const mrpt::containers::yaml& cfg_block);
89 
94  virtual void process(
95  const mrpt::obs::CObservation& input_raw,
96  mp2p_icp::metric_map_t& inOut) const;
97 
98  struct Parameters
99  {
100  void load_from_yaml(const mrpt::containers::yaml& c);
101 
104  std::string target_pointcloud_layer =
106 
111  std::string process_class_names_regex = ".*";
112 
116  std::string process_sensor_labels_regex = ".*";
117 
118  bool throw_on_unhandled_observation_class = false;
119  };
120 
122 
125  protected:
126  // To be overrided in derived classes, if implemented:
128  virtual bool filterScan2D(
129  const mrpt::obs::CObservation2DRangeScan& pc,
130  mp2p_icp::metric_map_t& out) const;
132  virtual bool filterScan3D(
133  const mrpt::obs::CObservation3DRangeScan& pc,
134  mp2p_icp::metric_map_t& out) const;
136  virtual bool filterVelodyneScan(
137  const mrpt::obs::CObservationVelodyneScan& pc,
138  mp2p_icp::metric_map_t& out) const;
140  virtual bool filterPointCloud(
141  const mrpt::maps::CPointsMap& pc, mp2p_icp::metric_map_t& out) const;
143  virtual bool filterRotatingScan(
144  const mrpt::obs::CObservationRotatingScan& pc,
145  mp2p_icp::metric_map_t& out) const;
146 
147  bool initialized_ = false;
150 };
151 
153 using GeneratorSet = std::vector<Generator::Ptr>;
154 
162 void apply_generators(
163  const GeneratorSet& generators, const mrpt::obs::CObservation& obs,
164  mp2p_icp::metric_map_t& output);
165 
168  const GeneratorSet& generators, const mrpt::obs::CObservation& obs);
169 
171 void apply_generators(
172  const GeneratorSet& generators, const mrpt::obs::CSensoryFrame& sf,
173  mp2p_icp::metric_map_t& output);
174 
177  const GeneratorSet& generators, const mrpt::obs::CSensoryFrame& sf);
178 
185  const mrpt::containers::yaml& c,
186  const mrpt::system::VerbosityLevel& vLevel = mrpt::system::LVL_INFO);
187 
196  const std::string& filename,
197  const mrpt::system::VerbosityLevel& vLevel = mrpt::system::LVL_INFO);
198 
201 } // namespace mp2p_icp_filters
GeneratorSet generators_from_yaml_file(const std::string &filename, const mrpt::system::VerbosityLevel &vLevel=mrpt::system::LVL_INFO)
Definition: Generator.cpp:285
Generic container of pointcloud(s), extracted features and other maps.
Definition: metricmap.h:47
std::vector< Generator::Ptr > GeneratorSet
Definition: Generator.h:153
ROSCONSOLE_DECL void initialize()
::std::string string
Definition: gtest.h:1979
Generic representation of pointcloud(s) and/or extracted features.
static constexpr const char * PT_LAYER_RAW
Definition: metricmap.h:56
std::regex process_class_names_regex_
Definition: Generator.h:148
GeneratorSet generators_from_yaml(const mrpt::containers::yaml &c, const mrpt::system::VerbosityLevel &vLevel=mrpt::system::LVL_INFO)
Definition: Generator.cpp:253
static mp2p_icp_filters::GeneratorSet generators
std::regex process_sensor_labels_regex_
Definition: Generator.h:149
void apply_generators(const GeneratorSet &generators, const mrpt::obs::CObservation &obs, mp2p_icp::metric_map_t &output)
Definition: Generator.cpp:209


mrpt_local_obstacles
Author(s): Jose-Luis Blanco-Claraco
autogenerated on Thu Jun 1 2023 03:05:10