Loading...
Searching...
No Matches
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
42
43namespace PatternGeneratorJRL {
44class PolynomeFoot : public Polynome {
45protected:
47 double FT_;
48
49public:
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
66class Polynome3 : public PolynomeFoot {
67public:
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
100private:
102 double FP_;
103};
104
106class Polynome4 : public PolynomeFoot {
107public:
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
143private:
145 double MP_;
146 double FP_;
147};
148
150class Polynome5 : public PolynomeFoot {
151private:
152 double InitPos_, InitSpeed_, InitAcc_, FinalPos_, FinalSpeed_, FinalAcc_;
153
154public:
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
193class Polynome6 : public PolynomeFoot {
194private:
195 double MP_, FP_, InitPos_, InitSpeed_, InitAcc_;
196
197public:
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
221class Polynome7 : public PolynomeFoot {
222private:
223 double FP_, InitPos_, InitSpeed_, InitAcc_, InitJerk_;
224
225public:
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
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 SetParameters(double FT, double MP, double FP=0.0)
Set the parameters.
Definition: PolynomeFoot.cpp:137
void GetParametersWithInitPosInitSpeed(double &FT, double &MP, double &FP, double &InitPos, double &InitSpeed)
Definition: PolynomeFoot.cpp:196
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.
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
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
~Polynome7()
Destructor.
Definition: PolynomeFoot.cpp:428
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