KinematicControl:: KinematicControl (string const & name) : Process (name), kr_ (3.0), kd_ (-1.5), kg_ (8.0), vtrans_max_ (-1.0), vrot_max_ (-1.0), drive_ (0), enabled_ (true), have_goal_ (false) { // OK this is subtle and counter-intuitive. If you set // sequence_mode (the 2nd arg) to false, then the yaml parses // fails with an invalid dereference. What happens is that it // looks inside the sequence of 5 numbers that defines the goal, // and the first member of that sequence is a scalar, but the Goal // converter needs a vector. I need to find a way to produce an // appropriate error message in this case. // reflectCallback<Goal> ("goal", false, boost::bind (&KinematicControl::setGoal, this, _1)); reflectParameter ("kr", &kr_); reflectParameter ("kd", &kd_); reflectParameter ("kg", &kg_); reflectSlot ("drive", &drive_); reflectParameter ("vtrans_max", &vtrans_max_); reflectParameter ("vrot_max", &vrot_max_); }
RayDistanceSensor:: RayDistanceSensor (string const & name) : Sensor (name), distance_ (1.0), max_distance_ (1.0) { reflectParameter ("max_distance", &max_distance_); reflectParameter ("distance", &distance_); }
Example(std::string const & name) : fpplib::Configurable(name), an_int_(17), a_double_(42.0) { reflectParameter("an_int", &an_int_); reflectParameter("a_double", &a_double_); std::cout << "constructed an Example called " << name << "\n" << " an int: " << an_int_ << "\n" << " a double: " << a_double_ << "\n"; }
DifferentialTrailerDrive:: DifferentialTrailerDrive (string const & name) : DifferentialDrive (name), hitch_offset_ (1.0), trailer_arm_ (1.0), trailer_ (0), trailer_angle_ (0.0) { reflectParameter ("hitch_offset", &hitch_offset_); reflectParameter ("trailer_arm", &trailer_arm_); reflectParameter ("trailer_angle", &trailer_angle_); reflectSlot ("trailer", &trailer_); }
Esbot:: Esbot(std::string const &name) : RobotClient(name), m_radius(0.0), m_speed(0.0), m_grid_width(8), // override with option pnf_grid_width m_grid_wdim(60), // override with option pnf_grid_wdim m_goal(new Goal()), m_carrot_trace(new carrot_trace()), m_pose(new Frame()), m_replan_request(false) { reflectParameter("pnf_grid_width", &m_grid_width); reflectParameter("pnf_grid_wdim", &m_grid_wdim); }
FixedCamera:: FixedCamera (string const & name) : Camera (name, "looks at (fixed) bounds"), bounds_ (0.0, 0.0, 1.0, 1.0) { reflectParameter ("bounds", &bounds_); }
RobotClient:: RobotClient(std::string const &name) : fpplib::Configurable(name), m_enable_trajectory(true), m_noisy_scanners(false), m_scanner_noise_min_factor(-1), // factors <0 are ignored m_scanner_noise_max_factor(-1), m_scanner_noise_min_offset(-0.1), // if min>max then offsets are ignored m_scanner_noise_max_offset( 0.1), m_camera_zoom(2), m_color(1.0, 1.0, 1.0) { registry.add(name, this); reflectParameter("enable_trajectory", &m_enable_trajectory); reflectParameter("noisy_scanners", &m_noisy_scanners); reflectParameter("scanner_noise_min_factor", &m_scanner_noise_min_factor); reflectParameter("scanner_noise_max_factor", &m_scanner_noise_max_factor); reflectParameter("scanner_noise_min_offset", &m_scanner_noise_min_offset); reflectParameter("scanner_noise_max_offset", &m_scanner_noise_max_offset); reflectParameter("camera_zoom", &m_camera_zoom); reflectCallback<qhgoal_s>("goals", true, boost::bind(&RobotClient::AppendGoal, this, _1)); reflectParameter("pose", &m_initial_pose); reflectParameter("color", &m_color); }