00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032
00033
00034
00035
00036
00037
00038
00039
00040
00041
00042
00043
00044
00045
00046
00047 #ifndef __tibi_dabo_kinect_arm__TIBIDABOKINECTARMCONFIG_H__
00048 #define __tibi_dabo_kinect_arm__TIBIDABOKINECTARMCONFIG_H__
00049
00050 #include <dynamic_reconfigure/config_tools.h>
00051 #include <limits>
00052 #include <ros/node_handle.h>
00053 #include <dynamic_reconfigure/ConfigDescription.h>
00054 #include <dynamic_reconfigure/ParamDescription.h>
00055 #include <dynamic_reconfigure/Group.h>
00056 #include <dynamic_reconfigure/config_init_mutex.h>
00057 #include <boost/any.hpp>
00058
00059 namespace tibi_dabo_kinect_arm
00060 {
00061 class TibiDaboKinectArmConfigStatics;
00062
00063 class TibiDaboKinectArmConfig
00064 {
00065 public:
00066 class AbstractParamDescription : public dynamic_reconfigure::ParamDescription
00067 {
00068 public:
00069 AbstractParamDescription(std::string n, std::string t, uint32_t l,
00070 std::string d, std::string e)
00071 {
00072 name = n;
00073 type = t;
00074 level = l;
00075 description = d;
00076 edit_method = e;
00077 }
00078
00079 virtual void clamp(TibiDaboKinectArmConfig &config, const TibiDaboKinectArmConfig &max, const TibiDaboKinectArmConfig &min) const = 0;
00080 virtual void calcLevel(uint32_t &level, const TibiDaboKinectArmConfig &config1, const TibiDaboKinectArmConfig &config2) const = 0;
00081 virtual void fromServer(const ros::NodeHandle &nh, TibiDaboKinectArmConfig &config) const = 0;
00082 virtual void toServer(const ros::NodeHandle &nh, const TibiDaboKinectArmConfig &config) const = 0;
00083 virtual bool fromMessage(const dynamic_reconfigure::Config &msg, TibiDaboKinectArmConfig &config) const = 0;
00084 virtual void toMessage(dynamic_reconfigure::Config &msg, const TibiDaboKinectArmConfig &config) const = 0;
00085 virtual void getValue(const TibiDaboKinectArmConfig &config, boost::any &val) const = 0;
00086 };
00087
00088 typedef boost::shared_ptr<AbstractParamDescription> AbstractParamDescriptionPtr;
00089 typedef boost::shared_ptr<const AbstractParamDescription> AbstractParamDescriptionConstPtr;
00090
00091 template <class T>
00092 class ParamDescription : public AbstractParamDescription
00093 {
00094 public:
00095 ParamDescription(std::string name, std::string type, uint32_t level,
00096 std::string description, std::string edit_method, T TibiDaboKinectArmConfig::* f) :
00097 AbstractParamDescription(name, type, level, description, edit_method),
00098 field(f)
00099 {}
00100
00101 T (TibiDaboKinectArmConfig::* field);
00102
00103 virtual void clamp(TibiDaboKinectArmConfig &config, const TibiDaboKinectArmConfig &max, const TibiDaboKinectArmConfig &min) const
00104 {
00105 if (config.*field > max.*field)
00106 config.*field = max.*field;
00107
00108 if (config.*field < min.*field)
00109 config.*field = min.*field;
00110 }
00111
00112 virtual void calcLevel(uint32_t &comb_level, const TibiDaboKinectArmConfig &config1, const TibiDaboKinectArmConfig &config2) const
00113 {
00114 if (config1.*field != config2.*field)
00115 comb_level |= level;
00116 }
00117
00118 virtual void fromServer(const ros::NodeHandle &nh, TibiDaboKinectArmConfig &config) const
00119 {
00120 nh.getParam(name, config.*field);
00121 }
00122
00123 virtual void toServer(const ros::NodeHandle &nh, const TibiDaboKinectArmConfig &config) const
00124 {
00125 nh.setParam(name, config.*field);
00126 }
00127
00128 virtual bool fromMessage(const dynamic_reconfigure::Config &msg, TibiDaboKinectArmConfig &config) const
00129 {
00130 return dynamic_reconfigure::ConfigTools::getParameter(msg, name, config.*field);
00131 }
00132
00133 virtual void toMessage(dynamic_reconfigure::Config &msg, const TibiDaboKinectArmConfig &config) const
00134 {
00135 dynamic_reconfigure::ConfigTools::appendParameter(msg, name, config.*field);
00136 }
00137
00138 virtual void getValue(const TibiDaboKinectArmConfig &config, boost::any &val) const
00139 {
00140 val = config.*field;
00141 }
00142 };
00143
00144 class AbstractGroupDescription : public dynamic_reconfigure::Group
00145 {
00146 public:
00147 AbstractGroupDescription(std::string n, std::string t, int p, int i, bool s)
00148 {
00149 name = n;
00150 type = t;
00151 parent = p;
00152 state = s;
00153 id = i;
00154 }
00155
00156 std::vector<AbstractParamDescriptionConstPtr> abstract_parameters;
00157 bool state;
00158
00159 virtual void toMessage(dynamic_reconfigure::Config &msg, const boost::any &config) const = 0;
00160 virtual bool fromMessage(const dynamic_reconfigure::Config &msg, boost::any &config) const =0;
00161 virtual void updateParams(boost::any &cfg, TibiDaboKinectArmConfig &top) const= 0;
00162 virtual void setInitialState(boost::any &cfg) const = 0;
00163
00164
00165 void convertParams()
00166 {
00167 for(std::vector<AbstractParamDescriptionConstPtr>::const_iterator i = abstract_parameters.begin(); i != abstract_parameters.end(); i++)
00168 {
00169 parameters.push_back(dynamic_reconfigure::ParamDescription(**i));
00170 }
00171 }
00172 };
00173
00174 typedef boost::shared_ptr<AbstractGroupDescription> AbstractGroupDescriptionPtr;
00175 typedef boost::shared_ptr<const AbstractGroupDescription> AbstractGroupDescriptionConstPtr;
00176
00177 template<class T, class PT>
00178 class GroupDescription : public AbstractGroupDescription
00179 {
00180 public:
00181 GroupDescription(std::string name, std::string type, int parent, int id, bool s, T PT::* f) : AbstractGroupDescription(name, type, parent, id, s), field(f)
00182 {
00183 }
00184
00185 GroupDescription(const GroupDescription<T, PT>& g): AbstractGroupDescription(g.name, g.type, g.parent, g.id, g.state), field(g.field), groups(g.groups)
00186 {
00187 parameters = g.parameters;
00188 abstract_parameters = g.abstract_parameters;
00189 }
00190
00191 virtual bool fromMessage(const dynamic_reconfigure::Config &msg, boost::any &cfg) const
00192 {
00193 PT* config = boost::any_cast<PT*>(cfg);
00194 if(!dynamic_reconfigure::ConfigTools::getGroupState(msg, name, (*config).*field))
00195 return false;
00196
00197 for(std::vector<AbstractGroupDescriptionConstPtr>::const_iterator i = groups.begin(); i != groups.end(); i++)
00198 {
00199 boost::any n = &((*config).*field);
00200 if(!(*i)->fromMessage(msg, n))
00201 return false;
00202 }
00203
00204 return true;
00205 }
00206
00207 virtual void setInitialState(boost::any &cfg) const
00208 {
00209 PT* config = boost::any_cast<PT*>(cfg);
00210 T* group = &((*config).*field);
00211 group->state = state;
00212
00213 for(std::vector<AbstractGroupDescriptionConstPtr>::const_iterator i = groups.begin(); i != groups.end(); i++)
00214 {
00215 boost::any n = boost::any(&((*config).*field));
00216 (*i)->setInitialState(n);
00217 }
00218
00219 }
00220
00221 virtual void updateParams(boost::any &cfg, TibiDaboKinectArmConfig &top) const
00222 {
00223 PT* config = boost::any_cast<PT*>(cfg);
00224
00225 T* f = &((*config).*field);
00226 f->setParams(top, abstract_parameters);
00227
00228 for(std::vector<AbstractGroupDescriptionConstPtr>::const_iterator i = groups.begin(); i != groups.end(); i++)
00229 {
00230 boost::any n = &((*config).*field);
00231 (*i)->updateParams(n, top);
00232 }
00233 }
00234
00235 virtual void toMessage(dynamic_reconfigure::Config &msg, const boost::any &cfg) const
00236 {
00237 const PT config = boost::any_cast<PT>(cfg);
00238 dynamic_reconfigure::ConfigTools::appendGroup<T>(msg, name, id, parent, config.*field);
00239
00240 for(std::vector<AbstractGroupDescriptionConstPtr>::const_iterator i = groups.begin(); i != groups.end(); i++)
00241 {
00242 (*i)->toMessage(msg, config.*field);
00243 }
00244 }
00245
00246 T (PT::* field);
00247 std::vector<TibiDaboKinectArmConfig::AbstractGroupDescriptionConstPtr> groups;
00248 };
00249
00250 class DEFAULT
00251 {
00252 public:
00253 DEFAULT()
00254 {
00255 state = true;
00256 name = "Default";
00257 }
00258
00259 void setParams(TibiDaboKinectArmConfig &config, const std::vector<AbstractParamDescriptionConstPtr> params)
00260 {
00261 for (std::vector<AbstractParamDescriptionConstPtr>::const_iterator i = params.begin(); i != params.end(); i++)
00262 {
00263 boost::any val;
00264 (*i)->getValue(config, val);
00265
00266 if("arm_id"==(*i)->name){arm_id = boost::any_cast<std::string>(val);}
00267 if("debug"==(*i)->name){debug = boost::any_cast<bool>(val);}
00268 if("angle_mode_debug"==(*i)->name){angle_mode_debug = boost::any_cast<bool>(val);}
00269 if("x_debug"==(*i)->name){x_debug = boost::any_cast<double>(val);}
00270 if("y_debug"==(*i)->name){y_debug = boost::any_cast<double>(val);}
00271 if("z_debug"==(*i)->name){z_debug = boost::any_cast<double>(val);}
00272 if("theta1_debug"==(*i)->name){theta1_debug = boost::any_cast<double>(val);}
00273 if("theta2_debug"==(*i)->name){theta2_debug = boost::any_cast<double>(val);}
00274 if("theta3_debug"==(*i)->name){theta3_debug = boost::any_cast<double>(val);}
00275 if("theta4_debug"==(*i)->name){theta4_debug = boost::any_cast<double>(val);}
00276 }
00277 }
00278
00279 std::string arm_id;
00280 bool debug;
00281 bool angle_mode_debug;
00282 double x_debug;
00283 double y_debug;
00284 double z_debug;
00285 double theta1_debug;
00286 double theta2_debug;
00287 double theta3_debug;
00288 double theta4_debug;
00289
00290 bool state;
00291 std::string name;
00292
00293
00294 }groups;
00295
00296
00297
00298
00299 std::string arm_id;
00300
00301 bool debug;
00302
00303 bool angle_mode_debug;
00304
00305 double x_debug;
00306
00307 double y_debug;
00308
00309 double z_debug;
00310
00311 double theta1_debug;
00312
00313 double theta2_debug;
00314
00315 double theta3_debug;
00316
00317 double theta4_debug;
00318
00319
00320 bool __fromMessage__(dynamic_reconfigure::Config &msg)
00321 {
00322 const std::vector<AbstractParamDescriptionConstPtr> &__param_descriptions__ = __getParamDescriptions__();
00323 const std::vector<AbstractGroupDescriptionConstPtr> &__group_descriptions__ = __getGroupDescriptions__();
00324
00325 int count = 0;
00326 for (std::vector<AbstractParamDescriptionConstPtr>::const_iterator i = __param_descriptions__.begin(); i != __param_descriptions__.end(); i++)
00327 if ((*i)->fromMessage(msg, *this))
00328 count++;
00329
00330 for (std::vector<AbstractGroupDescriptionConstPtr>::const_iterator i = __group_descriptions__.begin(); i != __group_descriptions__.end(); i ++)
00331 {
00332 if ((*i)->id == 0)
00333 {
00334 boost::any n = boost::any(this);
00335 (*i)->updateParams(n, *this);
00336 (*i)->fromMessage(msg, n);
00337 }
00338 }
00339
00340 if (count != dynamic_reconfigure::ConfigTools::size(msg))
00341 {
00342 ROS_ERROR("TibiDaboKinectArmConfig::__fromMessage__ called with an unexpected parameter.");
00343 ROS_ERROR("Booleans:");
00344 for (unsigned int i = 0; i < msg.bools.size(); i++)
00345 ROS_ERROR(" %s", msg.bools[i].name.c_str());
00346 ROS_ERROR("Integers:");
00347 for (unsigned int i = 0; i < msg.ints.size(); i++)
00348 ROS_ERROR(" %s", msg.ints[i].name.c_str());
00349 ROS_ERROR("Doubles:");
00350 for (unsigned int i = 0; i < msg.doubles.size(); i++)
00351 ROS_ERROR(" %s", msg.doubles[i].name.c_str());
00352 ROS_ERROR("Strings:");
00353 for (unsigned int i = 0; i < msg.strs.size(); i++)
00354 ROS_ERROR(" %s", msg.strs[i].name.c_str());
00355
00356
00357 return false;
00358 }
00359 return true;
00360 }
00361
00362
00363
00364 void __toMessage__(dynamic_reconfigure::Config &msg, const std::vector<AbstractParamDescriptionConstPtr> &__param_descriptions__, const std::vector<AbstractGroupDescriptionConstPtr> &__group_descriptions__) const
00365 {
00366 dynamic_reconfigure::ConfigTools::clear(msg);
00367 for (std::vector<AbstractParamDescriptionConstPtr>::const_iterator i = __param_descriptions__.begin(); i != __param_descriptions__.end(); i++)
00368 (*i)->toMessage(msg, *this);
00369
00370 for (std::vector<AbstractGroupDescriptionConstPtr>::const_iterator i = __group_descriptions__.begin(); i != __group_descriptions__.end(); i++)
00371 {
00372 if((*i)->id == 0)
00373 {
00374 (*i)->toMessage(msg, *this);
00375 }
00376 }
00377 }
00378
00379 void __toMessage__(dynamic_reconfigure::Config &msg) const
00380 {
00381 const std::vector<AbstractParamDescriptionConstPtr> &__param_descriptions__ = __getParamDescriptions__();
00382 const std::vector<AbstractGroupDescriptionConstPtr> &__group_descriptions__ = __getGroupDescriptions__();
00383 __toMessage__(msg, __param_descriptions__, __group_descriptions__);
00384 }
00385
00386 void __toServer__(const ros::NodeHandle &nh) const
00387 {
00388 const std::vector<AbstractParamDescriptionConstPtr> &__param_descriptions__ = __getParamDescriptions__();
00389 for (std::vector<AbstractParamDescriptionConstPtr>::const_iterator i = __param_descriptions__.begin(); i != __param_descriptions__.end(); i++)
00390 (*i)->toServer(nh, *this);
00391 }
00392
00393 void __fromServer__(const ros::NodeHandle &nh)
00394 {
00395 static bool setup=false;
00396
00397 const std::vector<AbstractParamDescriptionConstPtr> &__param_descriptions__ = __getParamDescriptions__();
00398 for (std::vector<AbstractParamDescriptionConstPtr>::const_iterator i = __param_descriptions__.begin(); i != __param_descriptions__.end(); i++)
00399 (*i)->fromServer(nh, *this);
00400
00401 const std::vector<AbstractGroupDescriptionConstPtr> &__group_descriptions__ = __getGroupDescriptions__();
00402 for (std::vector<AbstractGroupDescriptionConstPtr>::const_iterator i = __group_descriptions__.begin(); i != __group_descriptions__.end(); i++){
00403 if (!setup && (*i)->id == 0) {
00404 setup = true;
00405 boost::any n = boost::any(this);
00406 (*i)->setInitialState(n);
00407 }
00408 }
00409 }
00410
00411 void __clamp__()
00412 {
00413 const std::vector<AbstractParamDescriptionConstPtr> &__param_descriptions__ = __getParamDescriptions__();
00414 const TibiDaboKinectArmConfig &__max__ = __getMax__();
00415 const TibiDaboKinectArmConfig &__min__ = __getMin__();
00416 for (std::vector<AbstractParamDescriptionConstPtr>::const_iterator i = __param_descriptions__.begin(); i != __param_descriptions__.end(); i++)
00417 (*i)->clamp(*this, __max__, __min__);
00418 }
00419
00420 uint32_t __level__(const TibiDaboKinectArmConfig &config) const
00421 {
00422 const std::vector<AbstractParamDescriptionConstPtr> &__param_descriptions__ = __getParamDescriptions__();
00423 uint32_t level = 0;
00424 for (std::vector<AbstractParamDescriptionConstPtr>::const_iterator i = __param_descriptions__.begin(); i != __param_descriptions__.end(); i++)
00425 (*i)->calcLevel(level, config, *this);
00426 return level;
00427 }
00428
00429 static const dynamic_reconfigure::ConfigDescription &__getDescriptionMessage__();
00430 static const TibiDaboKinectArmConfig &__getDefault__();
00431 static const TibiDaboKinectArmConfig &__getMax__();
00432 static const TibiDaboKinectArmConfig &__getMin__();
00433 static const std::vector<AbstractParamDescriptionConstPtr> &__getParamDescriptions__();
00434 static const std::vector<AbstractGroupDescriptionConstPtr> &__getGroupDescriptions__();
00435
00436 private:
00437 static const TibiDaboKinectArmConfigStatics *__get_statics__();
00438 };
00439
00440 template <>
00441 inline void TibiDaboKinectArmConfig::ParamDescription<std::string>::clamp(TibiDaboKinectArmConfig &config, const TibiDaboKinectArmConfig &max, const TibiDaboKinectArmConfig &min) const
00442 {
00443 return;
00444 }
00445
00446 class TibiDaboKinectArmConfigStatics
00447 {
00448 friend class TibiDaboKinectArmConfig;
00449
00450 TibiDaboKinectArmConfigStatics()
00451 {
00452 TibiDaboKinectArmConfig::GroupDescription<TibiDaboKinectArmConfig::DEFAULT, TibiDaboKinectArmConfig> Default("Default", "", 0, 0, true, &TibiDaboKinectArmConfig::groups);
00453
00454 __min__.arm_id = "";
00455
00456 __max__.arm_id = "";
00457
00458 __default__.arm_id = "";
00459
00460 Default.abstract_parameters.push_back(TibiDaboKinectArmConfig::AbstractParamDescriptionConstPtr(new TibiDaboKinectArmConfig::ParamDescription<std::string>("arm_id", "str", 0, "Left,Right", "", &TibiDaboKinectArmConfig::arm_id)));
00461
00462 __param_descriptions__.push_back(TibiDaboKinectArmConfig::AbstractParamDescriptionConstPtr(new TibiDaboKinectArmConfig::ParamDescription<std::string>("arm_id", "str", 0, "Left,Right", "", &TibiDaboKinectArmConfig::arm_id)));
00463
00464 __min__.debug = 0;
00465
00466 __max__.debug = 1;
00467
00468 __default__.debug = 0;
00469
00470 Default.abstract_parameters.push_back(TibiDaboKinectArmConfig::AbstractParamDescriptionConstPtr(new TibiDaboKinectArmConfig::ParamDescription<bool>("debug", "bool", 0, "Debug mode", "", &TibiDaboKinectArmConfig::debug)));
00471
00472 __param_descriptions__.push_back(TibiDaboKinectArmConfig::AbstractParamDescriptionConstPtr(new TibiDaboKinectArmConfig::ParamDescription<bool>("debug", "bool", 0, "Debug mode", "", &TibiDaboKinectArmConfig::debug)));
00473
00474 __min__.angle_mode_debug = 0;
00475
00476 __max__.angle_mode_debug = 1;
00477
00478 __default__.angle_mode_debug = 0;
00479
00480 Default.abstract_parameters.push_back(TibiDaboKinectArmConfig::AbstractParamDescriptionConstPtr(new TibiDaboKinectArmConfig::ParamDescription<bool>("angle_mode_debug", "bool", 0, "Not IK", "", &TibiDaboKinectArmConfig::angle_mode_debug)));
00481
00482 __param_descriptions__.push_back(TibiDaboKinectArmConfig::AbstractParamDescriptionConstPtr(new TibiDaboKinectArmConfig::ParamDescription<bool>("angle_mode_debug", "bool", 0, "Not IK", "", &TibiDaboKinectArmConfig::angle_mode_debug)));
00483
00484 __min__.x_debug = -700.0;
00485
00486 __max__.x_debug = 700.0;
00487
00488 __default__.x_debug = 250.0;
00489
00490 Default.abstract_parameters.push_back(TibiDaboKinectArmConfig::AbstractParamDescriptionConstPtr(new TibiDaboKinectArmConfig::ParamDescription<double>("x_debug", "double", 0, "Pose", "", &TibiDaboKinectArmConfig::x_debug)));
00491
00492 __param_descriptions__.push_back(TibiDaboKinectArmConfig::AbstractParamDescriptionConstPtr(new TibiDaboKinectArmConfig::ParamDescription<double>("x_debug", "double", 0, "Pose", "", &TibiDaboKinectArmConfig::x_debug)));
00493
00494 __min__.y_debug = -700.0;
00495
00496 __max__.y_debug = 700.0;
00497
00498 __default__.y_debug = -300.0;
00499
00500 Default.abstract_parameters.push_back(TibiDaboKinectArmConfig::AbstractParamDescriptionConstPtr(new TibiDaboKinectArmConfig::ParamDescription<double>("y_debug", "double", 0, "Pose", "", &TibiDaboKinectArmConfig::y_debug)));
00501
00502 __param_descriptions__.push_back(TibiDaboKinectArmConfig::AbstractParamDescriptionConstPtr(new TibiDaboKinectArmConfig::ParamDescription<double>("y_debug", "double", 0, "Pose", "", &TibiDaboKinectArmConfig::y_debug)));
00503
00504 __min__.z_debug = -700.0;
00505
00506 __max__.z_debug = 700.0;
00507
00508 __default__.z_debug = 50.0;
00509
00510 Default.abstract_parameters.push_back(TibiDaboKinectArmConfig::AbstractParamDescriptionConstPtr(new TibiDaboKinectArmConfig::ParamDescription<double>("z_debug", "double", 0, "Pose", "", &TibiDaboKinectArmConfig::z_debug)));
00511
00512 __param_descriptions__.push_back(TibiDaboKinectArmConfig::AbstractParamDescriptionConstPtr(new TibiDaboKinectArmConfig::ParamDescription<double>("z_debug", "double", 0, "Pose", "", &TibiDaboKinectArmConfig::z_debug)));
00513
00514 __min__.theta1_debug = 0.0;
00515
00516 __max__.theta1_debug = 300.0;
00517
00518 __default__.theta1_debug = 150.0;
00519
00520 Default.abstract_parameters.push_back(TibiDaboKinectArmConfig::AbstractParamDescriptionConstPtr(new TibiDaboKinectArmConfig::ParamDescription<double>("theta1_debug", "double", 0, "Angle", "", &TibiDaboKinectArmConfig::theta1_debug)));
00521
00522 __param_descriptions__.push_back(TibiDaboKinectArmConfig::AbstractParamDescriptionConstPtr(new TibiDaboKinectArmConfig::ParamDescription<double>("theta1_debug", "double", 0, "Angle", "", &TibiDaboKinectArmConfig::theta1_debug)));
00523
00524 __min__.theta2_debug = 0.0;
00525
00526 __max__.theta2_debug = 300.0;
00527
00528 __default__.theta2_debug = 150.0;
00529
00530 Default.abstract_parameters.push_back(TibiDaboKinectArmConfig::AbstractParamDescriptionConstPtr(new TibiDaboKinectArmConfig::ParamDescription<double>("theta2_debug", "double", 0, "Angle", "", &TibiDaboKinectArmConfig::theta2_debug)));
00531
00532 __param_descriptions__.push_back(TibiDaboKinectArmConfig::AbstractParamDescriptionConstPtr(new TibiDaboKinectArmConfig::ParamDescription<double>("theta2_debug", "double", 0, "Angle", "", &TibiDaboKinectArmConfig::theta2_debug)));
00533
00534 __min__.theta3_debug = 0.0;
00535
00536 __max__.theta3_debug = 300.0;
00537
00538 __default__.theta3_debug = 150.0;
00539
00540 Default.abstract_parameters.push_back(TibiDaboKinectArmConfig::AbstractParamDescriptionConstPtr(new TibiDaboKinectArmConfig::ParamDescription<double>("theta3_debug", "double", 0, "Angle", "", &TibiDaboKinectArmConfig::theta3_debug)));
00541
00542 __param_descriptions__.push_back(TibiDaboKinectArmConfig::AbstractParamDescriptionConstPtr(new TibiDaboKinectArmConfig::ParamDescription<double>("theta3_debug", "double", 0, "Angle", "", &TibiDaboKinectArmConfig::theta3_debug)));
00543
00544 __min__.theta4_debug = 0.0;
00545
00546 __max__.theta4_debug = 300.0;
00547
00548 __default__.theta4_debug = 150.0;
00549
00550 Default.abstract_parameters.push_back(TibiDaboKinectArmConfig::AbstractParamDescriptionConstPtr(new TibiDaboKinectArmConfig::ParamDescription<double>("theta4_debug", "double", 0, "Angle", "", &TibiDaboKinectArmConfig::theta4_debug)));
00551
00552 __param_descriptions__.push_back(TibiDaboKinectArmConfig::AbstractParamDescriptionConstPtr(new TibiDaboKinectArmConfig::ParamDescription<double>("theta4_debug", "double", 0, "Angle", "", &TibiDaboKinectArmConfig::theta4_debug)));
00553
00554 Default.convertParams();
00555
00556 __group_descriptions__.push_back(TibiDaboKinectArmConfig::AbstractGroupDescriptionConstPtr(new TibiDaboKinectArmConfig::GroupDescription<TibiDaboKinectArmConfig::DEFAULT, TibiDaboKinectArmConfig>(Default)));
00557
00558
00559 for (std::vector<TibiDaboKinectArmConfig::AbstractGroupDescriptionConstPtr>::const_iterator i = __group_descriptions__.begin(); i != __group_descriptions__.end(); i++)
00560 {
00561 __description_message__.groups.push_back(**i);
00562 }
00563 __max__.__toMessage__(__description_message__.max, __param_descriptions__, __group_descriptions__);
00564 __min__.__toMessage__(__description_message__.min, __param_descriptions__, __group_descriptions__);
00565 __default__.__toMessage__(__description_message__.dflt, __param_descriptions__, __group_descriptions__);
00566 }
00567 std::vector<TibiDaboKinectArmConfig::AbstractParamDescriptionConstPtr> __param_descriptions__;
00568 std::vector<TibiDaboKinectArmConfig::AbstractGroupDescriptionConstPtr> __group_descriptions__;
00569 TibiDaboKinectArmConfig __max__;
00570 TibiDaboKinectArmConfig __min__;
00571 TibiDaboKinectArmConfig __default__;
00572 dynamic_reconfigure::ConfigDescription __description_message__;
00573
00574 static const TibiDaboKinectArmConfigStatics *get_instance()
00575 {
00576
00577
00578
00579
00580 static TibiDaboKinectArmConfigStatics instance;
00581 return &instance;
00582 }
00583 };
00584
00585 inline const dynamic_reconfigure::ConfigDescription &TibiDaboKinectArmConfig::__getDescriptionMessage__()
00586 {
00587 return __get_statics__()->__description_message__;
00588 }
00589
00590 inline const TibiDaboKinectArmConfig &TibiDaboKinectArmConfig::__getDefault__()
00591 {
00592 return __get_statics__()->__default__;
00593 }
00594
00595 inline const TibiDaboKinectArmConfig &TibiDaboKinectArmConfig::__getMax__()
00596 {
00597 return __get_statics__()->__max__;
00598 }
00599
00600 inline const TibiDaboKinectArmConfig &TibiDaboKinectArmConfig::__getMin__()
00601 {
00602 return __get_statics__()->__min__;
00603 }
00604
00605 inline const std::vector<TibiDaboKinectArmConfig::AbstractParamDescriptionConstPtr> &TibiDaboKinectArmConfig::__getParamDescriptions__()
00606 {
00607 return __get_statics__()->__param_descriptions__;
00608 }
00609
00610 inline const std::vector<TibiDaboKinectArmConfig::AbstractGroupDescriptionConstPtr> &TibiDaboKinectArmConfig::__getGroupDescriptions__()
00611 {
00612 return __get_statics__()->__group_descriptions__;
00613 }
00614
00615 inline const TibiDaboKinectArmConfigStatics *TibiDaboKinectArmConfig::__get_statics__()
00616 {
00617 const static TibiDaboKinectArmConfigStatics *statics;
00618
00619 if (statics)
00620 return statics;
00621
00622 boost::mutex::scoped_lock lock(dynamic_reconfigure::__init_mutex__);
00623
00624 if (statics)
00625 return statics;
00626
00627 statics = TibiDaboKinectArmConfigStatics::get_instance();
00628
00629 return statics;
00630 }
00631
00632
00633 }
00634
00635 #endif // __TIBIDABOKINECTARMRECONFIGURATOR_H__