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 
106 
112 
117 
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
mp2p_icp_filters::Generator::Parameters
Definition: Generator.h:98
mp2p_icp_filters::Generator::filterPointCloud
virtual bool filterPointCloud(const mrpt::maps::CPointsMap &pc, mp2p_icp::metric_map_t &out) const
Definition: Generator.cpp:177
mp2p_icp_filters::Generator::initialize
virtual void initialize(const mrpt::containers::yaml &cfg_block)
Definition: Generator.cpp:38
mp2p_icp_filters::Generator
Definition: Generator.h:72
generators
static mp2p_icp_filters::GeneratorSet generators
Definition: apps/mp2p-icp-run/main.cpp:130
mp2p_icp_filters::Generator::initialized_
bool initialized_
Definition: Generator.h:147
mp2p_icp_filters::Generator::process_class_names_regex_
std::regex process_class_names_regex_
Definition: Generator.h:148
mp2p_icp::metric_map_t::PT_LAYER_RAW
constexpr static const char * PT_LAYER_RAW
Definition: metricmap.h:56
mp2p_icp_filters::Generator::Parameters::process_class_names_regex
std::string process_class_names_regex
Definition: Generator.h:111
testing::internal::string
::std::string string
Definition: gtest.h:1979
mp2p_icp_filters::Generator::params_
Parameters params_
Definition: Generator.h:121
mp2p_icp_filters::Generator::Parameters::load_from_yaml
void load_from_yaml(const mrpt::containers::yaml &c)
Definition: Generator.cpp:30
kitti-batch-convert.out
string out
Definition: kitti-batch-convert.py:7
mp2p_icp_filters::Generator::filterRotatingScan
virtual bool filterRotatingScan(const mrpt::obs::CObservationRotatingScan &pc, mp2p_icp::metric_map_t &out) const
Definition: Generator.cpp:202
mp2p_icp_filters::Generator::filterScan2D
virtual bool filterScan2D(const mrpt::obs::CObservation2DRangeScan &pc, mp2p_icp::metric_map_t &out) const
Definition: Generator.cpp:156
mp2p_icp_filters::Generator::Parameters::throw_on_unhandled_observation_class
bool throw_on_unhandled_observation_class
Definition: Generator.h:118
mp2p_icp_filters::apply_generators
void apply_generators(const GeneratorSet &generators, const mrpt::obs::CObservation &obs, mp2p_icp::metric_map_t &output)
Definition: Generator.cpp:209
mp2p_icp_filters::GeneratorSet
std::vector< Generator::Ptr > GeneratorSet
Definition: Generator.h:153
mp2p_icp_filters::Generator::Parameters::process_sensor_labels_regex
std::string process_sensor_labels_regex
Definition: Generator.h:116
mp2p_icp_filters::generators_from_yaml_file
GeneratorSet generators_from_yaml_file(const std::string &filename, const mrpt::system::VerbosityLevel &vLevel=mrpt::system::LVL_INFO)
Definition: Generator.cpp:285
mp2p_icp_filters::NotImplementedError
Definition: Generator.h:33
mp2p_icp_filters::Generator::Generator
Generator()
Definition: Generator.cpp:28
std
mp2p_icp_filters::NotImplementedError::NotImplementedError
NotImplementedError(T v)
Definition: Generator.h:37
metricmap.h
Generic representation of pointcloud(s) and/or extracted features.
mp2p_icp::metric_map_t
Generic container of pointcloud(s), extracted features and other maps.
Definition: metricmap.h:47
mp2p_icp_filters::Generator::process
virtual void process(const mrpt::obs::CObservation &input_raw, mp2p_icp::metric_map_t &inOut) const
Definition: Generator.cpp:53
mp2p_icp_filters::Generator::Parameters::target_pointcloud_layer
std::string target_pointcloud_layer
Definition: Generator.h:104
mp2p_icp_filters::Generator::process_sensor_labels_regex_
std::regex process_sensor_labels_regex_
Definition: Generator.h:149
mp2p_icp_filters::Generator::filterScan3D
virtual bool filterScan3D(const mrpt::obs::CObservation3DRangeScan &pc, mp2p_icp::metric_map_t &out) const
Definition: Generator.cpp:170
mp2p_icp_filters::Generator::filterVelodyneScan
virtual bool filterVelodyneScan(const mrpt::obs::CObservationVelodyneScan &pc, mp2p_icp::metric_map_t &out) const
Definition: Generator.cpp:163
mp2p_icp_filters
Definition: FilterBase.h:25
kitti-batch-convert.filename
filename
Definition: kitti-batch-convert.py:6
mp2p_icp_filters::generators_from_yaml
GeneratorSet generators_from_yaml(const mrpt::containers::yaml &c, const mrpt::system::VerbosityLevel &vLevel=mrpt::system::LVL_INFO)
Definition: Generator.cpp:253


mrpt_local_obstacles
Author(s): Jose-Luis Blanco-Claraco
autogenerated on Mon Aug 14 2023 02:09:02