11 #ifndef __sick_scan_fusion__TF_DYNCONFIG_H__
12 #define __sick_scan_fusion__TF_DYNCONFIG_H__
14 #if __cplusplus >= 201103L
15 #define DYNAMIC_RECONFIGURE_FINAL final
17 #define DYNAMIC_RECONFIGURE_FINAL
22 #include <ros/node_handle.h>
40 std::string d, std::string e)
68 std::string a_description, std::string a_edit_method, T
tf_dynConfig::* a_f) :
77 if (
config.*field > max.*field)
78 config.*field = max.*field;
86 if (config1.*field != config2.*field)
151 template<
class T,
class PT>
155 GroupDescription(std::string a_name, std::string a_type,
int a_parent,
int a_id,
bool a_s, T PT::* a_f) :
AbstractGroupDescription(a_name, a_type, a_parent, a_id, a_s), field(a_f)
161 parameters = g.parameters;
162 abstract_parameters = g.abstract_parameters;
167 PT*
config = boost::any_cast<PT*>(cfg);
171 for(std::vector<AbstractGroupDescriptionConstPtr>::const_iterator i =
groups.begin(); i !=
groups.end(); ++i)
173 boost::any n = &((*config).*field);
174 if(!(*i)->fromMessage(
msg, n))
183 PT*
config = boost::any_cast<PT*>(cfg);
184 T* group = &((*config).*field);
185 group->state = state;
187 for(std::vector<AbstractGroupDescriptionConstPtr>::const_iterator i =
groups.begin(); i !=
groups.end(); ++i)
189 boost::any n = boost::any(&((*config).*field));
190 (*i)->setInitialState(n);
197 PT*
config = boost::any_cast<PT*>(cfg);
199 T*
f = &((*config).*field);
200 f->setParams(top, abstract_parameters);
202 for(std::vector<AbstractGroupDescriptionConstPtr>::const_iterator i =
groups.begin(); i !=
groups.end(); ++i)
204 boost::any n = &((*config).*field);
205 (*i)->updateParams(n, top);
211 const PT
config = boost::any_cast<PT>(cfg);
212 dynamic_reconfigure::ConfigTools::appendGroup<T>(
msg,
name,
id, parent,
config.*field);
214 for(std::vector<AbstractGroupDescriptionConstPtr>::const_iterator i =
groups.begin(); i !=
groups.end(); ++i)
221 std::vector<tf_dynConfig::AbstractGroupDescriptionConstPtr>
groups;
235 for (std::vector<AbstractParamDescriptionConstPtr>::const_iterator _i = params.begin(); _i != params.end(); ++_i)
238 (*_i)->getValue(
config, val);
240 if(
"parent_frame"==(*_i)->name){
parent_frame = boost::any_cast<std::string>(val);}
241 if(
"child_frame"==(*_i)->name){
child_frame = boost::any_cast<std::string>(val);}
242 if(
"tf_x"==(*_i)->name){
tf_x = boost::any_cast<double>(val);}
243 if(
"tf_y"==(*_i)->name){
tf_y = boost::any_cast<double>(val);}
244 if(
"tf_z"==(*_i)->name){
tf_z = boost::any_cast<double>(val);}
245 if(
"tf_rot_x"==(*_i)->name){
tf_rot_x = boost::any_cast<double>(val);}
246 if(
"tf_rot_y"==(*_i)->name){
tf_rot_y = boost::any_cast<double>(val);}
247 if(
"tf_rot_z"==(*_i)->name){
tf_rot_z = boost::any_cast<double>(val);}
292 for (std::vector<AbstractParamDescriptionConstPtr>::const_iterator i = __param_descriptions__.begin(); i != __param_descriptions__.end(); ++i)
293 if ((*i)->fromMessage(
msg, *
this))
296 for (std::vector<AbstractGroupDescriptionConstPtr>::const_iterator i = __group_descriptions__.begin(); i != __group_descriptions__.end(); i ++)
300 boost::any n = boost::any(
this);
301 (*i)->updateParams(n, *
this);
302 (*i)->fromMessage(
msg, n);
308 ROS_ERROR(
"tf_dynConfig::__fromMessage__ called with an unexpected parameter.");
310 for (
unsigned int i = 0; i <
msg.bools.size(); i++)
313 for (
unsigned int i = 0; i <
msg.ints.size(); i++)
316 for (
unsigned int i = 0; i <
msg.doubles.size(); i++)
319 for (
unsigned int i = 0; i <
msg.strs.size(); i++)
330 void __toMessage__(
dynamic_reconfigure::Config &msg,
const std::vector<AbstractParamDescriptionConstPtr> &__param_descriptions__,
const std::vector<AbstractGroupDescriptionConstPtr> &__group_descriptions__)
const
333 for (std::vector<AbstractParamDescriptionConstPtr>::const_iterator i = __param_descriptions__.begin(); i != __param_descriptions__.end(); ++i)
334 (*i)->toMessage(
msg, *
this);
336 for (std::vector<AbstractGroupDescriptionConstPtr>::const_iterator i = __group_descriptions__.begin(); i != __group_descriptions__.end(); ++i)
340 (*i)->toMessage(
msg, *
this);
355 for (std::vector<AbstractParamDescriptionConstPtr>::const_iterator i = __param_descriptions__.begin(); i != __param_descriptions__.end(); ++i)
356 (*i)->toServer(nh, *
this);
361 static bool setup=
false;
364 for (std::vector<AbstractParamDescriptionConstPtr>::const_iterator i = __param_descriptions__.begin(); i != __param_descriptions__.end(); ++i)
365 (*i)->fromServer(nh, *
this);
368 for (std::vector<AbstractGroupDescriptionConstPtr>::const_iterator i = __group_descriptions__.begin(); i != __group_descriptions__.end(); i++){
369 if (!
setup && (*i)->id == 0) {
371 boost::any n = boost::any(
this);
372 (*i)->setInitialState(n);
382 for (std::vector<AbstractParamDescriptionConstPtr>::const_iterator i = __param_descriptions__.begin(); i != __param_descriptions__.end(); ++i)
383 (*i)->clamp(*
this, __max__, __min__);
390 for (std::vector<AbstractParamDescriptionConstPtr>::const_iterator i = __param_descriptions__.begin(); i != __param_descriptions__.end(); ++i)
391 (*i)->calcLevel(level,
config, *
this);
407 inline void tf_dynConfig::ParamDescription<std::string>::clamp(tf_dynConfig &config,
const tf_dynConfig &max,
const tf_dynConfig &min)
const
584 #undef DYNAMIC_RECONFIGURE_FINAL
586 #endif // __TF_DYNRECONFIGURATOR_H__