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 __art_nav__NAVIGATORCONFIG_H__
00048 #define __art_nav__NAVIGATORCONFIG_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/config_init_mutex.h>
00056
00057 namespace art_nav
00058 {
00059 class NavigatorConfigStatics;
00060
00061 class NavigatorConfig
00062 {
00063 public:
00064 class AbstractParamDescription : public dynamic_reconfigure::ParamDescription
00065 {
00066 public:
00067 AbstractParamDescription(std::string n, std::string t, uint32_t l,
00068 std::string d, std::string e)
00069 {
00070 name = n;
00071 type = t;
00072 level = l;
00073 description = d;
00074 edit_method = e;
00075 }
00076
00077 virtual void clamp(NavigatorConfig &config, const NavigatorConfig &max, const NavigatorConfig &min) const = 0;
00078 virtual void calcLevel(uint32_t &level, const NavigatorConfig &config1, const NavigatorConfig &config2) const = 0;
00079 virtual void fromServer(const ros::NodeHandle &nh, NavigatorConfig &config) const = 0;
00080 virtual void toServer(const ros::NodeHandle &nh, const NavigatorConfig &config) const = 0;
00081 virtual bool fromMessage(const dynamic_reconfigure::Config &msg, NavigatorConfig &config) const = 0;
00082 virtual void toMessage(dynamic_reconfigure::Config &msg, const NavigatorConfig &config) const = 0;
00083 };
00084
00085 typedef boost::shared_ptr<AbstractParamDescription> AbstractParamDescriptionPtr;
00086 typedef boost::shared_ptr<const AbstractParamDescription> AbstractParamDescriptionConstPtr;
00087
00088 template <class T>
00089 class ParamDescription : public AbstractParamDescription
00090 {
00091 public:
00092 ParamDescription(std::string name, std::string type, uint32_t level,
00093 std::string description, std::string edit_method, T NavigatorConfig::* f) :
00094 AbstractParamDescription(name, type, level, description, edit_method),
00095 field(f)
00096 {}
00097
00098 T (NavigatorConfig::* field);
00099
00100 virtual void clamp(NavigatorConfig &config, const NavigatorConfig &max, const NavigatorConfig &min) const
00101 {
00102 if (config.*field > max.*field)
00103 config.*field = max.*field;
00104
00105 if (config.*field < min.*field)
00106 config.*field = min.*field;
00107 }
00108
00109 virtual void calcLevel(uint32_t &comb_level, const NavigatorConfig &config1, const NavigatorConfig &config2) const
00110 {
00111 if (config1.*field != config2.*field)
00112 comb_level |= level;
00113 }
00114
00115 virtual void fromServer(const ros::NodeHandle &nh, NavigatorConfig &config) const
00116 {
00117 nh.getParam(name, config.*field);
00118 }
00119
00120 virtual void toServer(const ros::NodeHandle &nh, const NavigatorConfig &config) const
00121 {
00122 nh.setParam(name, config.*field);
00123 }
00124
00125 virtual bool fromMessage(const dynamic_reconfigure::Config &msg, NavigatorConfig &config) const
00126 {
00127 return dynamic_reconfigure::ConfigTools::getParameter(msg, name, config.*field);
00128 }
00129
00130 virtual void toMessage(dynamic_reconfigure::Config &msg, const NavigatorConfig &config) const
00131 {
00132 dynamic_reconfigure::ConfigTools::appendParameter(msg, name, config.*field);
00133 }
00134 };
00135
00136
00137 double blockage_timeout_secs;
00138
00139 double close_stopping_distance;
00140
00141 double desired_following_time;
00142
00143 double heading_change_ratio;
00144
00145 double initialize_distance;
00146
00147 double initialize_min_angle;
00148
00149 double lane_change_secs;
00150
00151 double lane_width_ratio;
00152
00153 double lookahead_distance;
00154
00155 double lost_speed;
00156
00157 double max_creep_distance;
00158
00159 double max_deceleration;
00160
00161 double max_speed;
00162
00163 double max_speed_for_sharp;
00164
00165 double max_yaw_rate;
00166
00167 double min_approach_speed;
00168
00169 double min_curve_length;
00170
00171 double min_following_time;
00172
00173 double min_lane_steer_dist;
00174
00175 double min_speed_for_curves;
00176
00177 double min_stop_distance;
00178
00179 bool offensive_driving;
00180
00181 double passing_delay;
00182
00183 double precedence_delay;
00184
00185 double real_max_yaw_rate;
00186
00187 double roadblock_delay;
00188
00189 double spot_waypoint_radius;
00190
00191 double spring_lookahead;
00192
00193 double stop_approach_speed;
00194
00195 double stop_creep_speed;
00196
00197 double stop_deceleration;
00198
00199 double stop_distance;
00200
00201 double stop_latency;
00202
00203 double stop_line_delay;
00204
00205 double turning_heading_tune;
00206
00207 double turning_int_tune;
00208
00209 double turning_latency;
00210
00211 double turning_offset_tune;
00212
00213 double uturn_speed;
00214
00215 double uturn_stop_heading;
00216
00217 double uturn_threshold;
00218
00219 double uturn_yaw_rate;
00220
00221 double zone_waypoint_radius;
00222
00223
00224 bool __fromMessage__(dynamic_reconfigure::Config &msg)
00225 {
00226 const std::vector<AbstractParamDescriptionConstPtr> &__param_descriptions__ = __getParamDescriptions__();
00227 int count = 0;
00228 for (std::vector<AbstractParamDescriptionConstPtr>::const_iterator i = __param_descriptions__.begin(); i != __param_descriptions__.end(); i++)
00229 if ((*i)->fromMessage(msg, *this))
00230 count++;
00231 if (count != dynamic_reconfigure::ConfigTools::size(msg))
00232 {
00233 ROS_ERROR("NavigatorConfig::__fromMessage__ called with an unexpected parameter.");
00234 ROS_ERROR("Booleans:");
00235 for (unsigned int i = 0; i < msg.bools.size(); i++)
00236 ROS_ERROR(" %s", msg.bools[i].name.c_str());
00237 ROS_ERROR("Integers:");
00238 for (unsigned int i = 0; i < msg.ints.size(); i++)
00239 ROS_ERROR(" %s", msg.ints[i].name.c_str());
00240 ROS_ERROR("Doubles:");
00241 for (unsigned int i = 0; i < msg.doubles.size(); i++)
00242 ROS_ERROR(" %s", msg.doubles[i].name.c_str());
00243 ROS_ERROR("Strings:");
00244 for (unsigned int i = 0; i < msg.strs.size(); i++)
00245 ROS_ERROR(" %s", msg.strs[i].name.c_str());
00246
00247
00248 return false;
00249 }
00250 return true;
00251 }
00252
00253
00254
00255 void __toMessage__(dynamic_reconfigure::Config &msg, const std::vector<AbstractParamDescriptionConstPtr> &__param_descriptions__) const
00256 {
00257 dynamic_reconfigure::ConfigTools::clear(msg);
00258 for (std::vector<AbstractParamDescriptionConstPtr>::const_iterator i = __param_descriptions__.begin(); i != __param_descriptions__.end(); i++)
00259 (*i)->toMessage(msg, *this);
00260 }
00261
00262 void __toMessage__(dynamic_reconfigure::Config &msg) const
00263 {
00264 const std::vector<AbstractParamDescriptionConstPtr> &__param_descriptions__ = __getParamDescriptions__();
00265 __toMessage__(msg, __param_descriptions__);
00266 }
00267
00268 void __toServer__(const ros::NodeHandle &nh) const
00269 {
00270 const std::vector<AbstractParamDescriptionConstPtr> &__param_descriptions__ = __getParamDescriptions__();
00271 for (std::vector<AbstractParamDescriptionConstPtr>::const_iterator i = __param_descriptions__.begin(); i != __param_descriptions__.end(); i++)
00272 (*i)->toServer(nh, *this);
00273 }
00274
00275 void __fromServer__(const ros::NodeHandle &nh)
00276 {
00277 const std::vector<AbstractParamDescriptionConstPtr> &__param_descriptions__ = __getParamDescriptions__();
00278 for (std::vector<AbstractParamDescriptionConstPtr>::const_iterator i = __param_descriptions__.begin(); i != __param_descriptions__.end(); i++)
00279 (*i)->fromServer(nh, *this);
00280 }
00281
00282 void __clamp__()
00283 {
00284 const std::vector<AbstractParamDescriptionConstPtr> &__param_descriptions__ = __getParamDescriptions__();
00285 const NavigatorConfig &__max__ = __getMax__();
00286 const NavigatorConfig &__min__ = __getMin__();
00287 for (std::vector<AbstractParamDescriptionConstPtr>::const_iterator i = __param_descriptions__.begin(); i != __param_descriptions__.end(); i++)
00288 (*i)->clamp(*this, __max__, __min__);
00289 }
00290
00291 uint32_t __level__(const NavigatorConfig &config) const
00292 {
00293 const std::vector<AbstractParamDescriptionConstPtr> &__param_descriptions__ = __getParamDescriptions__();
00294 uint32_t level = 0;
00295 for (std::vector<AbstractParamDescriptionConstPtr>::const_iterator i = __param_descriptions__.begin(); i != __param_descriptions__.end(); i++)
00296 (*i)->calcLevel(level, config, *this);
00297 return level;
00298 }
00299
00300 static const dynamic_reconfigure::ConfigDescription &__getDescriptionMessage__();
00301 static const NavigatorConfig &__getDefault__();
00302 static const NavigatorConfig &__getMax__();
00303 static const NavigatorConfig &__getMin__();
00304 static const std::vector<AbstractParamDescriptionConstPtr> &__getParamDescriptions__();
00305
00306 private:
00307 static const NavigatorConfigStatics *__get_statics__();
00308 };
00309
00310 template <>
00311 inline void NavigatorConfig::ParamDescription<std::string>::clamp(NavigatorConfig &config, const NavigatorConfig &max, const NavigatorConfig &min) const
00312 {
00313 return;
00314 }
00315
00316 class NavigatorConfigStatics
00317 {
00318 friend class NavigatorConfig;
00319
00320 NavigatorConfigStatics()
00321 {
00322
00323 __min__.blockage_timeout_secs = 0.0;
00324
00325 __max__.blockage_timeout_secs = 20.0;
00326
00327 __default__.blockage_timeout_secs = 9.0;
00328
00329 __param_descriptions__.push_back(NavigatorConfig::AbstractParamDescriptionConstPtr(new NavigatorConfig::ParamDescription<double>("blockage_timeout_secs", "double", 0, "Blockage timeout (s)", "", &NavigatorConfig::blockage_timeout_secs)));
00330
00331 __min__.close_stopping_distance = 5.0;
00332
00333 __max__.close_stopping_distance = 20.0;
00334
00335 __default__.close_stopping_distance = 15.3;
00336
00337 __param_descriptions__.push_back(NavigatorConfig::AbstractParamDescriptionConstPtr(new NavigatorConfig::ParamDescription<double>("close_stopping_distance", "double", 0, "Distance to stop from an obstacle (m)", "", &NavigatorConfig::close_stopping_distance)));
00338
00339 __min__.desired_following_time = 0.0;
00340
00341 __max__.desired_following_time = 10.0;
00342
00343 __default__.desired_following_time = 5.0;
00344
00345 __param_descriptions__.push_back(NavigatorConfig::AbstractParamDescriptionConstPtr(new NavigatorConfig::ParamDescription<double>("desired_following_time", "double", 0, "Desired following time (s)", "", &NavigatorConfig::desired_following_time)));
00346
00347 __min__.heading_change_ratio = 0.0;
00348
00349 __max__.heading_change_ratio = 1.0;
00350
00351 __default__.heading_change_ratio = 0.75;
00352
00353 __param_descriptions__.push_back(NavigatorConfig::AbstractParamDescriptionConstPtr(new NavigatorConfig::ParamDescription<double>("heading_change_ratio", "double", 0, "Heading change ratio", "", &NavigatorConfig::heading_change_ratio)));
00354
00355 __min__.initialize_distance = 0.0;
00356
00357 __max__.initialize_distance = 30.0;
00358
00359 __default__.initialize_distance = 10.0;
00360
00361 __param_descriptions__.push_back(NavigatorConfig::AbstractParamDescriptionConstPtr(new NavigatorConfig::ParamDescription<double>("initialize_distance", "double", 0, "Initialize look ahead distance (m)", "", &NavigatorConfig::initialize_distance)));
00362
00363 __min__.initialize_min_angle = 0.0;
00364
00365 __max__.initialize_min_angle = 3.14159265359;
00366
00367 __default__.initialize_min_angle = 0.785398163397;
00368
00369 __param_descriptions__.push_back(NavigatorConfig::AbstractParamDescriptionConstPtr(new NavigatorConfig::ParamDescription<double>("initialize_min_angle", "double", 0, "Initialize minimum angle (radians)", "", &NavigatorConfig::initialize_min_angle)));
00370
00371 __min__.lane_change_secs = 0.0;
00372
00373 __max__.lane_change_secs = 8.0;
00374
00375 __default__.lane_change_secs = 2.0;
00376
00377 __param_descriptions__.push_back(NavigatorConfig::AbstractParamDescriptionConstPtr(new NavigatorConfig::ParamDescription<double>("lane_change_secs", "double", 0, "Lane change target (seconds ahead)", "", &NavigatorConfig::lane_change_secs)));
00378
00379 __min__.lane_width_ratio = 0.01;
00380
00381 __max__.lane_width_ratio = 1.0;
00382
00383 __default__.lane_width_ratio = 0.3;
00384
00385 __param_descriptions__.push_back(NavigatorConfig::AbstractParamDescriptionConstPtr(new NavigatorConfig::ParamDescription<double>("lane_width_ratio", "double", 0, "Lane width ration (fraction)", "", &NavigatorConfig::lane_width_ratio)));
00386
00387 __min__.lookahead_distance = 0.0;
00388
00389 __max__.lookahead_distance = 200.0;
00390
00391 __default__.lookahead_distance = 100.0;
00392
00393 __param_descriptions__.push_back(NavigatorConfig::AbstractParamDescriptionConstPtr(new NavigatorConfig::ParamDescription<double>("lookahead_distance", "double", 0, "Turn lookahead distance (m)", "", &NavigatorConfig::lookahead_distance)));
00394
00395 __min__.lost_speed = 1.0;
00396
00397 __max__.lost_speed = 5.0;
00398
00399 __default__.lost_speed = 2.0;
00400
00401 __param_descriptions__.push_back(NavigatorConfig::AbstractParamDescriptionConstPtr(new NavigatorConfig::ParamDescription<double>("lost_speed", "double", 0, "Speed when lost (m/s)", "", &NavigatorConfig::lost_speed)));
00402
00403 __min__.max_creep_distance = 0.0;
00404
00405 __max__.max_creep_distance = 5.0;
00406
00407 __default__.max_creep_distance = 4.8;
00408
00409 __param_descriptions__.push_back(NavigatorConfig::AbstractParamDescriptionConstPtr(new NavigatorConfig::ParamDescription<double>("max_creep_distance", "double", 0, "Distance for which to creep (m)", "", &NavigatorConfig::max_creep_distance)));
00410
00411 __min__.max_deceleration = 0.1;
00412
00413 __max__.max_deceleration = 4.0;
00414
00415 __default__.max_deceleration = 0.4;
00416
00417 __param_descriptions__.push_back(NavigatorConfig::AbstractParamDescriptionConstPtr(new NavigatorConfig::ParamDescription<double>("max_deceleration", "double", 0, "turn max deceleration (m/s^2)", "", &NavigatorConfig::max_deceleration)));
00418
00419 __min__.max_speed = 0.0;
00420
00421 __max__.max_speed = 25.0;
00422
00423 __default__.max_speed = 15.0;
00424
00425 __param_descriptions__.push_back(NavigatorConfig::AbstractParamDescriptionConstPtr(new NavigatorConfig::ParamDescription<double>("max_speed", "double", 0, "Maximum speed ever to request (m/s)", "", &NavigatorConfig::max_speed)));
00426
00427 __min__.max_speed_for_sharp = 1.0;
00428
00429 __max__.max_speed_for_sharp = 8.0;
00430
00431 __default__.max_speed_for_sharp = 3.0;
00432
00433 __param_descriptions__.push_back(NavigatorConfig::AbstractParamDescriptionConstPtr(new NavigatorConfig::ParamDescription<double>("max_speed_for_sharp", "double", 0, "Maximum speed for sharpest possible turn (m/s)", "", &NavigatorConfig::max_speed_for_sharp)));
00434
00435 __min__.max_yaw_rate = 0.01;
00436
00437 __max__.max_yaw_rate = 2.0;
00438
00439 __default__.max_yaw_rate = 0.15;
00440
00441 __param_descriptions__.push_back(NavigatorConfig::AbstractParamDescriptionConstPtr(new NavigatorConfig::ParamDescription<double>("max_yaw_rate", "double", 0, "turn max yaw rate (radians/s)", "", &NavigatorConfig::max_yaw_rate)));
00442
00443 __min__.min_approach_speed = 0.0;
00444
00445 __max__.min_approach_speed = 5.0;
00446
00447 __default__.min_approach_speed = 2.0;
00448
00449 __param_descriptions__.push_back(NavigatorConfig::AbstractParamDescriptionConstPtr(new NavigatorConfig::ParamDescription<double>("min_approach_speed", "double", 0, "Minimum approach speed considered dangerous (m/s)", "", &NavigatorConfig::min_approach_speed)));
00450
00451 __min__.min_curve_length = 1.0;
00452
00453 __max__.min_curve_length = 5.0;
00454
00455 __default__.min_curve_length = 1.5;
00456
00457 __param_descriptions__.push_back(NavigatorConfig::AbstractParamDescriptionConstPtr(new NavigatorConfig::ParamDescription<double>("min_curve_length", "double", 0, "Minimum curve length for turn (m)", "", &NavigatorConfig::min_curve_length)));
00458
00459 __min__.min_following_time = 0.0;
00460
00461 __max__.min_following_time = 10.0;
00462
00463 __default__.min_following_time = 3.0;
00464
00465 __param_descriptions__.push_back(NavigatorConfig::AbstractParamDescriptionConstPtr(new NavigatorConfig::ParamDescription<double>("min_following_time", "double", 0, "Minimum following time (s)", "", &NavigatorConfig::min_following_time)));
00466
00467 __min__.min_lane_steer_dist = 0.0;
00468
00469 __max__.min_lane_steer_dist = 16.0;
00470
00471 __default__.min_lane_steer_dist = 7.0;
00472
00473 __param_descriptions__.push_back(NavigatorConfig::AbstractParamDescriptionConstPtr(new NavigatorConfig::ParamDescription<double>("min_lane_steer_dist", "double", 0, "Minimum lane steering distance (m)", "", &NavigatorConfig::min_lane_steer_dist)));
00474
00475 __min__.min_speed_for_curves = 1.0;
00476
00477 __max__.min_speed_for_curves = 5.0;
00478
00479 __default__.min_speed_for_curves = 3.0;
00480
00481 __param_descriptions__.push_back(NavigatorConfig::AbstractParamDescriptionConstPtr(new NavigatorConfig::ParamDescription<double>("min_speed_for_curves", "double", 0, "Minimum speed when slowing for curves (m/s)", "", &NavigatorConfig::min_speed_for_curves)));
00482
00483 __min__.min_stop_distance = 0.0;
00484
00485 __max__.min_stop_distance = 25.0;
00486
00487 __default__.min_stop_distance = 5.0;
00488
00489 __param_descriptions__.push_back(NavigatorConfig::AbstractParamDescriptionConstPtr(new NavigatorConfig::ParamDescription<double>("min_stop_distance", "double", 0, "Minimum distance to begin stopping (m)", "", &NavigatorConfig::min_stop_distance)));
00490
00491 __min__.offensive_driving = 0;
00492
00493 __max__.offensive_driving = 1;
00494
00495 __default__.offensive_driving = 0;
00496
00497 __param_descriptions__.push_back(NavigatorConfig::AbstractParamDescriptionConstPtr(new NavigatorConfig::ParamDescription<bool>("offensive_driving", "bool", 0, "Drive aggressively (defensively if false)", "", &NavigatorConfig::offensive_driving)));
00498
00499 __min__.passing_delay = 0.0;
00500
00501 __max__.passing_delay = 10.0;
00502
00503 __default__.passing_delay = 5.0;
00504
00505 __param_descriptions__.push_back(NavigatorConfig::AbstractParamDescriptionConstPtr(new NavigatorConfig::ParamDescription<double>("passing_delay", "double", 0, "Wait time before passing (s)", "", &NavigatorConfig::passing_delay)));
00506
00507 __min__.precedence_delay = 0.0;
00508
00509 __max__.precedence_delay = 30.0;
00510
00511 __default__.precedence_delay = 10.0;
00512
00513 __param_descriptions__.push_back(NavigatorConfig::AbstractParamDescriptionConstPtr(new NavigatorConfig::ParamDescription<double>("precedence_delay", "double", 0, "Wait time for intersection precedence (s)", "", &NavigatorConfig::precedence_delay)));
00514
00515 __min__.real_max_yaw_rate = 0.1;
00516
00517 __max__.real_max_yaw_rate = 2.0;
00518
00519 __default__.real_max_yaw_rate = 0.9;
00520
00521 __param_descriptions__.push_back(NavigatorConfig::AbstractParamDescriptionConstPtr(new NavigatorConfig::ParamDescription<double>("real_max_yaw_rate", "double", 0, "Real maximum yaw rate (radians/s)", "", &NavigatorConfig::real_max_yaw_rate)));
00522
00523 __min__.roadblock_delay = 0.0;
00524
00525 __max__.roadblock_delay = 10.0;
00526
00527 __default__.roadblock_delay = 5.0;
00528
00529 __param_descriptions__.push_back(NavigatorConfig::AbstractParamDescriptionConstPtr(new NavigatorConfig::ParamDescription<double>("roadblock_delay", "double", 0, "Wait time for road blockage (s)", "", &NavigatorConfig::roadblock_delay)));
00530
00531 __min__.spot_waypoint_radius = 0.1;
00532
00533 __max__.spot_waypoint_radius = 4.0;
00534
00535 __default__.spot_waypoint_radius = 0.5;
00536
00537 __param_descriptions__.push_back(NavigatorConfig::AbstractParamDescriptionConstPtr(new NavigatorConfig::ParamDescription<double>("spot_waypoint_radius", "double", 0, "Spot waypoint radius (m)", "", &NavigatorConfig::spot_waypoint_radius)));
00538
00539 __min__.spring_lookahead = 0.0;
00540
00541 __max__.spring_lookahead = 8.0;
00542
00543 __default__.spring_lookahead = 0.0;
00544
00545 __param_descriptions__.push_back(NavigatorConfig::AbstractParamDescriptionConstPtr(new NavigatorConfig::ParamDescription<double>("spring_lookahead", "double", 0, "Spring lookahead distance (m)", "", &NavigatorConfig::spring_lookahead)));
00546
00547 __min__.stop_approach_speed = 1.0;
00548
00549 __max__.stop_approach_speed = 5.0;
00550
00551 __default__.stop_approach_speed = 3.0;
00552
00553 __param_descriptions__.push_back(NavigatorConfig::AbstractParamDescriptionConstPtr(new NavigatorConfig::ParamDescription<double>("stop_approach_speed", "double", 0, "Stop line approach speed (m/s)", "", &NavigatorConfig::stop_approach_speed)));
00554
00555 __min__.stop_creep_speed = 0.5;
00556
00557 __max__.stop_creep_speed = 3.0;
00558
00559 __default__.stop_creep_speed = 1.0;
00560
00561 __param_descriptions__.push_back(NavigatorConfig::AbstractParamDescriptionConstPtr(new NavigatorConfig::ParamDescription<double>("stop_creep_speed", "double", 0, "Speed while creeping to stop (m/s)", "", &NavigatorConfig::stop_creep_speed)));
00562
00563 __min__.stop_deceleration = 0.05;
00564
00565 __max__.stop_deceleration = 4.0;
00566
00567 __default__.stop_deceleration = 2.0;
00568
00569 __param_descriptions__.push_back(NavigatorConfig::AbstractParamDescriptionConstPtr(new NavigatorConfig::ParamDescription<double>("stop_deceleration", "double", 0, "Desired stopping deceleration (m/s^2)", "", &NavigatorConfig::stop_deceleration)));
00570
00571 __min__.stop_distance = 0.0;
00572
00573 __max__.stop_distance = 4.0;
00574
00575 __default__.stop_distance = 2.0;
00576
00577 __param_descriptions__.push_back(NavigatorConfig::AbstractParamDescriptionConstPtr(new NavigatorConfig::ParamDescription<double>("stop_distance", "double", 0, "Desired stopping distance (m)", "", &NavigatorConfig::stop_distance)));
00578
00579 __min__.stop_latency = 0.0;
00580
00581 __max__.stop_latency = 4.0;
00582
00583 __default__.stop_latency = 0.0;
00584
00585 __param_descriptions__.push_back(NavigatorConfig::AbstractParamDescriptionConstPtr(new NavigatorConfig::ParamDescription<double>("stop_latency", "double", 0, "Brake latency for stopping (s)", "", &NavigatorConfig::stop_latency)));
00586
00587 __min__.stop_line_delay = 0.0;
00588
00589 __max__.stop_line_delay = 10.0;
00590
00591 __default__.stop_line_delay = 1.0;
00592
00593 __param_descriptions__.push_back(NavigatorConfig::AbstractParamDescriptionConstPtr(new NavigatorConfig::ParamDescription<double>("stop_line_delay", "double", 0, "Delay when stop line reached (s)", "", &NavigatorConfig::stop_line_delay)));
00594
00595 __min__.turning_heading_tune = 0.0;
00596
00597 __max__.turning_heading_tune = 1.0;
00598
00599 __default__.turning_heading_tune = 0.5;
00600
00601 __param_descriptions__.push_back(NavigatorConfig::AbstractParamDescriptionConstPtr(new NavigatorConfig::ParamDescription<double>("turning_heading_tune", "double", 0, "yaw tuning parameter (heading)", "", &NavigatorConfig::turning_heading_tune)));
00602
00603 __min__.turning_int_tune = 0.0;
00604
00605 __max__.turning_int_tune = 4.0;
00606
00607 __default__.turning_int_tune = 1.25;
00608
00609 __param_descriptions__.push_back(NavigatorConfig::AbstractParamDescriptionConstPtr(new NavigatorConfig::ParamDescription<double>("turning_int_tune", "double", 0, "yaw tuning parameter (integral)", "", &NavigatorConfig::turning_int_tune)));
00610
00611 __min__.turning_latency = 0.0;
00612
00613 __max__.turning_latency = 4.0;
00614
00615 __default__.turning_latency = 1.0;
00616
00617 __param_descriptions__.push_back(NavigatorConfig::AbstractParamDescriptionConstPtr(new NavigatorConfig::ParamDescription<double>("turning_latency", "double", 0, "Turning latency time (s)", "", &NavigatorConfig::turning_latency)));
00618
00619 __min__.turning_offset_tune = 0.0;
00620
00621 __max__.turning_offset_tune = 1.0;
00622
00623 __default__.turning_offset_tune = 0.5;
00624
00625 __param_descriptions__.push_back(NavigatorConfig::AbstractParamDescriptionConstPtr(new NavigatorConfig::ParamDescription<double>("turning_offset_tune", "double", 0, "Yaw tuning parameter (offset)", "", &NavigatorConfig::turning_offset_tune)));
00626
00627 __min__.uturn_speed = 1.0;
00628
00629 __max__.uturn_speed = 4.0;
00630
00631 __default__.uturn_speed = 2.0;
00632
00633 __param_descriptions__.push_back(NavigatorConfig::AbstractParamDescriptionConstPtr(new NavigatorConfig::ParamDescription<double>("uturn_speed", "double", 0, "U-turn speed (m/s)", "", &NavigatorConfig::uturn_speed)));
00634
00635 __min__.uturn_stop_heading = 0.0;
00636
00637 __max__.uturn_stop_heading = 3.14159265359;
00638
00639 __default__.uturn_stop_heading = 0.785398163397;
00640
00641 __param_descriptions__.push_back(NavigatorConfig::AbstractParamDescriptionConstPtr(new NavigatorConfig::ParamDescription<double>("uturn_stop_heading", "double", 0, "U-turn stop heading (radians)", "", &NavigatorConfig::uturn_stop_heading)));
00642
00643 __min__.uturn_threshold = 0.0;
00644
00645 __max__.uturn_threshold = 4.0;
00646
00647 __default__.uturn_threshold = 1.0;
00648
00649 __param_descriptions__.push_back(NavigatorConfig::AbstractParamDescriptionConstPtr(new NavigatorConfig::ParamDescription<double>("uturn_threshold", "double", 0, "U-turn threshold (m)", "", &NavigatorConfig::uturn_threshold)));
00650
00651 __min__.uturn_yaw_rate = 0.5;
00652
00653 __max__.uturn_yaw_rate = 3.0;
00654
00655 __default__.uturn_yaw_rate = 1.5;
00656
00657 __param_descriptions__.push_back(NavigatorConfig::AbstractParamDescriptionConstPtr(new NavigatorConfig::ParamDescription<double>("uturn_yaw_rate", "double", 0, "U-turn yaw rate (radians/s)", "", &NavigatorConfig::uturn_yaw_rate)));
00658
00659 __min__.zone_waypoint_radius = 0.1;
00660
00661 __max__.zone_waypoint_radius = 4.0;
00662
00663 __default__.zone_waypoint_radius = 1.0;
00664
00665 __param_descriptions__.push_back(NavigatorConfig::AbstractParamDescriptionConstPtr(new NavigatorConfig::ParamDescription<double>("zone_waypoint_radius", "double", 0, "Zone waypoint radius (m)", "", &NavigatorConfig::zone_waypoint_radius)));
00666
00667
00668 for (std::vector<NavigatorConfig::AbstractParamDescriptionConstPtr>::const_iterator i = __param_descriptions__.begin(); i != __param_descriptions__.end(); i++)
00669 __description_message__.parameters.push_back(**i);
00670 __max__.__toMessage__(__description_message__.max, __param_descriptions__);
00671 __min__.__toMessage__(__description_message__.min, __param_descriptions__);
00672 __default__.__toMessage__(__description_message__.dflt, __param_descriptions__);
00673 }
00674 std::vector<NavigatorConfig::AbstractParamDescriptionConstPtr> __param_descriptions__;
00675 NavigatorConfig __max__;
00676 NavigatorConfig __min__;
00677 NavigatorConfig __default__;
00678 dynamic_reconfigure::ConfigDescription __description_message__;
00679 static const NavigatorConfigStatics *get_instance()
00680 {
00681
00682
00683
00684
00685 static NavigatorConfigStatics instance;
00686 return &instance;
00687 }
00688 };
00689
00690 inline const dynamic_reconfigure::ConfigDescription &NavigatorConfig::__getDescriptionMessage__()
00691 {
00692 return __get_statics__()->__description_message__;
00693 }
00694
00695 inline const NavigatorConfig &NavigatorConfig::__getDefault__()
00696 {
00697 return __get_statics__()->__default__;
00698 }
00699
00700 inline const NavigatorConfig &NavigatorConfig::__getMax__()
00701 {
00702 return __get_statics__()->__max__;
00703 }
00704
00705 inline const NavigatorConfig &NavigatorConfig::__getMin__()
00706 {
00707 return __get_statics__()->__min__;
00708 }
00709
00710 inline const std::vector<NavigatorConfig::AbstractParamDescriptionConstPtr> &NavigatorConfig::__getParamDescriptions__()
00711 {
00712 return __get_statics__()->__param_descriptions__;
00713 }
00714
00715 inline const NavigatorConfigStatics *NavigatorConfig::__get_statics__()
00716 {
00717 const static NavigatorConfigStatics *statics;
00718
00719 if (statics)
00720 return statics;
00721
00722 boost::mutex::scoped_lock lock(dynamic_reconfigure::__init_mutex__);
00723
00724 if (statics)
00725 return statics;
00726
00727 statics = NavigatorConfigStatics::get_instance();
00728
00729 return statics;
00730 }
00731
00732
00733 }
00734
00735 #endif // __NAVIGATORRECONFIGURATOR_H__