KrisLibrary  1.0.0
Objective.h
1 #ifndef PLANNING_OBJECTIVES_H
2 #define PLANNING_OBJECTIVES_H
3 
4 #include <KrisLibrary/Logger.h>
5 #include <KrisLibrary/planning/CSpace.h>
6 #include <KrisLibrary/planning/ControlSpace.h>
7 #include <KrisLibrary/math/matrix.h>
8 class MilestonePath;
9 class AnyCollection;
10 
19 {
20  public:
22  virtual ~ObjectiveFunctionalBase() {}
23 
25  virtual const char* TypeString() { return NULL; }
26 
28  virtual std::string Description() { if(TypeString()) return TypeString(); return ""; }
29 
33  virtual Real IncrementalCost(const Interpolator* path) { return 0.0; }
34  virtual Real IncrementalCost(const ControlInput& u,const Interpolator* path) { return IncrementalCost(path); }
35  virtual Real IncrementalCost(const KinodynamicMilestonePath& path);
36 
38  virtual Real TerminalCost(const Config& qend) { return 0.0; }
39 
41  virtual bool PathInvariant() const { return false; }
42 
45  virtual Real PathCost(const MilestonePath& path);
46  virtual Real PathCost(const KinodynamicMilestonePath& path);
47 
49  virtual bool SaveParams(AnyCollection& collection) { return false; }
50  virtual bool LoadParams(AnyCollection& collection) { return false; }
51 };
52 
58 {
59  public:
62 
64  void Add(const std::shared_ptr<ObjectiveFunctionalBase>& obj,Real weight=1.0);
65 
66  virtual const char* TypeString() { return "composite"; }
67  virtual std::string Description();
68 
69  virtual Real TerminalCost(const Vector& qend);
70  virtual Real IncrementalCost(const Interpolator* path);
71  virtual bool PathInvariant() const;
72 
73  Real norm;
74  std::vector<std::shared_ptr<ObjectiveFunctionalBase> > components;
75  std::vector<Real> weights;
76 };
77 
93 {
94  public:
95  IntegratorObjectiveFunctional(Real dt = 0.1,int timeIndex=-1);
97  virtual Real DifferentialCost(const State& x,const ControlInput& u) = 0;
98 
100  virtual Real Domain(const ControlInput& u,const Interpolator* path);
101 
103  virtual Real IncrementalCost(const ControlInput& u,const Interpolator* path);
104 
105  Real dt;
106  int timeIndex;
107 };
108 
113 {
114  public:
115  LengthObjective() {}
116  virtual ~LengthObjective() {}
117  virtual const char* TypeString() { return "length"; }
118  virtual Real IncrementalCost(const Interpolator* path) { return path->Length(); }
119 };
120 
121 
128 {
129  public:
130  TimeObjective(int timeIndex=0);
131  virtual ~TimeObjective() {}
132  virtual const char* TypeString() { return "time"; }
133  virtual Real IncrementalCost(const Interpolator* path);
134 
135  int timeIndex;
136 };
137 
142 {
143  public:
144  ConfigObjective(const Config& qgoal,CSpace* cspace=NULL);
145  ConfigObjective(const Config& qgoal,const Vector& weights);
146  virtual ~ConfigObjective() {}
147  virtual const char* TypeString() { return "config"; }
148  virtual Real TerminalCost(const Vector& qend);
149  virtual bool PathInvariant() const { return true; }
150 
151  Vector qgoal,weights;
152  CSpace* cspace;
153 };
154 
167 {
168  public:
169  QuadraticObjective(int timeIndex=0);
170  virtual ~QuadraticObjective() {}
171  virtual const char* TypeString() { return "quadratic"; }
172  virtual Real TerminalCost(const Vector& qend);
173  virtual Real DifferentialCost(const State& x,const ControlInput& u);
174 
175  InterpolatorPtr desiredPath;
176  Math::Matrix stateCostMatrix,controlCostMatrix;
177  Math::Matrix terminalCostMatrix;
178 };
179 
180 
181 #endif
182 
A flexible hierarchical collection of AnyValues, which can be easily initialized to contain primitive...
Definition: AnyCollection.h:73
An objective that merges contributions from multiple other objective functions.
Definition: Objective.h:57
virtual const char * TypeString()
Subclasses: return an identifier for this goal type.
Definition: Objective.h:66
virtual bool SaveParams(AnyCollection &collection)
Subclasses: read and write parameters to collection.
Definition: Objective.h:49
virtual Real PathCost(const MilestonePath &path)
Definition: Objective.cpp:120
Vector Config
an alias for Vector
Definition: RobotKinematics3D.h:14
Motion planning configuration space base class. The configuration space implements an interpolation s...
Definition: CSpace.h:39
virtual Real IncrementalCost(const Interpolator *path)
Definition: Objective.h:33
A sequence of locally planned paths between milestones.
Definition: planning/Path.h:18
Stores a kinodynamic path with piecewise constant controls.
Definition: KinodynamicPath.h:23
virtual Real TerminalCost(const Config &qend)
Subclasses: return the cost of a terminal state.
Definition: Objective.h:38
An objective that measures path length.
Definition: Objective.h:112
A cost functional of the form J[x,u] = int_0^T L(x(t),u(t)) dt + Phi(x(T))
Definition: Objective.h:92
A cost that measures quadratic tracking error and control cost. Note that the time must exist in the ...
Definition: Objective.h:166
A base class for all 1D interpolators.
Definition: Interpolator.h:10
virtual const char * TypeString()
Subclasses: return an identifier for this goal type.
Definition: Objective.h:117
A cost that measures distance to a goal configuration qgoal.
Definition: Objective.h:141
virtual const char * TypeString()
Subclasses: return an identifier for this goal type.
Definition: Objective.h:132
virtual std::string Description()
Subclasses: return a string for printing (optional)
Definition: Objective.h:28
virtual const char * TypeString()
Subclasses: return an identifier for this goal type.
Definition: Objective.h:171
The logging system used in KrisLibrary.
virtual const char * TypeString()
Subclasses: return an identifier for this goal type.
Definition: Objective.h:25
virtual const char * TypeString()
Subclasses: return an identifier for this goal type.
Definition: Objective.h:147
virtual bool PathInvariant() const
Subclasses: planners may exploit path-invariant costs for faster performance.
Definition: Objective.h:41
An objective that measures path execution time. Accumulated time is assumed to be part of the state...
Definition: Objective.h:127
virtual bool PathInvariant() const
Subclasses: planners may exploit path-invariant costs for faster performance.
Definition: Objective.h:149
virtual Real IncrementalCost(const Interpolator *path)
Definition: Objective.h:118
A base class for objective functionals of the form J[x,u] = sum_0^N-1 L(xi,ui) dt + Phi(xN) ...
Definition: Objective.h:18