10 #ifndef __move_base__MOVEBASECONFIG_H__ 11 #define __move_base__MOVEBASECONFIG_H__ 13 #include <dynamic_reconfigure/config_tools.h> 15 #include <ros/node_handle.h> 16 #include <dynamic_reconfigure/ConfigDescription.h> 17 #include <dynamic_reconfigure/ParamDescription.h> 18 #include <dynamic_reconfigure/Group.h> 19 #include <dynamic_reconfigure/config_init_mutex.h> 20 #include <boost/any.hpp> 24 class MoveBaseConfigStatics;
33 std::string d, std::string e)
44 virtual void fromServer(
const ros::NodeHandle &nh,
MoveBaseConfig &config)
const = 0;
45 virtual void toServer(
const ros::NodeHandle &nh,
const MoveBaseConfig &config)
const = 0;
46 virtual bool fromMessage(
const dynamic_reconfigure::Config &msg,
MoveBaseConfig &config)
const = 0;
47 virtual void toMessage(dynamic_reconfigure::Config &msg,
const MoveBaseConfig &config)
const = 0;
48 virtual void getValue(
const MoveBaseConfig &config, boost::any &val)
const = 0;
51 typedef boost::shared_ptr<AbstractParamDescription> AbstractParamDescriptionPtr;
52 typedef boost::shared_ptr<const AbstractParamDescription> AbstractParamDescriptionConstPtr;
59 std::string description, std::string edit_method, T
MoveBaseConfig::* f) :
68 if (config.*field > max.*field)
69 config.*field = max.*field;
71 if (config.*field < min.*field)
72 config.*field = min.*field;
77 if (config1.*field != config2.*field)
81 virtual void fromServer(
const ros::NodeHandle &nh,
MoveBaseConfig &config)
const 83 nh.getParam(name, config.*field);
86 virtual void toServer(
const ros::NodeHandle &nh,
const MoveBaseConfig &config)
const 88 nh.setParam(name, config.*field);
91 virtual bool fromMessage(
const dynamic_reconfigure::Config &msg,
MoveBaseConfig &config)
const 93 return dynamic_reconfigure::ConfigTools::getParameter(msg, name, config.*field);
96 virtual void toMessage(dynamic_reconfigure::Config &msg,
const MoveBaseConfig &config)
const 98 dynamic_reconfigure::ConfigTools::appendParameter(msg, name, config.*field);
101 virtual void getValue(
const MoveBaseConfig &config, boost::any &val)
const 119 std::vector<AbstractParamDescriptionConstPtr> abstract_parameters;
122 virtual void toMessage(dynamic_reconfigure::Config &msg,
const boost::any &config)
const = 0;
123 virtual bool fromMessage(
const dynamic_reconfigure::Config &msg, boost::any &config)
const =0;
124 virtual void updateParams(boost::any &cfg,
MoveBaseConfig &top)
const= 0;
125 virtual void setInitialState(boost::any &cfg)
const = 0;
130 for(std::vector<AbstractParamDescriptionConstPtr>::const_iterator i = abstract_parameters.begin(); i != abstract_parameters.end(); ++i)
132 parameters.push_back(dynamic_reconfigure::ParamDescription(**i));
137 typedef boost::shared_ptr<AbstractGroupDescription> AbstractGroupDescriptionPtr;
138 typedef boost::shared_ptr<const AbstractGroupDescription> AbstractGroupDescriptionConstPtr;
140 template<
class T,
class PT>
144 GroupDescription(std::string name, std::string type,
int parent,
int id,
bool s, T PT::* f) :
AbstractGroupDescription(name, type, parent,
id, s), field(f)
150 parameters = g.parameters;
151 abstract_parameters = g.abstract_parameters;
154 virtual bool fromMessage(
const dynamic_reconfigure::Config &msg, boost::any &cfg)
const 156 PT* config = boost::any_cast<PT*>(cfg);
157 if(!dynamic_reconfigure::ConfigTools::getGroupState(msg, name, (*config).*field))
160 for(std::vector<AbstractGroupDescriptionConstPtr>::const_iterator i = groups.begin(); i != groups.end(); ++i)
162 boost::any n = &((*config).*field);
163 if(!(*i)->fromMessage(msg, n))
170 virtual void setInitialState(boost::any &cfg)
const 172 PT* config = boost::any_cast<PT*>(cfg);
173 T* group = &((*config).*field);
174 group->state = state;
176 for(std::vector<AbstractGroupDescriptionConstPtr>::const_iterator i = groups.begin(); i != groups.end(); ++i)
178 boost::any n = boost::any(&((*config).*field));
179 (*i)->setInitialState(n);
184 virtual void updateParams(boost::any &cfg,
MoveBaseConfig &top)
const 186 PT* config = boost::any_cast<PT*>(cfg);
188 T* f = &((*config).*field);
189 f->setParams(top, abstract_parameters);
191 for(std::vector<AbstractGroupDescriptionConstPtr>::const_iterator i = groups.begin(); i != groups.end(); ++i)
193 boost::any n = &((*config).*field);
194 (*i)->updateParams(n, top);
198 virtual void toMessage(dynamic_reconfigure::Config &msg,
const boost::any &cfg)
const 200 const PT config = boost::any_cast<PT>(cfg);
201 dynamic_reconfigure::ConfigTools::appendGroup<T>(msg, name, id, parent, config.*field);
203 for(std::vector<AbstractGroupDescriptionConstPtr>::const_iterator i = groups.begin(); i != groups.end(); ++i)
205 (*i)->toMessage(msg, config.*field);
210 std::vector<MoveBaseConfig::AbstractGroupDescriptionConstPtr> groups;
222 void setParams(
MoveBaseConfig &config,
const std::vector<AbstractParamDescriptionConstPtr> params)
224 for (std::vector<AbstractParamDescriptionConstPtr>::const_iterator _i = params.begin(); _i != params.end(); ++_i)
227 (*_i)->getValue(config, val);
229 if(
"base_global_planner"==(*_i)->name){base_global_planner = boost::any_cast<std::string>(val);}
230 if(
"base_local_planner"==(*_i)->name){base_local_planner = boost::any_cast<std::string>(val);}
231 if(
"planner_frequency"==(*_i)->name){planner_frequency = boost::any_cast<
double>(val);}
232 if(
"controller_frequency"==(*_i)->name){controller_frequency = boost::any_cast<
double>(val);}
233 if(
"planner_patience"==(*_i)->name){planner_patience = boost::any_cast<
double>(val);}
234 if(
"controller_patience"==(*_i)->name){controller_patience = boost::any_cast<
double>(val);}
235 if(
"conservative_reset_dist"==(*_i)->name){conservative_reset_dist = boost::any_cast<
double>(val);}
236 if(
"recovery_behavior_enabled"==(*_i)->name){recovery_behavior_enabled = boost::any_cast<
bool>(val);}
237 if(
"clearing_rotation_allowed"==(*_i)->name){clearing_rotation_allowed = boost::any_cast<
bool>(val);}
238 if(
"shutdown_costmaps"==(*_i)->name){shutdown_costmaps = boost::any_cast<
bool>(val);}
239 if(
"oscillation_timeout"==(*_i)->name){oscillation_timeout = boost::any_cast<
double>(val);}
240 if(
"oscillation_distance"==(*_i)->name){oscillation_distance = boost::any_cast<
double>(val);}
241 if(
"restore_defaults"==(*_i)->name){restore_defaults = boost::any_cast<
bool>(val);}
245 std::string base_global_planner;
246 std::string base_local_planner;
247 double planner_frequency;
248 double controller_frequency;
249 double planner_patience;
250 double controller_patience;
251 double conservative_reset_dist;
252 bool recovery_behavior_enabled;
253 bool clearing_rotation_allowed;
254 bool shutdown_costmaps;
255 double oscillation_timeout;
256 double oscillation_distance;
257 bool restore_defaults;
268 std::string base_global_planner;
270 std::string base_local_planner;
272 double planner_frequency;
274 double controller_frequency;
276 double planner_patience;
278 double controller_patience;
280 double conservative_reset_dist;
282 bool recovery_behavior_enabled;
284 bool clearing_rotation_allowed;
286 bool shutdown_costmaps;
288 double oscillation_timeout;
290 double oscillation_distance;
292 bool restore_defaults;
295 bool __fromMessage__(dynamic_reconfigure::Config &msg)
297 const std::vector<AbstractParamDescriptionConstPtr> &__param_descriptions__ = __getParamDescriptions__();
298 const std::vector<AbstractGroupDescriptionConstPtr> &__group_descriptions__ = __getGroupDescriptions__();
301 for (std::vector<AbstractParamDescriptionConstPtr>::const_iterator i = __param_descriptions__.begin(); i != __param_descriptions__.end(); ++i)
302 if ((*i)->fromMessage(msg, *
this))
305 for (std::vector<AbstractGroupDescriptionConstPtr>::const_iterator i = __group_descriptions__.begin(); i != __group_descriptions__.end(); i ++)
309 boost::any n = boost::any(
this);
310 (*i)->updateParams(n, *
this);
311 (*i)->fromMessage(msg, n);
315 if (count != dynamic_reconfigure::ConfigTools::size(msg))
317 ROS_ERROR(
"MoveBaseConfig::__fromMessage__ called with an unexpected parameter.");
318 ROS_ERROR(
"Booleans:");
319 for (
unsigned int i = 0; i < msg.bools.size(); i++)
320 ROS_ERROR(
" %s", msg.bools[i].name.c_str());
321 ROS_ERROR(
"Integers:");
322 for (
unsigned int i = 0; i < msg.ints.size(); i++)
323 ROS_ERROR(
" %s", msg.ints[i].name.c_str());
324 ROS_ERROR(
"Doubles:");
325 for (
unsigned int i = 0; i < msg.doubles.size(); i++)
326 ROS_ERROR(
" %s", msg.doubles[i].name.c_str());
327 ROS_ERROR(
"Strings:");
328 for (
unsigned int i = 0; i < msg.strs.size(); i++)
329 ROS_ERROR(
" %s", msg.strs[i].name.c_str());
339 void __toMessage__(dynamic_reconfigure::Config &msg,
const std::vector<AbstractParamDescriptionConstPtr> &__param_descriptions__,
const std::vector<AbstractGroupDescriptionConstPtr> &__group_descriptions__)
const 341 dynamic_reconfigure::ConfigTools::clear(msg);
342 for (std::vector<AbstractParamDescriptionConstPtr>::const_iterator i = __param_descriptions__.begin(); i != __param_descriptions__.end(); ++i)
343 (*i)->toMessage(msg, *
this);
345 for (std::vector<AbstractGroupDescriptionConstPtr>::const_iterator i = __group_descriptions__.begin(); i != __group_descriptions__.end(); ++i)
349 (*i)->toMessage(msg, *
this);
354 void __toMessage__(dynamic_reconfigure::Config &msg)
const 356 const std::vector<AbstractParamDescriptionConstPtr> &__param_descriptions__ = __getParamDescriptions__();
357 const std::vector<AbstractGroupDescriptionConstPtr> &__group_descriptions__ = __getGroupDescriptions__();
358 __toMessage__(msg, __param_descriptions__, __group_descriptions__);
361 void __toServer__(
const ros::NodeHandle &nh)
const 363 const std::vector<AbstractParamDescriptionConstPtr> &__param_descriptions__ = __getParamDescriptions__();
364 for (std::vector<AbstractParamDescriptionConstPtr>::const_iterator i = __param_descriptions__.begin(); i != __param_descriptions__.end(); ++i)
365 (*i)->toServer(nh, *
this);
368 void __fromServer__(
const ros::NodeHandle &nh)
370 static bool setup=
false;
372 const std::vector<AbstractParamDescriptionConstPtr> &__param_descriptions__ = __getParamDescriptions__();
373 for (std::vector<AbstractParamDescriptionConstPtr>::const_iterator i = __param_descriptions__.begin(); i != __param_descriptions__.end(); ++i)
374 (*i)->fromServer(nh, *
this);
376 const std::vector<AbstractGroupDescriptionConstPtr> &__group_descriptions__ = __getGroupDescriptions__();
377 for (std::vector<AbstractGroupDescriptionConstPtr>::const_iterator i = __group_descriptions__.begin(); i != __group_descriptions__.end(); i++){
378 if (!setup && (*i)->id == 0) {
380 boost::any n = boost::any(
this);
381 (*i)->setInitialState(n);
388 const std::vector<AbstractParamDescriptionConstPtr> &__param_descriptions__ = __getParamDescriptions__();
391 for (std::vector<AbstractParamDescriptionConstPtr>::const_iterator i = __param_descriptions__.begin(); i != __param_descriptions__.end(); ++i)
392 (*i)->clamp(*
this, __max__, __min__);
397 const std::vector<AbstractParamDescriptionConstPtr> &__param_descriptions__ = __getParamDescriptions__();
399 for (std::vector<AbstractParamDescriptionConstPtr>::const_iterator i = __param_descriptions__.begin(); i != __param_descriptions__.end(); ++i)
400 (*i)->calcLevel(level, config, *
this);
404 static const dynamic_reconfigure::ConfigDescription &__getDescriptionMessage__();
408 static const std::vector<AbstractParamDescriptionConstPtr> &__getParamDescriptions__();
409 static const std::vector<AbstractGroupDescriptionConstPtr> &__getGroupDescriptions__();
429 __min__.base_global_planner =
"";
431 __max__.base_global_planner =
"";
433 __default__.base_global_planner =
"navfn/NavfnROS";
435 Default.abstract_parameters.push_back(MoveBaseConfig::AbstractParamDescriptionConstPtr(
new MoveBaseConfig::ParamDescription<std::string>(
"base_global_planner",
"str", 0,
"The name of the plugin for the global planner to use with move_base.",
"", &MoveBaseConfig::base_global_planner)));
437 __param_descriptions__.push_back(MoveBaseConfig::AbstractParamDescriptionConstPtr(
new MoveBaseConfig::ParamDescription<std::string>(
"base_global_planner",
"str", 0,
"The name of the plugin for the global planner to use with move_base.",
"", &MoveBaseConfig::base_global_planner)));
439 __min__.base_local_planner =
"";
441 __max__.base_local_planner =
"";
443 __default__.base_local_planner =
"base_local_planner/TrajectoryPlannerROS";
445 Default.abstract_parameters.push_back(MoveBaseConfig::AbstractParamDescriptionConstPtr(
new MoveBaseConfig::ParamDescription<std::string>(
"base_local_planner",
"str", 0,
"The name of the plugin for the local planner to use with move_base.",
"", &MoveBaseConfig::base_local_planner)));
447 __param_descriptions__.push_back(MoveBaseConfig::AbstractParamDescriptionConstPtr(
new MoveBaseConfig::ParamDescription<std::string>(
"base_local_planner",
"str", 0,
"The name of the plugin for the local planner to use with move_base.",
"", &MoveBaseConfig::base_local_planner)));
449 __min__.planner_frequency = 0.0;
451 __max__.planner_frequency = 100.0;
453 __default__.planner_frequency = 0.0;
455 Default.abstract_parameters.push_back(MoveBaseConfig::AbstractParamDescriptionConstPtr(
new MoveBaseConfig::ParamDescription<double>(
"planner_frequency",
"double", 0,
"The rate in Hz at which to run the planning loop.",
"", &MoveBaseConfig::planner_frequency)));
457 __param_descriptions__.push_back(MoveBaseConfig::AbstractParamDescriptionConstPtr(
new MoveBaseConfig::ParamDescription<double>(
"planner_frequency",
"double", 0,
"The rate in Hz at which to run the planning loop.",
"", &MoveBaseConfig::planner_frequency)));
459 __min__.controller_frequency = 0.0;
461 __max__.controller_frequency = 100.0;
463 __default__.controller_frequency = 20.0;
465 Default.abstract_parameters.push_back(MoveBaseConfig::AbstractParamDescriptionConstPtr(
new MoveBaseConfig::ParamDescription<double>(
"controller_frequency",
"double", 0,
"The rate in Hz at which to run the control loop and send velocity commands to the base.",
"", &MoveBaseConfig::controller_frequency)));
467 __param_descriptions__.push_back(MoveBaseConfig::AbstractParamDescriptionConstPtr(
new MoveBaseConfig::ParamDescription<double>(
"controller_frequency",
"double", 0,
"The rate in Hz at which to run the control loop and send velocity commands to the base.",
"", &MoveBaseConfig::controller_frequency)));
469 __min__.planner_patience = 0.0;
471 __max__.planner_patience = 100.0;
473 __default__.planner_patience = 5.0;
475 Default.abstract_parameters.push_back(MoveBaseConfig::AbstractParamDescriptionConstPtr(
new MoveBaseConfig::ParamDescription<double>(
"planner_patience",
"double", 0,
"How long the planner will wait in seconds in an attempt to find a valid plan before space-clearing operations are performed.",
"", &MoveBaseConfig::planner_patience)));
477 __param_descriptions__.push_back(MoveBaseConfig::AbstractParamDescriptionConstPtr(
new MoveBaseConfig::ParamDescription<double>(
"planner_patience",
"double", 0,
"How long the planner will wait in seconds in an attempt to find a valid plan before space-clearing operations are performed.",
"", &MoveBaseConfig::planner_patience)));
479 __min__.controller_patience = 0.0;
481 __max__.controller_patience = 100.0;
483 __default__.controller_patience = 5.0;
485 Default.abstract_parameters.push_back(MoveBaseConfig::AbstractParamDescriptionConstPtr(
new MoveBaseConfig::ParamDescription<double>(
"controller_patience",
"double", 0,
"How long the controller will wait in seconds without receiving a valid control before space-clearing operations are performed.",
"", &MoveBaseConfig::controller_patience)));
487 __param_descriptions__.push_back(MoveBaseConfig::AbstractParamDescriptionConstPtr(
new MoveBaseConfig::ParamDescription<double>(
"controller_patience",
"double", 0,
"How long the controller will wait in seconds without receiving a valid control before space-clearing operations are performed.",
"", &MoveBaseConfig::controller_patience)));
489 __min__.conservative_reset_dist = 0.0;
491 __max__.conservative_reset_dist = 50.0;
493 __default__.conservative_reset_dist = 3.0;
495 Default.abstract_parameters.push_back(MoveBaseConfig::AbstractParamDescriptionConstPtr(
new MoveBaseConfig::ParamDescription<double>(
"conservative_reset_dist",
"double", 0,
"The distance away from the robot in meters at which obstacles will be cleared from the costmap when attempting to clear space in the map.",
"", &MoveBaseConfig::conservative_reset_dist)));
497 __param_descriptions__.push_back(MoveBaseConfig::AbstractParamDescriptionConstPtr(
new MoveBaseConfig::ParamDescription<double>(
"conservative_reset_dist",
"double", 0,
"The distance away from the robot in meters at which obstacles will be cleared from the costmap when attempting to clear space in the map.",
"", &MoveBaseConfig::conservative_reset_dist)));
499 __min__.recovery_behavior_enabled = 0;
501 __max__.recovery_behavior_enabled = 1;
503 __default__.recovery_behavior_enabled = 1;
505 Default.abstract_parameters.push_back(MoveBaseConfig::AbstractParamDescriptionConstPtr(
new MoveBaseConfig::ParamDescription<bool>(
"recovery_behavior_enabled",
"bool", 0,
"Whether or not to enable the move_base recovery behaviors to attempt to clear out space.",
"", &MoveBaseConfig::recovery_behavior_enabled)));
507 __param_descriptions__.push_back(MoveBaseConfig::AbstractParamDescriptionConstPtr(
new MoveBaseConfig::ParamDescription<bool>(
"recovery_behavior_enabled",
"bool", 0,
"Whether or not to enable the move_base recovery behaviors to attempt to clear out space.",
"", &MoveBaseConfig::recovery_behavior_enabled)));
509 __min__.clearing_rotation_allowed = 0;
511 __max__.clearing_rotation_allowed = 1;
513 __default__.clearing_rotation_allowed = 1;
515 Default.abstract_parameters.push_back(MoveBaseConfig::AbstractParamDescriptionConstPtr(
new MoveBaseConfig::ParamDescription<bool>(
"clearing_rotation_allowed",
"bool", 0,
"Determines whether or not the robot will attempt an in-place rotation when attempting to clear out space.",
"", &MoveBaseConfig::clearing_rotation_allowed)));
517 __param_descriptions__.push_back(MoveBaseConfig::AbstractParamDescriptionConstPtr(
new MoveBaseConfig::ParamDescription<bool>(
"clearing_rotation_allowed",
"bool", 0,
"Determines whether or not the robot will attempt an in-place rotation when attempting to clear out space.",
"", &MoveBaseConfig::clearing_rotation_allowed)));
519 __min__.shutdown_costmaps = 0;
521 __max__.shutdown_costmaps = 1;
523 __default__.shutdown_costmaps = 0;
525 Default.abstract_parameters.push_back(MoveBaseConfig::AbstractParamDescriptionConstPtr(
new MoveBaseConfig::ParamDescription<bool>(
"shutdown_costmaps",
"bool", 0,
"Determines whether or not to shutdown the costmaps of the node when move_base is in an inactive state",
"", &MoveBaseConfig::shutdown_costmaps)));
527 __param_descriptions__.push_back(MoveBaseConfig::AbstractParamDescriptionConstPtr(
new MoveBaseConfig::ParamDescription<bool>(
"shutdown_costmaps",
"bool", 0,
"Determines whether or not to shutdown the costmaps of the node when move_base is in an inactive state",
"", &MoveBaseConfig::shutdown_costmaps)));
529 __min__.oscillation_timeout = 0.0;
531 __max__.oscillation_timeout = 60.0;
533 __default__.oscillation_timeout = 0.0;
535 Default.abstract_parameters.push_back(MoveBaseConfig::AbstractParamDescriptionConstPtr(
new MoveBaseConfig::ParamDescription<double>(
"oscillation_timeout",
"double", 0,
"How long in seconds to allow for oscillation before executing recovery behaviors.",
"", &MoveBaseConfig::oscillation_timeout)));
537 __param_descriptions__.push_back(MoveBaseConfig::AbstractParamDescriptionConstPtr(
new MoveBaseConfig::ParamDescription<double>(
"oscillation_timeout",
"double", 0,
"How long in seconds to allow for oscillation before executing recovery behaviors.",
"", &MoveBaseConfig::oscillation_timeout)));
539 __min__.oscillation_distance = 0.0;
541 __max__.oscillation_distance = 10.0;
543 __default__.oscillation_distance = 0.5;
545 Default.abstract_parameters.push_back(MoveBaseConfig::AbstractParamDescriptionConstPtr(
new MoveBaseConfig::ParamDescription<double>(
"oscillation_distance",
"double", 0,
"How far in meters the robot must move to be considered not to be oscillating.",
"", &MoveBaseConfig::oscillation_distance)));
547 __param_descriptions__.push_back(MoveBaseConfig::AbstractParamDescriptionConstPtr(
new MoveBaseConfig::ParamDescription<double>(
"oscillation_distance",
"double", 0,
"How far in meters the robot must move to be considered not to be oscillating.",
"", &MoveBaseConfig::oscillation_distance)));
549 __min__.restore_defaults = 0;
551 __max__.restore_defaults = 1;
553 __default__.restore_defaults = 0;
555 Default.abstract_parameters.push_back(MoveBaseConfig::AbstractParamDescriptionConstPtr(
new MoveBaseConfig::ParamDescription<bool>(
"restore_defaults",
"bool", 0,
"Restore to the original configuration",
"", &MoveBaseConfig::restore_defaults)));
557 __param_descriptions__.push_back(MoveBaseConfig::AbstractParamDescriptionConstPtr(
new MoveBaseConfig::ParamDescription<bool>(
"restore_defaults",
"bool", 0,
"Restore to the original configuration",
"", &MoveBaseConfig::restore_defaults)));
559 Default.convertParams();
564 for (std::vector<MoveBaseConfig::AbstractGroupDescriptionConstPtr>::const_iterator i = __group_descriptions__.begin(); i != __group_descriptions__.end(); ++i)
566 __description_message__.groups.push_back(**i);
568 __max__.__toMessage__(__description_message__.max, __param_descriptions__, __group_descriptions__);
569 __min__.__toMessage__(__description_message__.min, __param_descriptions__, __group_descriptions__);
570 __default__.__toMessage__(__description_message__.dflt, __param_descriptions__, __group_descriptions__);
572 std::vector<MoveBaseConfig::AbstractParamDescriptionConstPtr> __param_descriptions__;
573 std::vector<MoveBaseConfig::AbstractGroupDescriptionConstPtr> __group_descriptions__;
577 dynamic_reconfigure::ConfigDescription __description_message__;
590 inline const dynamic_reconfigure::ConfigDescription &MoveBaseConfig::__getDescriptionMessage__()
592 return __get_statics__()->__description_message__;
597 return __get_statics__()->__default__;
602 return __get_statics__()->__max__;
607 return __get_statics__()->__min__;
610 inline const std::vector<MoveBaseConfig::AbstractParamDescriptionConstPtr> &MoveBaseConfig::__getParamDescriptions__()
612 return __get_statics__()->__param_descriptions__;
615 inline const std::vector<MoveBaseConfig::AbstractGroupDescriptionConstPtr> &MoveBaseConfig::__getGroupDescriptions__()
617 return __get_statics__()->__group_descriptions__;
627 boost::mutex::scoped_lock lock(dynamic_reconfigure::__init_mutex__);
632 statics = MoveBaseConfigStatics::get_instance();
640 #endif // __MOVEBASERECONFIGURATOR_H__ Definition: MoveBaseConfig.h:421
Definition: MoveBaseConfig.h:29
Definition: MoveBaseConfig.h:107
Definition: MoveBaseConfig.h:26
Definition: MoveBaseConfig.h:141
Definition: MoveBaseConfig.h:55
Definition: MoveBaseConfig.h:22
Definition: MoveBaseConfig.h:213