travel_time_step_cost_estimator.cpp
Go to the documentation of this file.
2 
3 
4 
6 {
8  : StepCostEstimatorPlugin("travel_time_cost_estimator")
9 {
10 }
11 
12 bool TravelTimeStepCostEstimator::loadParams(const vigir_generic_params::ParameterSet& params)
13 {
14  if (!StepCostEstimatorPlugin::loadParams(params))
15  return false;
16 
17  params.getParam("travel_time_cost_estimator/sway/parabol_a", a_sway_inv, 0.0);
18  a_sway_inv = 1.0/a_sway_inv;
19  params.getParam("travel_time_cost_estimator/sway/parabol_b", b_sway_inv, 0.0);
20  b_sway_inv = 1.0/b_sway_inv;
21  params.getParam("travel_time_cost_estimator/sway/const_time", const_sway_time, 0.0);
22 
23  params.getParam("travel_time_cost_estimator/swing/parabol_a", a_swing_inv, 0.0);
25  params.getParam("travel_time_cost_estimator/swing/parabol_b", b_swing_inv, 0.0);
27  params.getParam("travel_time_cost_estimator/swing/const_time", const_swing_time, 0.0);
28 
29  return true;
30 }
31 
32 bool TravelTimeStepCostEstimator::getCost(const State& left_foot, const State& right_foot, const State& swing_foot, double& cost, double& cost_multiplier, double& risk, double& risk_multiplier) const
33 {
34  cost_multiplier = 1.0;
35  risk = 0.0;
36  risk_multiplier = 1.0;
37 
38  const State& stand_foot = swing_foot.getLeg() == LEFT ? right_foot : left_foot;
39  const State& swing_foot_before = swing_foot.getLeg() == LEFT ? left_foot : right_foot;
40 
41  tf::Transform sway = swing_foot_before.getPose().inverse() * stand_foot.getPose();
42  tf::Transform swing = swing_foot_before.getPose().inverse() * swing_foot.getPose();
43 
44  double sway_duration = parabol(sway.getOrigin().x(), sway.getOrigin().y(), a_sway_inv, b_sway_inv) + const_sway_time;
45  double step_duration = parabol(swing.getOrigin().x(), swing.getOrigin().y(), a_swing_inv, b_swing_inv) + const_swing_time;
46 
47  cost = sway_duration + step_duration;
48 
49  return true;
50 }
51 }
52 
53 #include <pluginlib/class_list_macros.h>
54 PLUGINLIB_EXPORT_CLASS(vigir_footstep_planning::TravelTimeStepCostEstimator, vigir_footstep_planning::StepCostEstimatorPlugin)
bool getCost(const State &left_foot, const State &right_foot, const State &swing_foot, double &cost, double &cost_multiplier, double &risk, double &risk_multiplier) const override
bool loadParams(const vigir_generic_params::ParameterSet &params=vigir_generic_params::ParameterSet()) override


vigir_footstep_planning_default_plugins
Author(s): Alexander Stumpf
autogenerated on Sun Nov 17 2019 03:30:01