ddynamic_reconfigure.h
Go to the documentation of this file.
1 
31 #ifndef _DDYNAMIC_RECONFIGURE_
32 #define _DDYNAMIC_RECONFIGURE_
33 
34 #include <dynamic_reconfigure/server.h>
37 #include <ros/ros.h>
38 #include <ros/callback_queue.h>
39 #include <ros/spinner.h>
40 #include <atomic>
41 
43 {
52 {
53 public:
61  DDynamicReconfigure(const ros::NodeHandle &nh = ros::NodeHandle("~"), bool auto_update = true);
62 
63  virtual ~DDynamicReconfigure();
64 
72  template <typename T>
73  void registerVariable(const std::string &name, T *variable,
74  const std::string &description = "", T min = getMin<T>(),
75  T max = getMax<T>(), const std::string &group = "Default");
76 
77  template <typename T>
78  void registerEnumVariable(const std::string &name, T *variable,
79  const std::string &description = "",
80  std::map<std::string, T> enum_dict = {},
81  const std::string &enum_description = "",
82  const std::string &group = "Default");
88  template <typename T>
89  void registerVariable(const std::string &name, T *variable,
90  const boost::function<void(T value)> &callback,
91  const std::string &description = "", T min = getMin<T>(),
92  T max = getMax<T>(), const std::string &group = "Default");
93 
94  template <typename T>
95  void registerEnumVariable(const std::string &name, T *variable,
96  const boost::function<void(T)> &callback,
97  const std::string &description,
98  std::map<std::string, T> enum_dict = {},
99  const std::string &enum_description = "",
100  const std::string &group = "Default");
101 
109  template <typename T>
110  void registerVariable(const std::string &name, T current_value,
111  const boost::function<void(T value)> &callback,
112  const std::string &description = "", T min = getMin<T>(),
113  T max = getMax<T>(), const std::string &group = "Default");
114 
115  template <typename T>
116  void registerEnumVariable(const std::string &name, T current_value,
117  const boost::function<void(T)> &callback,
118  const std::string &description,
119  std::map<std::string, T> enum_dict = {},
120  const std::string &enum_description = "",
121  const std::string &group = "Default");
122 
127  virtual void publishServicesTopics();
128 
129  virtual void updatePublishedInformation();
130 
131  typedef boost::function<void()> UserCallbackType;
132 
137  virtual void setUserCallback(const UserCallbackType &callback);
138 
139  virtual void clearUserCallback();
140 
141 
146  virtual void RegisterVariable(double *variable, std::string id, double min = -100,
147  double max = 100);
148 
149  virtual void RegisterVariable(int *variable, std::string id, int min = -100, int max = 100);
150 
151  virtual void RegisterVariable(bool *variable, std::string id);
152 
153  virtual void PublishServicesTopics();
154 
159  virtual void updateRegisteredVariablesData();
160 
161 protected:
162  template <typename T>
163  std::vector<std::unique_ptr<RegisteredParam<T>>> &getRegisteredVector();
164 
165  virtual dynamic_reconfigure::ConfigDescription generateConfigDescription() const;
166 
167  virtual dynamic_reconfigure::Config generateConfig();
168 
169  virtual bool setConfigCallback(dynamic_reconfigure::Reconfigure::Request &req,
170  dynamic_reconfigure::Reconfigure::Response &rsp);
171 
172  virtual void updateConfigData(const dynamic_reconfigure::Config &config);
173 
182 
185 
186  std::atomic_bool new_config_avail_;
187 
188  // Registered variables
189  std::vector<std::unique_ptr<RegisteredParam<int>>> registered_int_;
190  std::vector<std::unique_ptr<RegisteredParam<double>>> registered_double_;
191  std::vector<std::unique_ptr<RegisteredParam<bool>>> registered_bool_;
192  std::vector<std::unique_ptr<RegisteredParam<std::string>>> registered_string_;
193  std::vector<std::string> config_groups_;
194 
195  UserCallbackType user_callback_;
196 
198  dynamic_reconfigure::Config last_config_;
199  dynamic_reconfigure::Config updated_config_;
200 };
201 
203 }
204 
205 #endif
virtual void publishServicesTopics()
publishServicesTopics starts the server once all the needed variables are registered ...
virtual bool setConfigCallback(dynamic_reconfigure::Reconfigure::Request &req, dynamic_reconfigure::Reconfigure::Response &rsp)
void registerVariable(const std::string &name, T *variable, const std::string &description="", T min=getMin< T >(), T max=getMax< T >(), const std::string &group="Default")
registerVariable register a variable to be modified via the dynamic_reconfigure API. When a change is made, it will be reflected in the variable directly
DDynamicReconfigure(const ros::NodeHandle &nh=ros::NodeHandle("~"), bool auto_update=true)
virtual void updateConfigData(const dynamic_reconfigure::Config &config)
The DDynamicReconfigure class allows to use ROS dynamic reconfigure without the need to write a custo...
std::vector< std::unique_ptr< RegisteredParam< std::string > > > registered_string_
void registerEnumVariable(const std::string &name, T *variable, const std::string &description="", std::map< std::string, T > enum_dict={}, const std::string &enum_description="", const std::string &group="Default")
virtual void setUserCallback(const UserCallbackType &callback)
setUserCallback An optional callback that will be called whenever a value is changed ...
std::vector< std::unique_ptr< RegisteredParam< T > > > & getRegisteredVector()
virtual dynamic_reconfigure::Config generateConfig()
std::vector< std::unique_ptr< RegisteredParam< bool > > > registered_bool_
boost::shared_ptr< DDynamicReconfigure > DDynamicReconfigurePtr
virtual dynamic_reconfigure::ConfigDescription generateConfigDescription() const
int min(int a, int b)
std::vector< std::unique_ptr< RegisteredParam< double > > > registered_double_
std::vector< std::unique_ptr< RegisteredParam< int > > > registered_int_
virtual void RegisterVariable(double *variable, std::string id, double min=-100, double max=100)
ros::NodeHandle node_handle_
setUserCallback Set a function to be called when parameters have changed
virtual void updateRegisteredVariablesData()
updateRegisteredVariablesData - Method to be called to update the registered variable, incase the auto_update is not choosen


ddynamic_reconfigure
Author(s): Hilario Tome
autogenerated on Mon Feb 28 2022 22:12:28