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
40#include <vector>
41
42namespace PatternGeneratorJRL {
43class 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
65class 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
105class 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
149class 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
192class 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
220class 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_ */
Polynome used for X,Y and Theta trajectories.
Definition PolynomeFoot.hh:65
void GetParametersWithInitPosInitSpeed(double &FT, double &FP, double &InitPos, double &InitSpeed)
Definition PolynomeFoot.cpp:121
void SetParametersWithInitPosInitSpeed(double FT, double FP, double InitPos, double InitSpeed)
Definition PolynomeFoot.cpp:102
~Polynome3()
Destructor.
Definition PolynomeFoot.cpp:130
void SetParameters(double FT, double FP)
Definition PolynomeFoot.cpp:78
Polynome used for Z trajectory.
Definition PolynomeFoot.hh:105
~Polynome4()
Destructor.
Definition PolynomeFoot.cpp:204
void SetParametersWithInitPosInitSpeed(double FT, double MP, double InitPos, double InitSpeed, double FP=0.0)
Definition PolynomeFoot.cpp:170
void SetParameters(double FT, double MP, double FP=0.0)
Set the parameters.
Definition PolynomeFoot.cpp:136
void GetParametersWithInitPosInitSpeed(double &FT, double &MP, double &FP, double &InitPos, double &InitSpeed)
Definition PolynomeFoot.cpp:195
Polynome used for X,Y and Theta trajectories.
Definition PolynomeFoot.hh:149
~Polynome5()
Destructor.
Definition PolynomeFoot.cpp:219
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:231
void SetParametersWithInitPosInitSpeed(double FT, double FP, double InitPos, double InitSpeed)
Definition PolynomeFoot.cpp:225
void SetParameters(double FT, double FP)
Set the parameters.
Definition PolynomeFoot.cpp:221
Polynome used for Z trajectory.
Definition PolynomeFoot.hh:192
void SetParameters(double FT, double MP, double FP=0.0)
Set the parameters.
Definition PolynomeFoot.cpp:306
void SetParametersWithMiddlePos(double FT, double MP, double InitPos, double InitSpeed, double InitAcc=0.0, double FP=0.0)
Definition PolynomeFoot.cpp:313
void GetParametersWithInitPosInitSpeed(double &TimeInterval, double &MiddlePosition, double &FinalPosition, double &InitPosition, double &InitSpeed)
Definition PolynomeFoot.cpp:349
~Polynome6()
Destructor.
Definition PolynomeFoot.cpp:361
Polynome used for X,Y and Theta trajectories.
Definition PolynomeFoot.hh:220
void SetParametersWithInitPosInitSpeed(double FT, double FP, double InitPos, double InitSpeed)
Definition PolynomeFoot.cpp:382
~Polynome7()
Destructor.
Definition PolynomeFoot.cpp:435
void SetParameters(double FT, double FP)
Set the parameters.
Definition PolynomeFoot.cpp:374
void GetParametersWithInitPosInitSpeed(double &FT, double &FP, double &InitPos, double &InitSpeed)
Definition PolynomeFoot.cpp:388
Definition PolynomeFoot.hh:43
double Compute(double t)
Definition PolynomeFoot.cpp:33
double ComputeSecDerivative(double t)
Definition PolynomeFoot.cpp:51
PolynomeFoot(int degree=0.0, double FT=0.0)
Definition PolynomeFoot.hh:49
double FT_
Definition PolynomeFoot.hh:46
double ComputeJerk(double t)
Definition PolynomeFoot.cpp:60
double ComputeDerivative(double t)
Definition PolynomeFoot.cpp:42
Definition Polynome.hh:42
\doc Simulate a rigid body
Definition patterngeneratorinterface.hh:41