ORCA: Optimization-based framework for Robotic Control Applications
ConfigurableOrcaObject.h
Go to the documentation of this file.
1 #pragma once
2 #include <orca/utils/Utils.h>
5 
6 namespace orca
7 {
8  namespace common
9  {
15  {
16  public:
17  using Ptr = std::shared_ptr<ConfigurableOrcaObject>;
18  using ParamMap = std::map<std::string, ParameterBase* >;
19 
20  ConfigurableOrcaObject(const std::string& config_name);
21  virtual ~ConfigurableOrcaObject();
27  template<class T>
28  void addParameter(const std::string& param_name,Parameter<T>* param
30  , std::function<void()> on_loading_success = 0)
31  {
32  this->addParameter(param_name,static_cast<ParameterBase*>(param),policy,on_loading_success);
33  }
34 
35  template<class T>
36  void addParameter(const std::string& param_name,T& param
38  , std::function<void()> on_loading_success = 0)
39  {
40  parameters_to_delete_.push_back(new Parameter<T>(param));
41  this->addParameter(param_name,parameters_to_delete_.back(),policy,on_loading_success);
42  }
43 
50  ParameterBase* getParameter(const std::string& param_name);
54  void printParameters() const;
60  bool configureFromFile(const std::string& yaml_url);
66  bool configureFromString(const std::string& yaml_str);
67 
68  bool isConfigured() const;
69 
70  const ParamMap& getParameters() const;
71 
72  void onConfigureSuccess(std::function<void()> f);
73  private:
74  void addParameter(const std::string& param_name,ParameterBase* param
76  , std::function<void()> on_loading_success = 0);
77  std::string fileToString(const std::string& yaml_url);
78  ParamMap parameters_;
79  std::list<ParameterBase*> parameters_to_delete_;
80  std::function<void()> on_success_;
81  bool config_loaded_ = false;
82  };
83  } // namespace common
84 } // namespace orca
Represents a set of parameters that can be loaded from a YAML file.
Definition: ConfigurableOrcaObject.h:14
bool configureFromFile(const std::string &yaml_url)
Configure the task from YAML/JSON file. It must contain all the required parameters.
Definition: ConfigurableOrcaObject.cc:85
Definition: OrcaObject.h:45
ParameterBase * getParameter(const std::string &param_name)
Returns a param via its name.
Definition: ConfigurableOrcaObject.cc:42
void addParameter(const std::string &param_name, Parameter< T > *param, ParamPolicy policy=ParamPolicy::Required, std::function< void()> on_loading_success=0)
Returns true if all params added with have been set.
Definition: ConfigurableOrcaObject.h:28
ConfigurableOrcaObject(const std::string &config_name)
Definition: ConfigurableOrcaObject.cc:6
std::shared_ptr< ConfigurableOrcaObject > Ptr
Definition: ConfigurableOrcaObject.h:17
void addParameter(const std::string &param_name, T &param, ParamPolicy policy=ParamPolicy::Required, std::function< void()> on_loading_success=0)
Definition: ConfigurableOrcaObject.h:36
const ParamMap & getParameters() const
Definition: ConfigurableOrcaObject.cc:247
void onConfigureSuccess(std::function< void()> f)
Definition: ConfigurableOrcaObject.cc:90
virtual ~ConfigurableOrcaObject()
Definition: ConfigurableOrcaObject.cc:10
Definition: CartesianAccelerationPID.h:44
std::map< std::string, ParameterBase * > ParamMap
Definition: ConfigurableOrcaObject.h:18
void printParameters() const
Print all parameters to std::cout.
Definition: ConfigurableOrcaObject.cc:52
bool isConfigured() const
Definition: ConfigurableOrcaObject.cc:234
ParameterBase is the public interface to any parameter.
Definition: ParameterBase.h:21
ParamPolicy
The ParamPolicy defines if an error should be thrown when trying to do anything with the task before ...
Definition: ParameterBase.h:13
This class holds the conversion from a string (YAML string) to the data type.
Definition: Parameter.h:113
bool configureFromString(const std::string &yaml_str)
Configure the task from YAML/JSON string. It must contain all the required parameters.
Definition: ConfigurableOrcaObject.cc:95