Klamp't  0.9.0
ConstrainedInterpolator.h
1 #ifndef CONSTRAINED_INTERPOLATOR_H
2 #define CONSTRAINED_INTERPOLATOR_H
3 
4 #include <KrisLibrary/math/function.h>
5 #include <KrisLibrary/planning/GeneralizedBezierCurve.h>
6 #include <KrisLibrary/optimization/Newton.h>
7 
8 namespace Klampt {
9  using namespace std;
10 
30 {
31  public:
32  ConstrainedInterpolator(CSpace* space,VectorFieldFunction* constraint);
33  virtual ~ConstrainedInterpolator() {}
34  bool Make(const Config& a,const Config& b,vector<Config>& path,bool checkConstraints=false);
35  virtual void ConstraintValue(const Config& x,Vector& v);
36  virtual bool Project(Config& x);
37 
38  CSpace* space;
39  VectorFieldFunction* constraint;
40  Config xmin,xmax;
41  VectorFieldFunction* inequalities;
42  int maxNewtonIters;
43  Real ftol,xtol;
44  Real maxGrowth;
45 
46  //temp: solver
47  Optimization::NewtonRoot solver;
48 };
49 
74 {
75  public:
76  SmoothConstrainedInterpolator(CSpace* space,VectorFieldFunction* constraint);
77  virtual ~SmoothConstrainedInterpolator() {}
78  bool Make(const Config& a,const Config& b,
79  GeneralizedCubicBezierSpline& path,
80  bool checkConstraints=false);
81  bool Make(const Config& a,const Vector& da,const Config& b,const Vector& db,
82  GeneralizedCubicBezierSpline& path,
83  bool checkConstraints=false);
84  virtual void ConstraintValue(const Config& x,Vector& v);
85  virtual bool Project(Config& x);
86  virtual bool ProjectVelocity(const Config& x,Config& v);
87 
88  CSpace* space;
89  GeodesicSpace* manifold;
90  VectorFieldFunction* constraint;
91  Config xmin,xmax;
92  VectorFieldFunction* inequalities;
93  int maxNewtonIters;
94  Real ftol,xtol;
95  Real maxGrowth;
96 
97  //temp: solver
98  Optimization::NewtonRoot solver;
99 };
100 
106  const vector<Vector>& pts,
107  GeneralizedCubicBezierSpline& path);
108 
109 
116  const vector<Vector>& pts,
117  const Vector& dq0,const Vector& dq1,
118  GeneralizedCubicBezierSpline& path);
119 
120 
125  const Vector& pt,Real suffixDuration,
126  GeneralizedCubicBezierSpline& path);
127 
128 
129 } //namespace Klampt
130 
131 #endif
Construct a polyline between a and b such that each point is near the constraint C(x)=0.
Definition: ConstrainedInterpolator.h:29
Constructs a piecewise polynomial path between a and b such that each point is near the constraint C(...
Definition: ConstrainedInterpolator.h:73
Config xmax
if set, uses bounds in the newton solver
Definition: ConstrainedInterpolator.h:91
bool AppendInterpolate(SmoothConstrainedInterpolator &interp, const Vector &pt, Real suffixDuration, GeneralizedCubicBezierSpline &path)
VectorFieldFunction * inequalities
if set, uses a nonlinear constraint in the newton solver
Definition: ConstrainedInterpolator.h:92
VectorFieldFunction * inequalities
if set, uses a nonlinear constraint in the newton solver
Definition: ConstrainedInterpolator.h:41
bool MultiSmoothInterpolate(SmoothConstrainedInterpolator &interp, const vector< Vector > &pts, const Vector &dq0, const Vector &dq1, GeneralizedCubicBezierSpline &path)
Definition: ContactDistance.h:6
Config xmax
if set, uses bounds in the newton solver
Definition: ConstrainedInterpolator.h:40