1 #ifndef KLAMPT_MODELING_PATH_H 2 #define KLAMPT_MODELING_PATH_H 8 namespace Spline {
class PiecewisePolynomialND; }
24 LinearPath(
const vector<Real>& times,
const vector<Vector>& milestones);
25 bool Save(ostream& out);
26 bool Load(istream& in);
27 Real StartTime()
const {
return times.front(); }
28 Real EndTime()
const {
return times.back(); }
29 Real Duration()
const {
return EndTime()-StartTime(); }
31 void Append(Real t,
const Config& x) { times.push_back(t); milestones.push_back(x); }
33 void Clear() { times.resize(0); milestones.resize(0); }
36 void Concat(
const LinearPath& path,
bool relative=
true);
38 void Eval(Real t,Vector& xt)
const;
40 void Deriv(Real t,Vector& dxt)
const;
42 void Eval(
RobotModel& robot,Real t,Vector& xt)
const;
44 void Deriv(
RobotModel& robot,Real t,Vector& dxt)
const;
47 vector<Vector> milestones;
83 void Keyframes(
const LinearPath& in,vector<Real>& times,vector<Config>& milestones);
85 void Keyframes(
const LinearPath& in,vector<Real>& times,vector<Config>& milestones,vector<Config>& dmilestones);
86 void Keyframes(
RobotModel& robot,
const LinearPath& in,vector<Real>& times,vector<Config>& milestones,vector<Config>& dmilestones);
87 void Keyframes(
const MultiPath& in,vector<Config>& milestones);
88 void Keyframes(
const MultiPath& in,vector<Real>& times,vector<Config>& milestones);
89 void Keyframes(
const MultiPath& in,vector<Real>& times,vector<Config>& milestones,vector<Config>& dmilestones);
90 void Keyframes(
RobotModel& robot,
const MultiPath& in,vector<Real>& times,vector<Config>& milestones,vector<Config>& dmilestones);
93 void Keyframes(
const ParabolicRamp::DynamicPath& in,vector<Real>& times,vector<Config>& milestones,vector<Config>& dmilestones);
94 void Keyframes(
const Spline::PiecewisePolynomialND& in,vector<Config>& milestones);
95 void Keyframes(
const Spline::PiecewisePolynomialND& in,vector<Real>& times,vector<Config>& milestones);
96 void Keyframes(
const Spline::PiecewisePolynomialND& in,vector<Real>& times,vector<Config>& milestones,vector<Config>& dmilestones);
104 void Interpolate(
const vector<Real>& times,
const vector<Config>& milestones,Spline::PiecewisePolynomialND& out);
109 void Interpolate(
const vector<Real>& times,
const vector<Config>& milestones,
const vector<Vector>& dmilestones,
MultiPath& out);
111 void Interpolate(
const vector<Real>& times,
const vector<Config>& milestones,
const vector<Vector>& dmilestones,Spline::PiecewisePolynomialND& out);
132 vector<Vector> milestones,dmilestones;
133 Keyframes(in,times,milestones,dmilestones);
140 vector<Vector> milestones,dmilestones;
141 Keyframes(in,times,milestones,dmilestones);
148 vector<Vector> milestones,dmilestones;
149 Keyframes(robot,in,times,milestones,dmilestones);
156 vector<Vector> milestones,dmilestones;
157 Keyframes(robot,in,times,milestones,dmilestones);
163 void Discretize(
const MultiPath& in,Real res,vector<Real>& times,vector<Config>& milestones);
165 void Discretize(
const Spline::PiecewisePolynomialND& in,Real res,vector<Real>& times,vector<Config>& milestones);
167 void Discretize(
const LinearPath& in,Real res,vector<Real>& times,vector<Config>& milestones,vector<Vector>& dmilestones);
168 void Discretize(
const MultiPath& in,Real res,vector<Real>& times,vector<Config>& milestones,vector<Vector>& dmilestones);
169 void Discretize(
const ParabolicRamp::DynamicPath& in,Real res,vector<Real>& times,vector<Config>& milestones,vector<Vector>& dmilestones);
170 void Discretize(
const Spline::PiecewisePolynomialND& in,Real res,vector<Real>& times,vector<Config>& milestones,vector<Vector>& dmilestones);
173 void Discretize(
RobotModel& robot,
const LinearPath& in,Real res,vector<Real>& times,vector<Config>& milestones);
174 void Discretize(
RobotModel& robot,
const LinearPath& in,Real res,vector<Real>& times,vector<Config>& milestones,vector<Vector>& dmilestones);
179 template <
class T1,
class T2>
183 vector<Vector> milestones,dmilestones;
184 Discretize(in,res,times,milestones,dmilestones);
193 vector<Vector> milestones;
194 Discretize(in,res,times,milestones);
void Smooth(const LinearPath &in, T &out)
Definition: Paths.h:129
void Clear()
clears the path
Definition: Paths.h:33
A very general multi-section path container.
Definition: MultiPath.h:31
void Convert(const Spline::PiecewisePolynomialND &in, MultiPath &out)
A bounded-velocity, bounded-acceleration trajectory consisting of parabolic ramps.
Definition: DynamicPath.h:114
void Discretize(const LinearPath &in, Real res, vector< Real > ×, vector< Config > &milestones)
Split up the path into keyframes at a given resolution.
void Interpolate(const ParabolicRamp::DynamicPath &in, MultiPath &out)
Create a representation that matches the keyframes of the input path.
The main robot type used in RobotSim.
Definition: Robot.h:83
void Keyframes(const LinearPath &in, vector< Config > &milestones)
Extract keyframes from the path representation.
void Approximate(const T1 &in, Real res, LinearPath &out)
Definition: Paths.h:190
void Append(Real t, const Config &x)
Appends a new milestone at the given time.
Definition: Paths.h:31
A piecewise linear path.
Definition: Paths.h:20
Definition: ContactDistance.h:6