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 <vector>
40 
41 #include <Mathematics/Polynome.hh>
42 
43 namespace PatternGeneratorJRL {
44 class PolynomeFoot : public Polynome {
45 protected:
47  double FT_;
48 
49 public:
50  PolynomeFoot(int degree = 0.0, double FT = 0.0) : Polynome(degree), FT_(FT){};
51 
53  double Compute(double t);
54 
56  double ComputeDerivative(double t);
57 
59  double ComputeSecDerivative(double t);
60 
62  double ComputeJerk(double t);
63 };
64 
66 class Polynome3 : public PolynomeFoot {
67 public:
71  Polynome3(double FT, double FP);
74  Polynome3(double FT, double IP, double IS, double FP, double FS);
75 
81  void SetParameters(double FT, double FP);
82 
85  void SetParameters(double FT, double IP, double IS, double FP, double FS);
86 
92  void SetParametersWithInitPosInitSpeed(double FT, double FP, double InitPos,
93  double InitSpeed);
94 
95  void GetParametersWithInitPosInitSpeed(double &FT, double &FP,
96  double &InitPos, double &InitSpeed);
98  ~Polynome3();
99 
100 private:
102  double FP_;
103 };
104 
106 class Polynome4 : public PolynomeFoot {
107 public:
111  Polynome4(double FT, double MP, double FP = 0.0);
112 
114  // Initial velocity and position are 0
115  // Final velocity and position are 0
116  void SetParameters(double FT, double MP, double FP = 0.0);
117 
119  // time horizon
120  // Initial Position
121  // Initial velocity (IS)
122  // Initial Acceleration
123  // Final velocity
124  // Final Acceleration
125  void SetParameters(double FT, double InitPos, double InitSpeed,
126  double InitAcc, double FinalSpeed, double FinalAcc);
127 
133  void SetParametersWithInitPosInitSpeed(double FT, double MP, double InitPos,
134  double InitSpeed, double FP = 0.0);
135 
137  void GetParametersWithInitPosInitSpeed(double &FT, double &MP, double &FP,
138  double &InitPos, double &InitSpeed);
139 
141  ~Polynome4();
142 
143 private:
145  double MP_;
146  double FP_;
147 };
148 
150 class Polynome5 : public PolynomeFoot {
151 private:
152  double InitPos_, InitSpeed_, InitAcc_, FinalPos_, FinalSpeed_, FinalAcc_;
153 
154 public:
158  Polynome5(double FT, double FP);
159 
161  void SetParameters(double FT, double FP);
162 
167  void SetParametersWithInitPosInitSpeed(double FT, double FP, double InitPos,
168  double InitSpeed);
173  void GetParametersWithInitPosInitSpeed(double &FT, double &FP,
174  double &InitPos, double &InitSpeed);
175 
178  void SetParameters(double FT, double FP, double InitPos, double InitSpeed,
179  double InitAcc, double InitJerk = 0.0);
180 
184  void SetParameters(double FT, double InitPos, double InitSpeed,
185  double InitAcc, double FinalPos, double FinalSpeed,
186  double FinalAcc);
187 
189  ~Polynome5();
190 };
191 
193 class Polynome6 : public PolynomeFoot {
194 private:
195  double MP_, FP_, InitPos_, InitSpeed_, InitAcc_;
196 
197 public:
201  Polynome6(double FT, double MP, double FP = 0.0);
202 
204  // Initial acceleration, velocity and position by default 0
205  // Final acceleration, velocity and position are 0
206  void SetParameters(double FT, double MP, double FP = 0.0);
207  void SetParametersWithMiddlePos(double FT, double MP, double InitPos,
208  double InitSpeed, double InitAcc = 0.0,
209  double FP = 0.0);
210 
211  void GetParametersWithInitPosInitSpeed(double &TimeInterval,
212  double &MiddlePosition,
213  double &FinalPosition,
214  double &InitPosition,
215  double &InitSpeed);
217  ~Polynome6();
218 };
219 
221 class Polynome7 : public PolynomeFoot {
222 private:
223  double FP_, InitPos_, InitSpeed_, InitAcc_, InitJerk_;
224 
225 public:
229  Polynome7(double FT, double FP);
230 
232  void SetParameters(double FT, double FP);
233 
238  void SetParametersWithInitPosInitSpeed(double FT, double FP, double InitPos,
239  double InitSpeed);
240 
243  void SetParameters(double FT, double FP, double InitPos, double InitSpeed,
244  double InitAcc, double InitJerk = 0.0);
245 
250  void GetParametersWithInitPosInitSpeed(double &FT, double &FP,
251  double &InitPos, double &InitSpeed);
252 
254  ~Polynome7();
255 };
256 
257 } // namespace PatternGeneratorJRL
258 #endif /* _POLYNOME_FOOT_H_ */
Polynome used for X,Y and Theta trajectories.
Definition: PolynomeFoot.hh:66
void GetParametersWithInitPosInitSpeed(double &FT, double &FP, double &InitPos, double &InitSpeed)
Definition: PolynomeFoot.cpp:122
void SetParametersWithInitPosInitSpeed(double FT, double FP, double InitPos, double InitSpeed)
Definition: PolynomeFoot.cpp:103
~Polynome3()
Destructor.
Definition: PolynomeFoot.cpp:131
void SetParameters(double FT, double FP)
Definition: PolynomeFoot.cpp:79
Polynome3(double FT, double FP)
Definition: PolynomeFoot.cpp:70
Polynome used for Z trajectory.
Definition: PolynomeFoot.hh:106
~Polynome4()
Destructor.
Definition: PolynomeFoot.cpp:205
void SetParametersWithInitPosInitSpeed(double FT, double MP, double InitPos, double InitSpeed, double FP=0.0)
Definition: PolynomeFoot.cpp:171
void GetParametersWithInitPosInitSpeed(double &FT, double &MP, double &FP, double &InitPos, double &InitSpeed)
Definition: PolynomeFoot.cpp:196
void SetParameters(double FT, double MP, double FP=0.0)
Set the parameters.
Polynome4(double FT, double MP, double FP=0.0)
Definition: PolynomeFoot.cpp:133
Polynome used for X,Y and Theta trajectories.
Definition: PolynomeFoot.hh:150
~Polynome5()
Destructor.
Definition: PolynomeFoot.cpp:215
void SetParameters(double FT, double FP, double InitPos, double InitSpeed, double InitAcc, double InitJerk=0.0)
Set parameters considering initial position, velocity, acceleration.
Polynome5(double FT, double FP)
Definition: PolynomeFoot.cpp:207
void GetParametersWithInitPosInitSpeed(double &FT, double &FP, double &InitPos, double &InitSpeed)
Definition: PolynomeFoot.cpp:227
void SetParametersWithInitPosInitSpeed(double FT, double FP, double InitPos, double InitSpeed)
Definition: PolynomeFoot.cpp:221
void SetParameters(double FT, double FP)
Set the parameters.
Definition: PolynomeFoot.cpp:217
Polynome used for Z trajectory.
Definition: PolynomeFoot.hh:193
void SetParameters(double FT, double MP, double FP=0.0)
Set the parameters.
Definition: PolynomeFoot.cpp:302
Polynome6(double FT, double MP, double FP=0.0)
Definition: PolynomeFoot.cpp:298
void SetParametersWithMiddlePos(double FT, double MP, double InitPos, double InitSpeed, double InitAcc=0.0, double FP=0.0)
Definition: PolynomeFoot.cpp:309
void GetParametersWithInitPosInitSpeed(double &TimeInterval, double &MiddlePosition, double &FinalPosition, double &InitPosition, double &InitSpeed)
Definition: PolynomeFoot.cpp:345
~Polynome6()
Destructor.
Definition: PolynomeFoot.cpp:357
Polynome used for X,Y and Theta trajectories.
Definition: PolynomeFoot.hh:221
void SetParametersWithInitPosInitSpeed(double FT, double FP, double InitPos, double InitSpeed)
Definition: PolynomeFoot.cpp:375
void SetParameters(double FT, double FP, double InitPos, double InitSpeed, double InitAcc, double InitJerk=0.0)
Set parameters considering initial position, velocity, acceleration, jerk.
~Polynome7()
Destructor.
Definition: PolynomeFoot.cpp:428
Polynome7(double FT, double FP)
Definition: PolynomeFoot.cpp:359
void SetParameters(double FT, double FP)
Set the parameters.
Definition: PolynomeFoot.cpp:367
void GetParametersWithInitPosInitSpeed(double &FT, double &FP, double &InitPos, double &InitSpeed)
Definition: PolynomeFoot.cpp:381
Definition: PolynomeFoot.hh:44
double Compute(double t)
Definition: PolynomeFoot.cpp:34
double ComputeSecDerivative(double t)
Definition: PolynomeFoot.cpp:52
PolynomeFoot(int degree=0.0, double FT=0.0)
Definition: PolynomeFoot.hh:50
double FT_
Definition: PolynomeFoot.hh:47
double ComputeJerk(double t)
Definition: PolynomeFoot.cpp:61
double ComputeDerivative(double t)
Definition: PolynomeFoot.cpp:43
Definition: Polynome.hh:42
\doc Simulate a rigid body
Definition: patterngeneratorinterface.hh:41