Go to the documentation of this file.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 #ifndef TOWR_OPTIMIZATION_PARAMETERS_H_
00031 #define TOWR_OPTIMIZATION_PARAMETERS_H_
00032
00033 #include <vector>
00034 #include <array>
00035 #include <utility>
00036
00037 namespace towr {
00038
00133 class Parameters {
00134 public:
00139 enum ConstraintName { Dynamic,
00140 EndeffectorRom,
00141 TotalTime,
00142 Terrain,
00143 Force,
00144 Swing,
00145 BaseRom,
00146 BaseAcc
00147 };
00152 enum CostName { ForcesCostID,
00153 EEMotionCostID
00154 };
00155
00156 using CostWeights = std::vector<std::pair<CostName, double>>;
00157 using UsedConstraints = std::vector<ConstraintName>;
00158 using VecTimes = std::vector<double>;
00159 using EEID = unsigned int;
00160
00164 Parameters();
00165 virtual ~Parameters() = default;
00166
00168 std::vector<VecTimes> ee_phase_durations_;
00169
00171 std::vector<bool> ee_in_contact_at_start_;
00172
00174 UsedConstraints constraints_;
00175
00177 CostWeights costs_;
00178
00180 double dt_constraint_dynamic_;
00181
00183 double dt_constraint_range_of_motion_;
00184
00186 double dt_constraint_base_motion_;
00187
00189 double duration_base_polynomial_;
00190
00192 int ee_polynomials_per_swing_phase_;
00193
00195 int force_polynomials_per_stance_phase_;
00196
00198 double force_limit_in_normal_direction_;
00199
00201 std::vector<int> bounds_final_lin_pos_,
00202 bounds_final_lin_vel_,
00203 bounds_final_ang_pos_,
00204 bounds_final_ang_vel_;
00205
00212 std::pair<double,double> bound_phase_duration_;
00213
00215 void OptimizePhaseDurations();
00216
00218 VecTimes GetBasePolyDurations() const;
00219
00221 int GetPhaseCount(EEID ee) const;
00222
00224 bool IsOptimizeTimings() const;
00225
00227 int GetEECount() const;
00228
00230 double GetTotalTime() const;
00231 };
00232
00233 }
00234
00235 #endif