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 
68 {
69  public:
70  IntegratorObjectiveFunctional(Real dt = 0.1,int timeIndex=-1);
72  virtual Real DifferentialCost(const State& x,const ControlInput& u) = 0;
73 
75  virtual Real Domain(const ControlInput& u,const Interpolator* path);
76 
78  virtual Real IncrementalCost(const ControlInput& u,const Interpolator* path);
79 
80  Real dt;
81  int timeIndex;
82 };
83 
88 {
89  public:
90  LengthObjective() {}
91  virtual ~LengthObjective() {}
92  virtual const char* TypeString() { return "length"; }
93  virtual Real IncrementalCost(const Interpolator* path) { return path->Length(); }
94 };
95 
96 
103 {
104  public:
105  TimeObjective(int timeIndex=0);
106  virtual ~TimeObjective() {}
107  virtual const char* TypeString() { return "time"; }
108  virtual Real IncrementalCost(const Interpolator* path);
109 
110  int timeIndex;
111 };
112 
117 {
118  public:
119  ConfigObjective(const Config& qgoal);
120  ConfigObjective(const Config& qgoal,const Vector& weights);
121  virtual ~ConfigObjective() {}
122  virtual const char* TypeString() { return "config"; }
123  virtual Real TerminalCost(const Vector& qend);
124  virtual bool PathInvariant() const { return true; }
125 
126  Vector qgoal,weights;
127 };
128 
141 {
142  public:
143  QuadraticObjective(int timeIndex=0);
144  virtual ~QuadraticObjective() {}
145  virtual const char* TypeString() { return "quadratic"; }
146  virtual Real TerminalCost(const Vector& qend);
147  virtual Real DifferentialCost(const State& x,const ControlInput& u);
148 
149  InterpolatorPtr desiredPath;
150  Math::Matrix stateCostMatrix,controlCostMatrix;
151  Math::Matrix terminalCostMatrix;
152 };
153 
159 {
160  public:
163 
165  void Add(const std::shared_ptr<ObjectiveFunctionalBase>& obj,Real weight=1.0);
166 
167  virtual const char* TypeString() { return "composite"; }
168  virtual std::string Description();
169 
170  virtual Real TerminalCost(const Vector& qend);
171  virtual Real IncrementalCost(const Interpolator* path);
172  virtual bool PathInvariant() const;
173 
174  Real norm;
175  std::vector<std::shared_ptr<ObjectiveFunctionalBase> > components;
176  std::vector<Real> weights;
177 };
178 
179 
180 #endif
181 
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:158
virtual const char * TypeString()
Subclasses: return an identifier for this goal type.
Definition: Objective.h:167
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
virtual Real IncrementalCost(const Interpolator *path)
Definition: Objective.h:33
A sequence of locally planned paths between milestones.
Definition: planning/Path.h:15
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:87
A cost functional of the form J[x,u] = int_0^T L(x(t),u(t)) dt + Phi(x(T))
Definition: Objective.h:67
A goal that measures quadratic tracking error and control cost. Note that the time must exist in the ...
Definition: Objective.h:140
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:92
A goal that measures distance to a goal configuration qgoal.
Definition: Objective.h:116
virtual const char * TypeString()
Subclasses: return an identifier for this goal type.
Definition: Objective.h:107
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:145
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:122
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:102
virtual bool PathInvariant() const
Subclasses: planners may exploit path-invariant costs for faster performance.
Definition: Objective.h:124
virtual Real IncrementalCost(const Interpolator *path)
Definition: Objective.h:93
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