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 __iri_uncalibvs_sim__UNCALIBVS_SIMCONFIG_H__
00048 #define __iri_uncalibvs_sim__UNCALIBVS_SIMCONFIG_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 iri_uncalibvs_sim
00060 {
00061 class Uncalibvs_simConfigStatics;
00062
00063 class Uncalibvs_simConfig
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(Uncalibvs_simConfig &config, const Uncalibvs_simConfig &max, const Uncalibvs_simConfig &min) const = 0;
00080 virtual void calcLevel(uint32_t &level, const Uncalibvs_simConfig &config1, const Uncalibvs_simConfig &config2) const = 0;
00081 virtual void fromServer(const ros::NodeHandle &nh, Uncalibvs_simConfig &config) const = 0;
00082 virtual void toServer(const ros::NodeHandle &nh, const Uncalibvs_simConfig &config) const = 0;
00083 virtual bool fromMessage(const dynamic_reconfigure::Config &msg, Uncalibvs_simConfig &config) const = 0;
00084 virtual void toMessage(dynamic_reconfigure::Config &msg, const Uncalibvs_simConfig &config) const = 0;
00085 virtual void getValue(const Uncalibvs_simConfig &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 Uncalibvs_simConfig::* f) :
00097 AbstractParamDescription(name, type, level, description, edit_method),
00098 field(f)
00099 {}
00100
00101 T (Uncalibvs_simConfig::* field);
00102
00103 virtual void clamp(Uncalibvs_simConfig &config, const Uncalibvs_simConfig &max, const Uncalibvs_simConfig &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 Uncalibvs_simConfig &config1, const Uncalibvs_simConfig &config2) const
00113 {
00114 if (config1.*field != config2.*field)
00115 comb_level |= level;
00116 }
00117
00118 virtual void fromServer(const ros::NodeHandle &nh, Uncalibvs_simConfig &config) const
00119 {
00120 nh.getParam(name, config.*field);
00121 }
00122
00123 virtual void toServer(const ros::NodeHandle &nh, const Uncalibvs_simConfig &config) const
00124 {
00125 nh.setParam(name, config.*field);
00126 }
00127
00128 virtual bool fromMessage(const dynamic_reconfigure::Config &msg, Uncalibvs_simConfig &config) const
00129 {
00130 return dynamic_reconfigure::ConfigTools::getParameter(msg, name, config.*field);
00131 }
00132
00133 virtual void toMessage(dynamic_reconfigure::Config &msg, const Uncalibvs_simConfig &config) const
00134 {
00135 dynamic_reconfigure::ConfigTools::appendParameter(msg, name, config.*field);
00136 }
00137
00138 virtual void getValue(const Uncalibvs_simConfig &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, Uncalibvs_simConfig &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, Uncalibvs_simConfig &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<Uncalibvs_simConfig::AbstractGroupDescriptionConstPtr> groups;
00248 };
00249
00250 class DEFAULT
00251 {
00252 public:
00253 DEFAULT()
00254 {
00255 state = true;
00256 name = "Default";
00257 }
00258
00259 void setParams(Uncalibvs_simConfig &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("activate"==(*i)->name){activate = boost::any_cast<bool>(val);}
00267 if("quadrotor"==(*i)->name){quadrotor = boost::any_cast<bool>(val);}
00268 if("arm_unina"==(*i)->name){arm_unina = boost::any_cast<bool>(val);}
00269 if("arm_catec"==(*i)->name){arm_catec = boost::any_cast<bool>(val);}
00270 if("lambda"==(*i)->name){lambda = boost::any_cast<double>(val);}
00271 if("lambda_quadrotor"==(*i)->name){lambda_quadrotor = boost::any_cast<double>(val);}
00272 if("lambda_arm"==(*i)->name){lambda_arm = boost::any_cast<double>(val);}
00273 if("dist_to_tag"==(*i)->name){dist_to_tag = boost::any_cast<double>(val);}
00274 if("random_points"==(*i)->name){random_points = boost::any_cast<bool>(val);}
00275 if("output_files"==(*i)->name){output_files = boost::any_cast<bool>(val);}
00276 if("path"==(*i)->name){path = boost::any_cast<std::string>(val);}
00277 if("traditional"==(*i)->name){traditional = boost::any_cast<bool>(val);}
00278 }
00279 }
00280
00281 bool activate;
00282 bool quadrotor;
00283 bool arm_unina;
00284 bool arm_catec;
00285 double lambda;
00286 double lambda_quadrotor;
00287 double lambda_arm;
00288 double dist_to_tag;
00289 bool random_points;
00290 bool output_files;
00291 std::string path;
00292 bool traditional;
00293
00294 bool state;
00295 std::string name;
00296
00297
00298 }groups;
00299
00300
00301
00302
00303 bool activate;
00304
00305 bool quadrotor;
00306
00307 bool arm_unina;
00308
00309 bool arm_catec;
00310
00311 double lambda;
00312
00313 double lambda_quadrotor;
00314
00315 double lambda_arm;
00316
00317 double dist_to_tag;
00318
00319 bool random_points;
00320
00321 bool output_files;
00322
00323 std::string path;
00324
00325 bool traditional;
00326
00327
00328 bool __fromMessage__(dynamic_reconfigure::Config &msg)
00329 {
00330 const std::vector<AbstractParamDescriptionConstPtr> &__param_descriptions__ = __getParamDescriptions__();
00331 const std::vector<AbstractGroupDescriptionConstPtr> &__group_descriptions__ = __getGroupDescriptions__();
00332
00333 int count = 0;
00334 for (std::vector<AbstractParamDescriptionConstPtr>::const_iterator i = __param_descriptions__.begin(); i != __param_descriptions__.end(); i++)
00335 if ((*i)->fromMessage(msg, *this))
00336 count++;
00337
00338 for (std::vector<AbstractGroupDescriptionConstPtr>::const_iterator i = __group_descriptions__.begin(); i != __group_descriptions__.end(); i ++)
00339 {
00340 if ((*i)->id == 0)
00341 {
00342 boost::any n = boost::any(this);
00343 (*i)->updateParams(n, *this);
00344 (*i)->fromMessage(msg, n);
00345 }
00346 }
00347
00348 if (count != dynamic_reconfigure::ConfigTools::size(msg))
00349 {
00350 ROS_ERROR("Uncalibvs_simConfig::__fromMessage__ called with an unexpected parameter.");
00351 ROS_ERROR("Booleans:");
00352 for (unsigned int i = 0; i < msg.bools.size(); i++)
00353 ROS_ERROR(" %s", msg.bools[i].name.c_str());
00354 ROS_ERROR("Integers:");
00355 for (unsigned int i = 0; i < msg.ints.size(); i++)
00356 ROS_ERROR(" %s", msg.ints[i].name.c_str());
00357 ROS_ERROR("Doubles:");
00358 for (unsigned int i = 0; i < msg.doubles.size(); i++)
00359 ROS_ERROR(" %s", msg.doubles[i].name.c_str());
00360 ROS_ERROR("Strings:");
00361 for (unsigned int i = 0; i < msg.strs.size(); i++)
00362 ROS_ERROR(" %s", msg.strs[i].name.c_str());
00363
00364
00365 return false;
00366 }
00367 return true;
00368 }
00369
00370
00371
00372 void __toMessage__(dynamic_reconfigure::Config &msg, const std::vector<AbstractParamDescriptionConstPtr> &__param_descriptions__, const std::vector<AbstractGroupDescriptionConstPtr> &__group_descriptions__) const
00373 {
00374 dynamic_reconfigure::ConfigTools::clear(msg);
00375 for (std::vector<AbstractParamDescriptionConstPtr>::const_iterator i = __param_descriptions__.begin(); i != __param_descriptions__.end(); i++)
00376 (*i)->toMessage(msg, *this);
00377
00378 for (std::vector<AbstractGroupDescriptionConstPtr>::const_iterator i = __group_descriptions__.begin(); i != __group_descriptions__.end(); i++)
00379 {
00380 if((*i)->id == 0)
00381 {
00382 (*i)->toMessage(msg, *this);
00383 }
00384 }
00385 }
00386
00387 void __toMessage__(dynamic_reconfigure::Config &msg) const
00388 {
00389 const std::vector<AbstractParamDescriptionConstPtr> &__param_descriptions__ = __getParamDescriptions__();
00390 const std::vector<AbstractGroupDescriptionConstPtr> &__group_descriptions__ = __getGroupDescriptions__();
00391 __toMessage__(msg, __param_descriptions__, __group_descriptions__);
00392 }
00393
00394 void __toServer__(const ros::NodeHandle &nh) const
00395 {
00396 const std::vector<AbstractParamDescriptionConstPtr> &__param_descriptions__ = __getParamDescriptions__();
00397 for (std::vector<AbstractParamDescriptionConstPtr>::const_iterator i = __param_descriptions__.begin(); i != __param_descriptions__.end(); i++)
00398 (*i)->toServer(nh, *this);
00399 }
00400
00401 void __fromServer__(const ros::NodeHandle &nh)
00402 {
00403 static bool setup=false;
00404
00405 const std::vector<AbstractParamDescriptionConstPtr> &__param_descriptions__ = __getParamDescriptions__();
00406 for (std::vector<AbstractParamDescriptionConstPtr>::const_iterator i = __param_descriptions__.begin(); i != __param_descriptions__.end(); i++)
00407 (*i)->fromServer(nh, *this);
00408
00409 const std::vector<AbstractGroupDescriptionConstPtr> &__group_descriptions__ = __getGroupDescriptions__();
00410 for (std::vector<AbstractGroupDescriptionConstPtr>::const_iterator i = __group_descriptions__.begin(); i != __group_descriptions__.end(); i++){
00411 if (!setup && (*i)->id == 0) {
00412 setup = true;
00413 boost::any n = boost::any(this);
00414 (*i)->setInitialState(n);
00415 }
00416 }
00417 }
00418
00419 void __clamp__()
00420 {
00421 const std::vector<AbstractParamDescriptionConstPtr> &__param_descriptions__ = __getParamDescriptions__();
00422 const Uncalibvs_simConfig &__max__ = __getMax__();
00423 const Uncalibvs_simConfig &__min__ = __getMin__();
00424 for (std::vector<AbstractParamDescriptionConstPtr>::const_iterator i = __param_descriptions__.begin(); i != __param_descriptions__.end(); i++)
00425 (*i)->clamp(*this, __max__, __min__);
00426 }
00427
00428 uint32_t __level__(const Uncalibvs_simConfig &config) const
00429 {
00430 const std::vector<AbstractParamDescriptionConstPtr> &__param_descriptions__ = __getParamDescriptions__();
00431 uint32_t level = 0;
00432 for (std::vector<AbstractParamDescriptionConstPtr>::const_iterator i = __param_descriptions__.begin(); i != __param_descriptions__.end(); i++)
00433 (*i)->calcLevel(level, config, *this);
00434 return level;
00435 }
00436
00437 static const dynamic_reconfigure::ConfigDescription &__getDescriptionMessage__();
00438 static const Uncalibvs_simConfig &__getDefault__();
00439 static const Uncalibvs_simConfig &__getMax__();
00440 static const Uncalibvs_simConfig &__getMin__();
00441 static const std::vector<AbstractParamDescriptionConstPtr> &__getParamDescriptions__();
00442 static const std::vector<AbstractGroupDescriptionConstPtr> &__getGroupDescriptions__();
00443
00444 private:
00445 static const Uncalibvs_simConfigStatics *__get_statics__();
00446 };
00447
00448 template <>
00449 inline void Uncalibvs_simConfig::ParamDescription<std::string>::clamp(Uncalibvs_simConfig &config, const Uncalibvs_simConfig &max, const Uncalibvs_simConfig &min) const
00450 {
00451 return;
00452 }
00453
00454 class Uncalibvs_simConfigStatics
00455 {
00456 friend class Uncalibvs_simConfig;
00457
00458 Uncalibvs_simConfigStatics()
00459 {
00460 Uncalibvs_simConfig::GroupDescription<Uncalibvs_simConfig::DEFAULT, Uncalibvs_simConfig> Default("Default", "", 0, 0, true, &Uncalibvs_simConfig::groups);
00461
00462 __min__.activate = 0;
00463
00464 __max__.activate = 1;
00465
00466 __default__.activate = 0;
00467
00468 Default.abstract_parameters.push_back(Uncalibvs_simConfig::AbstractParamDescriptionConstPtr(new Uncalibvs_simConfig::ParamDescription<bool>("activate", "bool", 0, "Activation", "", &Uncalibvs_simConfig::activate)));
00469
00470 __param_descriptions__.push_back(Uncalibvs_simConfig::AbstractParamDescriptionConstPtr(new Uncalibvs_simConfig::ParamDescription<bool>("activate", "bool", 0, "Activation", "", &Uncalibvs_simConfig::activate)));
00471
00472 __min__.quadrotor = 0;
00473
00474 __max__.quadrotor = 1;
00475
00476 __default__.quadrotor = 1;
00477
00478 Default.abstract_parameters.push_back(Uncalibvs_simConfig::AbstractParamDescriptionConstPtr(new Uncalibvs_simConfig::ParamDescription<bool>("quadrotor", "bool", 0, "4 dof quadrotor", "", &Uncalibvs_simConfig::quadrotor)));
00479
00480 __param_descriptions__.push_back(Uncalibvs_simConfig::AbstractParamDescriptionConstPtr(new Uncalibvs_simConfig::ParamDescription<bool>("quadrotor", "bool", 0, "4 dof quadrotor", "", &Uncalibvs_simConfig::quadrotor)));
00481
00482 __min__.arm_unina = 0;
00483
00484 __max__.arm_unina = 1;
00485
00486 __default__.arm_unina = 0;
00487
00488 Default.abstract_parameters.push_back(Uncalibvs_simConfig::AbstractParamDescriptionConstPtr(new Uncalibvs_simConfig::ParamDescription<bool>("arm_unina", "bool", 0, "5 dof arm", "", &Uncalibvs_simConfig::arm_unina)));
00489
00490 __param_descriptions__.push_back(Uncalibvs_simConfig::AbstractParamDescriptionConstPtr(new Uncalibvs_simConfig::ParamDescription<bool>("arm_unina", "bool", 0, "5 dof arm", "", &Uncalibvs_simConfig::arm_unina)));
00491
00492 __min__.arm_catec = 0;
00493
00494 __max__.arm_catec = 1;
00495
00496 __default__.arm_catec = 0;
00497
00498 Default.abstract_parameters.push_back(Uncalibvs_simConfig::AbstractParamDescriptionConstPtr(new Uncalibvs_simConfig::ParamDescription<bool>("arm_catec", "bool", 0, "6 dof arm", "", &Uncalibvs_simConfig::arm_catec)));
00499
00500 __param_descriptions__.push_back(Uncalibvs_simConfig::AbstractParamDescriptionConstPtr(new Uncalibvs_simConfig::ParamDescription<bool>("arm_catec", "bool", 0, "6 dof arm", "", &Uncalibvs_simConfig::arm_catec)));
00501
00502 __min__.lambda = 0.0;
00503
00504 __max__.lambda = 0.3;
00505
00506 __default__.lambda = 0.005;
00507
00508 Default.abstract_parameters.push_back(Uncalibvs_simConfig::AbstractParamDescriptionConstPtr(new Uncalibvs_simConfig::ParamDescription<double>("lambda", "double", 0, "Proportional control factor", "", &Uncalibvs_simConfig::lambda)));
00509
00510 __param_descriptions__.push_back(Uncalibvs_simConfig::AbstractParamDescriptionConstPtr(new Uncalibvs_simConfig::ParamDescription<double>("lambda", "double", 0, "Proportional control factor", "", &Uncalibvs_simConfig::lambda)));
00511
00512 __min__.lambda_quadrotor = 0.0;
00513
00514 __max__.lambda_quadrotor = 2.0;
00515
00516 __default__.lambda_quadrotor = 1.0;
00517
00518 Default.abstract_parameters.push_back(Uncalibvs_simConfig::AbstractParamDescriptionConstPtr(new Uncalibvs_simConfig::ParamDescription<double>("lambda_quadrotor", "double", 0, "Proportional control factor", "", &Uncalibvs_simConfig::lambda_quadrotor)));
00519
00520 __param_descriptions__.push_back(Uncalibvs_simConfig::AbstractParamDescriptionConstPtr(new Uncalibvs_simConfig::ParamDescription<double>("lambda_quadrotor", "double", 0, "Proportional control factor", "", &Uncalibvs_simConfig::lambda_quadrotor)));
00521
00522 __min__.lambda_arm = 0.0;
00523
00524 __max__.lambda_arm = 2.0;
00525
00526 __default__.lambda_arm = 1.0;
00527
00528 Default.abstract_parameters.push_back(Uncalibvs_simConfig::AbstractParamDescriptionConstPtr(new Uncalibvs_simConfig::ParamDescription<double>("lambda_arm", "double", 0, "Proportional control factor", "", &Uncalibvs_simConfig::lambda_arm)));
00529
00530 __param_descriptions__.push_back(Uncalibvs_simConfig::AbstractParamDescriptionConstPtr(new Uncalibvs_simConfig::ParamDescription<double>("lambda_arm", "double", 0, "Proportional control factor", "", &Uncalibvs_simConfig::lambda_arm)));
00531
00532 __min__.dist_to_tag = 0.5;
00533
00534 __max__.dist_to_tag = 2.0;
00535
00536 __default__.dist_to_tag = 1.0;
00537
00538 Default.abstract_parameters.push_back(Uncalibvs_simConfig::AbstractParamDescriptionConstPtr(new Uncalibvs_simConfig::ParamDescription<double>("dist_to_tag", "double", 0, "Final distance to tag", "", &Uncalibvs_simConfig::dist_to_tag)));
00539
00540 __param_descriptions__.push_back(Uncalibvs_simConfig::AbstractParamDescriptionConstPtr(new Uncalibvs_simConfig::ParamDescription<double>("dist_to_tag", "double", 0, "Final distance to tag", "", &Uncalibvs_simConfig::dist_to_tag)));
00541
00542 __min__.random_points = 0;
00543
00544 __max__.random_points = 1;
00545
00546 __default__.random_points = 0;
00547
00548 Default.abstract_parameters.push_back(Uncalibvs_simConfig::AbstractParamDescriptionConstPtr(new Uncalibvs_simConfig::ParamDescription<bool>("random_points", "bool", 0, "Random feature points", "", &Uncalibvs_simConfig::random_points)));
00549
00550 __param_descriptions__.push_back(Uncalibvs_simConfig::AbstractParamDescriptionConstPtr(new Uncalibvs_simConfig::ParamDescription<bool>("random_points", "bool", 0, "Random feature points", "", &Uncalibvs_simConfig::random_points)));
00551
00552 __min__.output_files = 0;
00553
00554 __max__.output_files = 1;
00555
00556 __default__.output_files = 0;
00557
00558 Default.abstract_parameters.push_back(Uncalibvs_simConfig::AbstractParamDescriptionConstPtr(new Uncalibvs_simConfig::ParamDescription<bool>("output_files", "bool", 0, "Print files with poses", "", &Uncalibvs_simConfig::output_files)));
00559
00560 __param_descriptions__.push_back(Uncalibvs_simConfig::AbstractParamDescriptionConstPtr(new Uncalibvs_simConfig::ParamDescription<bool>("output_files", "bool", 0, "Print files with poses", "", &Uncalibvs_simConfig::output_files)));
00561
00562 __min__.path = "";
00563
00564 __max__.path = "";
00565
00566 __default__.path = "/home/asantamaria/Desktop/joint_velocities.txt";
00567
00568 Default.abstract_parameters.push_back(Uncalibvs_simConfig::AbstractParamDescriptionConstPtr(new Uncalibvs_simConfig::ParamDescription<std::string>("path", "str", 0, "Output files path", "", &Uncalibvs_simConfig::path)));
00569
00570 __param_descriptions__.push_back(Uncalibvs_simConfig::AbstractParamDescriptionConstPtr(new Uncalibvs_simConfig::ParamDescription<std::string>("path", "str", 0, "Output files path", "", &Uncalibvs_simConfig::path)));
00571
00572 __min__.traditional = 0;
00573
00574 __max__.traditional = 1;
00575
00576 __default__.traditional = 0;
00577
00578 Default.abstract_parameters.push_back(Uncalibvs_simConfig::AbstractParamDescriptionConstPtr(new Uncalibvs_simConfig::ParamDescription<bool>("traditional", "bool", 0, "Jacobian method (traditional=true)", "", &Uncalibvs_simConfig::traditional)));
00579
00580 __param_descriptions__.push_back(Uncalibvs_simConfig::AbstractParamDescriptionConstPtr(new Uncalibvs_simConfig::ParamDescription<bool>("traditional", "bool", 0, "Jacobian method (traditional=true)", "", &Uncalibvs_simConfig::traditional)));
00581
00582 Default.convertParams();
00583
00584 __group_descriptions__.push_back(Uncalibvs_simConfig::AbstractGroupDescriptionConstPtr(new Uncalibvs_simConfig::GroupDescription<Uncalibvs_simConfig::DEFAULT, Uncalibvs_simConfig>(Default)));
00585
00586
00587 for (std::vector<Uncalibvs_simConfig::AbstractGroupDescriptionConstPtr>::const_iterator i = __group_descriptions__.begin(); i != __group_descriptions__.end(); i++)
00588 {
00589 __description_message__.groups.push_back(**i);
00590 }
00591 __max__.__toMessage__(__description_message__.max, __param_descriptions__, __group_descriptions__);
00592 __min__.__toMessage__(__description_message__.min, __param_descriptions__, __group_descriptions__);
00593 __default__.__toMessage__(__description_message__.dflt, __param_descriptions__, __group_descriptions__);
00594 }
00595 std::vector<Uncalibvs_simConfig::AbstractParamDescriptionConstPtr> __param_descriptions__;
00596 std::vector<Uncalibvs_simConfig::AbstractGroupDescriptionConstPtr> __group_descriptions__;
00597 Uncalibvs_simConfig __max__;
00598 Uncalibvs_simConfig __min__;
00599 Uncalibvs_simConfig __default__;
00600 dynamic_reconfigure::ConfigDescription __description_message__;
00601
00602 static const Uncalibvs_simConfigStatics *get_instance()
00603 {
00604
00605
00606
00607
00608 static Uncalibvs_simConfigStatics instance;
00609 return &instance;
00610 }
00611 };
00612
00613 inline const dynamic_reconfigure::ConfigDescription &Uncalibvs_simConfig::__getDescriptionMessage__()
00614 {
00615 return __get_statics__()->__description_message__;
00616 }
00617
00618 inline const Uncalibvs_simConfig &Uncalibvs_simConfig::__getDefault__()
00619 {
00620 return __get_statics__()->__default__;
00621 }
00622
00623 inline const Uncalibvs_simConfig &Uncalibvs_simConfig::__getMax__()
00624 {
00625 return __get_statics__()->__max__;
00626 }
00627
00628 inline const Uncalibvs_simConfig &Uncalibvs_simConfig::__getMin__()
00629 {
00630 return __get_statics__()->__min__;
00631 }
00632
00633 inline const std::vector<Uncalibvs_simConfig::AbstractParamDescriptionConstPtr> &Uncalibvs_simConfig::__getParamDescriptions__()
00634 {
00635 return __get_statics__()->__param_descriptions__;
00636 }
00637
00638 inline const std::vector<Uncalibvs_simConfig::AbstractGroupDescriptionConstPtr> &Uncalibvs_simConfig::__getGroupDescriptions__()
00639 {
00640 return __get_statics__()->__group_descriptions__;
00641 }
00642
00643 inline const Uncalibvs_simConfigStatics *Uncalibvs_simConfig::__get_statics__()
00644 {
00645 const static Uncalibvs_simConfigStatics *statics;
00646
00647 if (statics)
00648 return statics;
00649
00650 boost::mutex::scoped_lock lock(dynamic_reconfigure::__init_mutex__);
00651
00652 if (statics)
00653 return statics;
00654
00655 statics = Uncalibvs_simConfigStatics::get_instance();
00656
00657 return statics;
00658 }
00659
00660
00661 }
00662
00663 #endif // __UNCALIBVS_SIMRECONFIGURATOR_H__