environment_parameters.cpp
Go to the documentation of this file.
2 
4 {
5 EnvironmentParameters::EnvironmentParameters(const vigir_generic_params::ParameterSet& params)
6 {
7  // get robot specific parameters not included in the parameter set
9 
10  // get foot dimensions
11  nh.getParam("foot/size/x", foot_size.x);
12  nh.getParam("foot/size/y", foot_size.y);
13  nh.getParam("foot/size/z", foot_size.z);
14  nh.getParam("foot/separation", foot_seperation);
15 
16  params.getParam("max_risk", max_risk, 1.0);
17 
18  // load remaining parameters from parameter set
19  params.getParam("heuristic_scale", heuristic_scale);
20  params.getParam("max_hash_size", hash_table_size);
21 
22  params.getParam("planner_type", ivPlannerType);
23  params.getParam("search_until_first_solution", ivSearchUntilFirstSolution);
24  params.getParam("forward_search", forward_search);
25 
26  params.getParam("max_planning_time", max_planning_time);
27  params.getParam("initial_epsilon", initial_eps);
28  params.getParam("decrease_epsilon", decrease_eps);
29  //params.getParam("num_random_nodes", num_random_nodes);
30  //params.getParam("random_node_dist", random_node_distance);
31 
32  //params.getParam("xxx", ivEnvironmentmap_step_cost_filename);
33 
34  // set collision mode
35  params.getParam("collision_check/cell_size", cell_size);
36  params.getParam("collision_check/num_angle_bins", num_angle_bins);
37  angle_bin_size = 2.0*M_PI / static_cast<double>(num_angle_bins);
38 
39  double max_step_range_x, max_step_range_y, max_step_range_theta;
40  double max_inverse_step_range_x, max_inverse_step_range_y, max_inverse_step_range_theta;
41 
42  // step range
43  XmlRpc::XmlRpcValue step_range_x;
44  XmlRpc::XmlRpcValue step_range_y;
45  if (params.getParam("step_range/x", step_range_x) && params.getParam("step_range/y", step_range_y))
46  {
47  max_step_dist = 0;
48  double max_x = (double)step_range_x[0];
49  double max_y = (double)step_range_y[0];
50  double max_inv_x = (double)step_range_x[0];
51  double max_inv_y = (double)step_range_y[0];
52  for (int i=0; i < step_range_x.size(); ++i)
53  {
54  double x = (double)step_range_x[i];
55  double y = (double)step_range_y[i];
56 
57  max_x = std::max(max_x, x);
58  max_y = std::max(max_y, y);
59  max_inv_x = std::min(max_inv_x, x);
60  max_inv_y = std::min(max_inv_y, y);
61 
62  double cur_step_width = sqrt(x*x + y*y);
63  if (cur_step_width > max_step_dist)
64  max_step_dist = cur_step_width;
65  }
66 
67  max_step_range_x = max_x;
68  max_step_range_y = max_y;
69  params.getParam("foot/max/step/theta", max_step_range_theta);
70  max_inverse_step_range_x = max_inv_x;
71  max_inverse_step_range_y = max_inv_y;
72  params.getParam("foot/max/inverse/step/theta", max_inverse_step_range_theta);
73 
74  max_x = std::max(std::abs(max_x), std::abs(max_inv_x));
75  max_y = std::max(std::abs(max_y), std::abs(max_inv_y));
76  max_step_range_width = sqrt(max_x*max_x + max_y*max_y);
77  }
78 
79  // misc parameters
80  params.getParam("feedback_rate", feedback_rate);
81  params.getParam("threads", threads);
82  params.getParam("jobs_per_thread", jobs_per_thread);
83 
84  // upload online generated parameters
86  vigir_generic_params::ParameterSet& params_(const_cast<vigir_generic_params::ParameterSet&>(params));
87 
88  params_.setParam("max_step_range/x", max_step_range_x);
89  params_.setParam("max_step_range/y", max_step_range_y);
90  params_.setParam("max_step_range/yaw", max_step_range_theta);
91 
92  params_.setParam("max_step_range/inv_x", max_inverse_step_range_x);
93  params_.setParam("max_step_range/inv_y", max_inverse_step_range_y);
94  params_.setParam("max_step_range/inv_yaw", max_inverse_step_range_theta);
95 
96  params_.setParam("max_step_range/width", max_step_range_width);
97 
98  params_.setParam("max_step_dist/x", std::max(std::abs(max_step_range_x), std::abs(max_inverse_step_range_x)));
99  params_.setParam("max_step_dist/y", 0.5*(std::max(std::abs(max_step_range_y), std::abs(max_inverse_step_range_y)) - foot_seperation));
100 }
101 
103 {
104 }
105 }
int size() const
EnvironmentParameters(const vigir_generic_params::ParameterSet &params)
bool getParam(const std::string &key, std::string &s) const
double max_planning_time
default max planning time if not given by request


vigir_footstep_planner
Author(s): Alexander Stumpf
autogenerated on Sun Nov 17 2019 03:29:59