MRPT  2.0.3
CParameterizedTrajectoryGenerator_factory.cpp
Go to the documentation of this file.
1 /* +------------------------------------------------------------------------+
2  | Mobile Robot Programming Toolkit (MRPT) |
3  | https://www.mrpt.org/ |
4  | |
5  | Copyright (c) 2005-2020, Individual contributors, see AUTHORS file |
6  | See: https://www.mrpt.org/Authors - All rights reserved. |
7  | Released under BSD License. See: https://www.mrpt.org/License |
8  +------------------------------------------------------------------------+ */
9 
10 #include "nav-precomp.h" // Precomp header
11 
15 
16 using namespace mrpt::nav;
17 
18 /*---------------------------------------------------------------
19  Class factory
20  ---------------------------------------------------------------*/
23  const std::string& ptgClassName_,
24  const mrpt::config::CConfigFileBase& cfg, const std::string& sSection,
25  const std::string& sKeyPrefix)
26 {
28 
30 
31  // Special names for backwards compatibility with MRPT < 1.5.0
32  std::string ptgClassName = mrpt::system::trim(ptgClassName_);
33  if (ptgClassName.size() == 1)
34  {
35  switch (ptgClassName[0])
36  {
37  case '1':
38  ptgClassName = "CPTG_DiffDrive_C";
39  break;
40  case '2':
41  ptgClassName = "CPTG_DiffDrive_alpha";
42  break;
43  case '3':
44  ptgClassName = "CPTG_DiffDrive_CCS";
45  break;
46  case '4':
47  ptgClassName = "CPTG_DiffDrive_CC";
48  break;
49  case '5':
50  ptgClassName = "CPTG_DiffDrive_CS";
51  break;
52  };
53  }
54 
55  // Factory:
56  const mrpt::rtti::TRuntimeClassId* classId =
57  mrpt::rtti::findRegisteredClass(ptgClassName);
58  if (!classId)
59  {
61  "[CreatePTG] No PTG named `%s` is registered!",
62  ptgClassName.c_str());
63  }
64 
66  classId->createObject());
67  if (!ptg)
68  {
70  "[CreatePTG] Object of type `%s` seems not to be a PTG!",
71  ptgClassName.c_str());
72  }
73 
74  // Wrapper to transparently add prefixes to all config keys:
76  cfp.bind(cfg);
77  cfp.setPrefixes("", sKeyPrefix);
78 
79  ptg->loadFromConfigFile(cfp, sSection);
80  return ptg;
81  MRPT_END
82 }
nav-precomp.h
CParameterizedTrajectoryGenerator.h
mrpt::rtti::TRuntimeClassId
A structure that holds runtime class type information.
Definition: CObject.h:31
string_utils.h
mrpt::rtti::registerAllPendingClasses
void registerAllPendingClasses()
Register all pending classes - to be called just before de-serializing an object, for example.
Definition: internal_class_registry.cpp:161
mrpt::nav
Definition: CAbstractHolonomicReactiveMethod.h:20
mrpt::config::CConfigFilePrefixer::setPrefixes
void setPrefixes(const std::string &prefix_sections, const std::string &prefix_keys)
Change the prefix for sections and keys.
Definition: CConfigFilePrefixer.cpp:36
THROW_EXCEPTION_FMT
#define THROW_EXCEPTION_FMT(_FORMAT_STRING,...)
Definition: exceptions.h:69
mrpt::config::CConfigFilePrefixer::bind
void bind(const CConfigFileBase &o)
Make this object to wrap the given existing CConfigFileBase object.
Definition: CConfigFilePrefixer.cpp:31
mrpt::rtti::findRegisteredClass
const TRuntimeClassId * findRegisteredClass(const std::string &className, const bool allow_ignore_namespace=true)
Return info about a given class by its name, or nullptr if the class is not registered.
Definition: internal_class_registry.cpp:240
CConfigFilePrefixer.h
mrpt::ptr_cast::from
static CAST_TO::Ptr from(const CAST_FROM_PTR &ptr)
Definition: CObject.h:356
MRPT_START
#define MRPT_START
Definition: exceptions.h:241
mrpt::config::CConfigFileBase
This class allows loading and storing values and vectors of different types from a configuration text...
Definition: config/CConfigFileBase.h:44
mrpt::config::CConfigFilePrefixer
A wrapper for other CConfigFileBase-based objects that prefixes a given token to every key and/or sec...
Definition: CConfigFilePrefixer.h:37
mrpt::nav::CParameterizedTrajectoryGenerator::Ptr
std::shared_ptr< CParameterizedTrajectoryGenerator > Ptr
Definition: CParameterizedTrajectoryGenerator.h:82
mrpt::nav::CParameterizedTrajectoryGenerator::CreatePTG
static CParameterizedTrajectoryGenerator::Ptr CreatePTG(const std::string &ptgClassName, const mrpt::config::CConfigFileBase &cfg, const std::string &sSection, const std::string &sKeyPrefix)
The class factory for creating a PTG from a list of parameters in a section of a given config file (p...
Definition: CParameterizedTrajectoryGenerator_factory.cpp:22
MRPT_END
#define MRPT_END
Definition: exceptions.h:245
mrpt::rtti::TRuntimeClassId::createObject
std::shared_ptr< CObject > createObject() const
Definition: CObject.cpp:79
mrpt::system::trim
std::string trim(const std::string &str)
Removes leading and trailing spaces.
Definition: string_utils.cpp:270



Page generated by Doxygen 1.8.17 for MRPT 2.0.3 at Thu May 21 21:53:32 UTC 2020