Klamp't  0.8.1
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 using namespace std;
8 
28 {
29  public:
30  ConstrainedInterpolator(CSpace* space,VectorFieldFunction* constraint);
31  virtual ~ConstrainedInterpolator() {}
32  bool Make(const Config& a,const Config& b,vector<Config>& path,bool checkConstraints=false);
33  virtual void ConstraintValue(const Config& x,Vector& v);
34  virtual bool Project(Config& x);
35 
36  CSpace* space;
37  VectorFieldFunction* constraint;
38  Config xmin,xmax;
39  VectorFieldFunction* inequalities;
40  int maxNewtonIters;
41  Real ftol,xtol;
42  Real maxGrowth;
43 
44  //temp: solver
45  Optimization::NewtonRoot solver;
46 };
47 
72 {
73  public:
74  SmoothConstrainedInterpolator(CSpace* space,VectorFieldFunction* constraint);
75  virtual ~SmoothConstrainedInterpolator() {}
76  bool Make(const Config& a,const Config& b,
77  GeneralizedCubicBezierSpline& path,
78  bool checkConstraints=false);
79  bool Make(const Config& a,const Vector& da,const Config& b,const Vector& db,
80  GeneralizedCubicBezierSpline& path,
81  bool checkConstraints=false);
82  virtual void ConstraintValue(const Config& x,Vector& v);
83  virtual bool Project(Config& x);
84  virtual bool ProjectVelocity(const Config& x,Config& v);
85 
86  CSpace* space;
87  GeodesicSpace* manifold;
88  VectorFieldFunction* constraint;
89  Config xmin,xmax;
90  VectorFieldFunction* inequalities;
91  int maxNewtonIters;
92  Real ftol,xtol;
93  Real maxGrowth;
94 
95  //temp: solver
96  Optimization::NewtonRoot solver;
97 };
98 
104  const vector<Vector>& pts,
105  GeneralizedCubicBezierSpline& path);
106 
107 
114  const vector<Vector>& pts,
115  const Vector& dq0,const Vector& dq1,
116  GeneralizedCubicBezierSpline& path);
117 
118 
123  const Vector& pt,Real suffixDuration,
124  GeneralizedCubicBezierSpline& path);
125 
126 
127 #endif
bool MultiSmoothInterpolate(SmoothConstrainedInterpolator &interp, const vector< Vector > &pts, GeneralizedCubicBezierSpline &path)
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:90
Config xmax
if set, uses bounds in the newton solver
Definition: ConstrainedInterpolator.h:89
VectorFieldFunction * inequalities
if set, uses a nonlinear constraint in the newton solver
Definition: ConstrainedInterpolator.h:39
Construct a polyline between a and b such that each point is near the constraint C(x)=0.
Definition: ConstrainedInterpolator.h:27
Config xmax
if set, uses bounds in the newton solver
Definition: ConstrainedInterpolator.h:38
Constructs a piecewise polynomial path between a and b such that each point is near the constraint C(...
Definition: ConstrainedInterpolator.h:71