trajectory_generation
/build/rock-master-18.09-control-orogen-trajectory-generation-0.20180822/trajectory_generationTypes.hpp
Go to the documentation of this file.
1 #ifndef trajectory_generation_TYPES_HPP
2 #define trajectory_generation_TYPES_HPP
3 
4 #include <base/commands/Joints.hpp>
5 
6 namespace trajectory_generation {
7 
13 };
14 
17 
18  struct upperLimit{
19  double position;
20  double speed;
21  double acceleration;
22  };
23  struct lowerLimit{
24  double position;
25  };
26  double max_jerk;
29 
31  max.position = base::unset<float>();
32  min.position = base::unset<float>();
33  max.speed = base::unset<float>();
34  max.acceleration = base::unset<float>();
35  max_jerk = base::unset<float>();
36  }
37 
38  bool hasMaxPosition() const {return !base::isUnset(max.position);}
39  bool hasMinPosition() const {return !base::isUnset(min.position);}
40  bool hasMaxVelocity() const {return !base::isUnset(max.speed);}
41  bool hasMaxAcceleration() const {return !base::isUnset(max.acceleration);}
42  bool hasMaxJerk() const {return !base::isUnset(max_jerk);}
43 
44  void validate() const{
45 #ifdef USING_REFLEXXES_TYPE_IV
46  if(!hasMaxPosition())
47  throw std::invalid_argument("Motion Constraints: Maximum position is invalid");
48  if(!hasMinPosition())
49  throw std::invalid_argument("Motion Constraints: Minimum position is invalid");
50  if(max.position <= min.position)
51  throw std::invalid_argument("Motion Constraints: Max. position has to be > min. position");
52 #endif
53  if(!hasMaxVelocity())
54  throw std::invalid_argument("Motion Constraints: Maximum speed is invalid");
55  if(!hasMaxAcceleration())
56  throw std::invalid_argument("Motion Constraints: Maximum acceleration is invalid");
57  if(!hasMaxJerk())
58  throw std::invalid_argument("Motion Constraints: Maximum jerk is invalid");
59  if(max.speed <= 0)
60  throw std::invalid_argument("Motion Constraints: Max. speed has to be > 0");
61  if(max.acceleration <= 0)
62  throw std::invalid_argument("Motion Constraints: Max. acceleration has to be > 0");
63  if(max_jerk <= 0)
64  throw std::invalid_argument("Motion Constraints: Max. jerk has to be > 0");
65  }
66  void applyDefaultIfUnset(const MotionConstraint& default_constraints){
67  if(!hasMaxPosition())
68  max.position = default_constraints.max.position;
69  if(!hasMinPosition())
70  min.position = default_constraints.min.position;
71  if(!hasMaxVelocity())
72  max.speed = default_constraints.max.speed;
73  if(!hasMaxAcceleration())
74  max.acceleration = default_constraints.max.acceleration;
75  if(!hasMaxJerk())
76  max_jerk = default_constraints.max_jerk;
77  }
78 };
79 
82 
84 struct MotionConstraints : base::NamedVector<MotionConstraint>{
85 };
86 
89 
91 struct ConstrainedJointsCmd : public base::commands::Joints{
92  std::vector<MotionConstraint> motion_constraints;
93  void validate() const{
94  if(names.size() != size())
95  throw std::invalid_argument("Invalid target: Size of name vector should be same as element vector");
96  if(!motion_constraints.empty() && motion_constraints.size() != size())
97  throw std::invalid_argument("Invalid target: If not empty, motion constraints must have same size as target element vector");
98  }
99 };
100 
106  RML_ERROR = -1,
118 };
119 
123  ReflexxesInputParameters(const size_t dof){
124  selection_vector.resize(dof, base::NaN<u_int8_t>());
125  current_position_vector.resize(dof, base::NaN<double>());
126  current_velocity_vector.resize(dof, base::NaN<double>());
127  current_acceleration_vector.resize(dof, base::NaN<double>());
128  max_position_vector.resize(dof, base::NaN<double>());
129  min_position_vector.resize(dof, base::NaN<double>());
130  max_velocity_vector.resize(dof, base::NaN<double>());
131  max_acceleration_vector.resize(dof, base::NaN<double>());
132  max_jerk_vector.resize(dof, base::NaN<double>());
133  target_position_vector.resize(dof, base::NaN<double>());
134  target_velocity_vector.resize(dof, base::NaN<double>());
135  min_synchronization_time = base::NaN<double>();
136  override_value = base::NaN<double>();
137  }
138  std::vector<u_int8_t> selection_vector;
139  std::vector<double> current_position_vector;
140  std::vector<double> current_velocity_vector;
141  std::vector<double> current_acceleration_vector;
142  std::vector<double> max_position_vector;
143  std::vector<double> min_position_vector;
144  std::vector<double> max_velocity_vector;
145  std::vector<double> max_acceleration_vector;
146  std::vector<double> max_jerk_vector;
147  std::vector<double> target_position_vector;
148  std::vector<double> target_velocity_vector;
150  double override_value;
151 };
152 
156  ReflexxesOutputParameters(const size_t dof){
157  new_position_vector.resize(dof, base::NaN<int>());
158  new_velocity_vector.resize(dof, base::NaN<double>());
159  new_acceleration_vector.resize(dof, base::NaN<double>());
160  execution_times.resize(dof, base::NaN<double>());
161  position_values_at_target_velocity.resize(dof, base::NaN<double>());
162  dof_with_greatest_execution_time = base::NaN<int>();
163  synchronization_time = base::NaN<double>();
164  current_override_value = base::NaN<double>();
165  a_new_calculation_was_performed = false;
166  trajectory_is_phase_synchronized = false;
167  override_filter_is_active = false;
168  trajectory_exceeds_target_position = false;
169  }
170  std::vector<double> new_position_vector;
171  std::vector<double> new_velocity_vector;
172  std::vector<double> new_acceleration_vector;
173  std::vector<double> execution_times;
182 };
183 
184 }
185 
186 #endif
187 
Definition: trajectory_generationTypes.hpp:110
bool hasMinPosition() const
Definition: trajectory_generationTypes.hpp:39
double speed
Definition: trajectory_generationTypes.hpp:20
bool a_new_calculation_was_performed
Definition: trajectory_generationTypes.hpp:175
bool hasMaxJerk() const
Definition: trajectory_generationTypes.hpp:42
std::vector< double > current_position_vector
Definition: trajectory_generationTypes.hpp:139
double override_value
Definition: trajectory_generationTypes.hpp:150
ReflexxesOutputParameters()
Definition: trajectory_generationTypes.hpp:155
Definition: trajectory_generationTypes.hpp:10
ReflexxesInputParameters(const size_t dof)
Definition: trajectory_generationTypes.hpp:123
Definition: trajectory_generationTypes.hpp:113
std::vector< double > new_acceleration_vector
Definition: trajectory_generationTypes.hpp:172
Definition: trajectory_generationTypes.hpp:121
bool trajectory_exceeds_target_position
Definition: trajectory_generationTypes.hpp:181
Definition: trajectory_generationTypes.hpp:105
double synchronization_time
Definition: trajectory_generationTypes.hpp:179
void validate() const
Definition: trajectory_generationTypes.hpp:93
std::vector< MotionConstraint > motion_constraints
Definition: trajectory_generationTypes.hpp:92
ReflexxesResultValue
Definition: trajectory_generationTypes.hpp:102
void validate() const
Definition: trajectory_generationTypes.hpp:44
MotionConstraint JointMotionConstraints
Definition: trajectory_generationTypes.hpp:81
std::vector< double > current_acceleration_vector
Definition: trajectory_generationTypes.hpp:141
Definition: trajectory_generationTypes.hpp:117
double position
Definition: trajectory_generationTypes.hpp:24
Definition: trajectory_generationTypes.hpp:23
std::vector< u_int8_t > selection_vector
Definition: trajectory_generationTypes.hpp:138
std::vector< double > max_velocity_vector
Definition: trajectory_generationTypes.hpp:144
ReflexxesOutputParameters(const size_t dof)
Definition: trajectory_generationTypes.hpp:156
double max_jerk
Definition: trajectory_generationTypes.hpp:26
std::vector< double > execution_times
Definition: trajectory_generationTypes.hpp:173
void applyDefaultIfUnset(const MotionConstraint &default_constraints)
Definition: trajectory_generationTypes.hpp:66
int dof_with_greatest_execution_time
Definition: trajectory_generationTypes.hpp:178
Definition: trajectory_generationTypes.hpp:115
std::vector< double > target_velocity_vector
Definition: trajectory_generationTypes.hpp:148
std::vector< double > max_position_vector
Definition: trajectory_generationTypes.hpp:142
upperLimit max
Definition: trajectory_generationTypes.hpp:27
bool trajectory_is_phase_synchronized
Definition: trajectory_generationTypes.hpp:176
Definition: trajectory_generationTypes.hpp:109
Definition: trajectory_generationTypes.hpp:108
Definition: trajectory_generationTypes.hpp:104
lowerLimit min
Definition: trajectory_generationTypes.hpp:28
Definition: trajectory_generationTypes.hpp:106
Definition: trajectory_generationTypes.hpp:112
Definition: trajectory_generationTypes.hpp:114
bool hasMaxAcceleration() const
Definition: trajectory_generationTypes.hpp:41
bool hasMaxPosition() const
Definition: trajectory_generationTypes.hpp:38
MotionConstraints JointsMotionConstraints
Definition: trajectory_generationTypes.hpp:88
Definition: trajectory_generationTypes.hpp:12
std::vector< double > new_velocity_vector
Definition: trajectory_generationTypes.hpp:171
double position
Definition: trajectory_generationTypes.hpp:19
std::vector< double > new_position_vector
Definition: trajectory_generationTypes.hpp:170
double min_synchronization_time
Definition: trajectory_generationTypes.hpp:149
std::vector< double > max_acceleration_vector
Definition: trajectory_generationTypes.hpp:145
Definition: Conversions.cpp:4
Definition: trajectory_generationTypes.hpp:107
double current_override_value
Definition: trajectory_generationTypes.hpp:180
double acceleration
Definition: trajectory_generationTypes.hpp:21
PositionalLimitsBehavior
Definition: trajectory_generationTypes.hpp:9
Definition: trajectory_generationTypes.hpp:91
ReflexxesInputParameters()
Definition: trajectory_generationTypes.hpp:122
MotionConstraint()
Definition: trajectory_generationTypes.hpp:30
Definition: trajectory_generationTypes.hpp:116
std::vector< double > min_position_vector
Definition: trajectory_generationTypes.hpp:143
Definition: trajectory_generationTypes.hpp:11
std::vector< double > max_jerk_vector
Definition: trajectory_generationTypes.hpp:146
Definition: trajectory_generationTypes.hpp:16
Definition: trajectory_generationTypes.hpp:18
bool hasMaxVelocity() const
Definition: trajectory_generationTypes.hpp:40
Definition: trajectory_generationTypes.hpp:111
std::vector< double > current_velocity_vector
Definition: trajectory_generationTypes.hpp:140
Definition: trajectory_generationTypes.hpp:154
Definition: trajectory_generationTypes.hpp:103
std::vector< double > position_values_at_target_velocity
Definition: trajectory_generationTypes.hpp:174
bool override_filter_is_active
Definition: trajectory_generationTypes.hpp:177
Definition: trajectory_generationTypes.hpp:84
std::vector< double > target_position_vector
Definition: trajectory_generationTypes.hpp:147