PolynomeFoot.hh
Go to the documentation of this file.
1 /*
2  * Copyright 2006, 2007, 2008, 2009, 2010,
3  *
4  * Andrei Herdt
5  * Florent Lamiraux
6  * Mathieu Poirier
7  * Olivier Stasse
8  *
9  * JRL, CNRS/AIST
10  *
11  * This file is part of walkGenJrl.
12  * walkGenJrl is free software: you can redistribute it and/or modify
13  * it under the terms of the GNU Lesser General Public License as published by
14  * the Free Software Foundation, either version 3 of the License, or
15  * (at your option) any later version.
16  *
17  * walkGenJrl is distributed in the hope that it will be useful,
18  * but WITHOUT ANY WARRANTY; without even the implied warranty of
19  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
20  * GNU General Lesser Public License for more details.
21  * You should have received a copy of the GNU Lesser General Public License
22  * along with walkGenJrl. If not, see <http://www.gnu.org/licenses/>.
23  *
24  * Research carried out within the scope of the
25  * Joint Japanese-French Robotics Laboratory (JRL)
26  */
31 #ifndef _POLYNOME_FOOT_H_
32 #define _POLYNOME_FOOT_H_
33 
34 #ifdef max
35 #undef max
36 #undef min
37 #endif
38 
39 #include <Mathematics/Polynome.hh>
40 #include <vector>
41 
42 namespace PatternGeneratorJRL {
43 class PolynomeFoot : public Polynome {
44  protected:
46  double FT_;
47 
48  public:
49  PolynomeFoot(int degree = 0.0, double FT = 0.0) : Polynome(degree), FT_(FT){};
50 
52  double Compute(double t);
53 
55  double ComputeDerivative(double t);
56 
58  double ComputeSecDerivative(double t);
59 
61  double ComputeJerk(double t);
62 };
63 
65 class Polynome3 : public PolynomeFoot {
66  public:
70  Polynome3(double FT, double FP);
73  Polynome3(double FT, double IP, double IS, double FP, double FS);
74 
80  void SetParameters(double FT, double FP);
81 
84  void SetParameters(double FT, double IP, double IS, double FP, double FS);
85 
91  void SetParametersWithInitPosInitSpeed(double FT, double FP, double InitPos,
92  double InitSpeed);
93 
94  void GetParametersWithInitPosInitSpeed(double &FT, double &FP,
95  double &InitPos, double &InitSpeed);
97  ~Polynome3();
98 
99  private:
101  double FP_;
102 };
103 
105 class Polynome4 : public PolynomeFoot {
106  public:
110  Polynome4(double FT, double MP, double FP = 0.0);
111 
113  // Initial velocity and position are 0
114  // Final velocity and position are 0
115  void SetParameters(double FT, double MP, double FP = 0.0);
116 
118  // time horizon
119  // Initial Position
120  // Initial velocity (IS)
121  // Initial Acceleration
122  // Final velocity
123  // Final Acceleration
124  void SetParameters(double FT, double InitPos, double InitSpeed,
125  double InitAcc, double FinalSpeed, double FinalAcc);
126 
132  void SetParametersWithInitPosInitSpeed(double FT, double MP, double InitPos,
133  double InitSpeed, double FP = 0.0);
134 
136  void GetParametersWithInitPosInitSpeed(double &FT, double &MP, double &FP,
137  double &InitPos, double &InitSpeed);
138 
140  ~Polynome4();
141 
142  private:
144  double MP_;
145  double FP_;
146 };
147 
149 class Polynome5 : public PolynomeFoot {
150  private:
151  double InitPos_, InitSpeed_, InitAcc_, FinalPos_, FinalSpeed_, FinalAcc_;
152 
153  public:
157  Polynome5(double FT, double FP);
158 
160  void SetParameters(double FT, double FP);
161 
166  void SetParametersWithInitPosInitSpeed(double FT, double FP, double InitPos,
167  double InitSpeed);
172  void GetParametersWithInitPosInitSpeed(double &FT, double &FP,
173  double &InitPos, double &InitSpeed);
174 
177  void SetParameters(double FT, double FP, double InitPos, double InitSpeed,
178  double InitAcc, double InitJerk = 0.0);
179 
183  void SetParameters(double FT, double InitPos, double InitSpeed,
184  double InitAcc, double FinalPos, double FinalSpeed,
185  double FinalAcc);
186 
188  ~Polynome5();
189 };
190 
192 class Polynome6 : public PolynomeFoot {
193  private:
194  double MP_, FP_, InitPos_, InitSpeed_, InitAcc_;
195 
196  public:
200  Polynome6(double FT, double MP, double FP = 0.0);
201 
203  // Initial acceleration, velocity and position by default 0
204  // Final acceleration, velocity and position are 0
205  void SetParameters(double FT, double MP, double FP = 0.0);
206  void SetParametersWithMiddlePos(double FT, double MP, double InitPos,
207  double InitSpeed, double InitAcc = 0.0,
208  double FP = 0.0);
209 
210  void GetParametersWithInitPosInitSpeed(double &TimeInterval,
211  double &MiddlePosition,
212  double &FinalPosition,
213  double &InitPosition,
214  double &InitSpeed);
216  ~Polynome6();
217 };
218 
220 class Polynome7 : public PolynomeFoot {
221  private:
222  double FP_, InitPos_, InitSpeed_, InitAcc_, InitJerk_;
223 
224  public:
228  Polynome7(double FT, double FP);
229 
231  void SetParameters(double FT, double FP);
232 
237  void SetParametersWithInitPosInitSpeed(double FT, double FP, double InitPos,
238  double InitSpeed);
239 
242  void SetParameters(double FT, double FP, double InitPos, double InitSpeed,
243  double InitAcc, double InitJerk = 0.0);
244 
249  void GetParametersWithInitPosInitSpeed(double &FT, double &FP,
250  double &InitPos, double &InitSpeed);
251 
253  ~Polynome7();
254 };
255 
256 } // namespace PatternGeneratorJRL
257 #endif /* _POLYNOME_FOOT_H_ */
PatternGeneratorJRL::Polynome7::GetParametersWithInitPosInitSpeed
void GetParametersWithInitPosInitSpeed(double &FT, double &FP, double &InitPos, double &InitSpeed)
Definition: PolynomeFoot.cpp:388
PatternGeneratorJRL::Polynome5::~Polynome5
~Polynome5()
Destructor.
Definition: PolynomeFoot.cpp:219
PatternGeneratorJRL::Polynome
Definition: Polynome.hh:42
PatternGeneratorJRL::Polynome5::SetParameters
void SetParameters(double FT, double FP)
Set the parameters.
Definition: PolynomeFoot.cpp:221
PatternGeneratorJRL::Polynome4::Polynome4
Polynome4(double FT, double MP, double FP=0.0)
Definition: PolynomeFoot.cpp:132
PatternGeneratorJRL::PolynomeFoot::FT_
double FT_
Definition: PolynomeFoot.hh:46
PatternGeneratorJRL::Polynome6::SetParametersWithMiddlePos
void SetParametersWithMiddlePos(double FT, double MP, double InitPos, double InitSpeed, double InitAcc=0.0, double FP=0.0)
Definition: PolynomeFoot.cpp:313
PatternGeneratorJRL::Polynome5::Polynome5
Polynome5(double FT, double FP)
Definition: PolynomeFoot.cpp:206
PatternGeneratorJRL::Polynome4
Polynome used for Z trajectory.
Definition: PolynomeFoot.hh:105
PatternGeneratorJRL::Polynome3::~Polynome3
~Polynome3()
Destructor.
Definition: PolynomeFoot.cpp:130
PatternGeneratorJRL::PolynomeFoot::Compute
double Compute(double t)
Definition: PolynomeFoot.cpp:33
PatternGeneratorJRL::PolynomeFoot
Definition: PolynomeFoot.hh:43
PatternGeneratorJRL::Polynome4::GetParametersWithInitPosInitSpeed
void GetParametersWithInitPosInitSpeed(double &FT, double &MP, double &FP, double &InitPos, double &InitSpeed)
Definition: PolynomeFoot.cpp:195
PatternGeneratorJRL::PolynomeFoot::ComputeSecDerivative
double ComputeSecDerivative(double t)
Definition: PolynomeFoot.cpp:51
PatternGeneratorJRL::Polynome5::SetParametersWithInitPosInitSpeed
void SetParametersWithInitPosInitSpeed(double FT, double FP, double InitPos, double InitSpeed)
Definition: PolynomeFoot.cpp:225
PatternGeneratorJRL::Polynome3::Polynome3
Polynome3(double FT, double FP)
Definition: PolynomeFoot.cpp:69
PatternGeneratorJRL::Polynome7::~Polynome7
~Polynome7()
Destructor.
Definition: PolynomeFoot.cpp:435
PatternGeneratorJRL::Polynome6::GetParametersWithInitPosInitSpeed
void GetParametersWithInitPosInitSpeed(double &TimeInterval, double &MiddlePosition, double &FinalPosition, double &InitPosition, double &InitSpeed)
Definition: PolynomeFoot.cpp:349
PatternGeneratorJRL::Polynome5
Polynome used for X,Y and Theta trajectories.
Definition: PolynomeFoot.hh:149
PatternGeneratorJRL::Polynome4::SetParametersWithInitPosInitSpeed
void SetParametersWithInitPosInitSpeed(double FT, double MP, double InitPos, double InitSpeed, double FP=0.0)
Definition: PolynomeFoot.cpp:170
PatternGeneratorJRL::Polynome4::SetParameters
void SetParameters(double FT, double MP, double FP=0.0)
Set the parameters.
PatternGeneratorJRL::Polynome3::SetParametersWithInitPosInitSpeed
void SetParametersWithInitPosInitSpeed(double FT, double FP, double InitPos, double InitSpeed)
Definition: PolynomeFoot.cpp:102
PatternGeneratorJRL::Polynome6::SetParameters
void SetParameters(double FT, double MP, double FP=0.0)
Set the parameters.
Definition: PolynomeFoot.cpp:306
PatternGeneratorJRL::Polynome4::~Polynome4
~Polynome4()
Destructor.
Definition: PolynomeFoot.cpp:204
PatternGeneratorJRL::Polynome7::SetParametersWithInitPosInitSpeed
void SetParametersWithInitPosInitSpeed(double FT, double FP, double InitPos, double InitSpeed)
Definition: PolynomeFoot.cpp:382
PatternGeneratorJRL::Polynome6
Polynome used for Z trajectory.
Definition: PolynomeFoot.hh:192
PatternGeneratorJRL::PolynomeFoot::PolynomeFoot
PolynomeFoot(int degree=0.0, double FT=0.0)
Definition: PolynomeFoot.hh:49
Polynome.hh
PatternGeneratorJRL::PolynomeFoot::ComputeJerk
double ComputeJerk(double t)
Definition: PolynomeFoot.cpp:60
PatternGeneratorJRL::Polynome3::GetParametersWithInitPosInitSpeed
void GetParametersWithInitPosInitSpeed(double &FT, double &FP, double &InitPos, double &InitSpeed)
Definition: PolynomeFoot.cpp:121
PatternGeneratorJRL
\doc Simulate a rigid body
Definition: patterngeneratorinterface.hh:41
PatternGeneratorJRL::Polynome6::~Polynome6
~Polynome6()
Destructor.
Definition: PolynomeFoot.cpp:361
PatternGeneratorJRL::Polynome7
Polynome used for X,Y and Theta trajectories.
Definition: PolynomeFoot.hh:220
PatternGeneratorJRL::PolynomeFoot::ComputeDerivative
double ComputeDerivative(double t)
Definition: PolynomeFoot.cpp:42
PatternGeneratorJRL::Polynome5::GetParametersWithInitPosInitSpeed
void GetParametersWithInitPosInitSpeed(double &FT, double &FP, double &InitPos, double &InitSpeed)
Definition: PolynomeFoot.cpp:231
PatternGeneratorJRL::Polynome7::SetParameters
void SetParameters(double FT, double FP)
Set the parameters.
Definition: PolynomeFoot.cpp:374
PatternGeneratorJRL::Polynome7::Polynome7
Polynome7(double FT, double FP)
Definition: PolynomeFoot.cpp:363
PatternGeneratorJRL::Polynome6::Polynome6
Polynome6(double FT, double MP, double FP=0.0)
Definition: PolynomeFoot.cpp:302
PatternGeneratorJRL::Polynome3::SetParameters
void SetParameters(double FT, double FP)
Definition: PolynomeFoot.cpp:78
PatternGeneratorJRL::Polynome3
Polynome used for X,Y and Theta trajectories.
Definition: PolynomeFoot.hh:65