1 #ifndef PLANNER_OBJECTIVES_H 2 #define PLANNER_OBJECTIVES_H 4 #include <Klampt/Modeling/Robot.h> 6 #include <Klampt/Modeling/DynamicPath.h> 7 #include <KrisLibrary/robotics/IK.h> 31 virtual Real
TerminalCost(Real tend,
const Vector& qend,
const Vector& dqend) {
return 0.0; }
39 virtual bool TerminalTimeInvariant()
const {
return false; }
58 virtual bool Read(File& file) {
return false; }
59 virtual bool Write(File& file) {
return false; }
76 virtual bool TerminalTimeInvariant()
const {
return true; }
89 virtual Real
TerminalCost(Real tend,
const Vector& qend,
const Vector& dqend);
106 virtual Real
TerminalCost(Real tend,
const Vector& qend,
const Vector& dqend) {
107 return qend.distance(qgoal);
110 return qgoal.distance(Vector(path.
ramps.back().x1));
113 virtual bool TerminalTimeInvariant()
const {
return true; }
129 virtual Real
TerminalCost(Real tend,
const Vector& qend,
const Vector& dqend) {
130 return dqend.distance(vgoal);
133 return vgoal.distance(Vector(path.
ramps.back().dx1));
136 virtual bool TerminalTimeInvariant()
const {
return true; }
154 void Add(
const shared_ptr<PlannerObjectiveBase>& obj,Real weight=1.0);
159 virtual Real
TerminalCost(Real tend,
const Vector& qend,
const Vector& dqend);
164 virtual bool TerminalTimeInvariant()
const;
169 vector<shared_ptr<PlannerObjectiveBase> > components;
170 vector<Real> weights;
185 virtual Real
TerminalCost(Real tend,
const Vector& qend,
const Vector& dqend);
190 virtual bool TerminalTimeInvariant()
const {
return true; }
209 virtual Real
TerminalCost(Real tend,
const Vector& qend,
const Vector& dqend);
217 virtual bool TerminalTimeInvariant()
const {
return true; }
223 Real posCoeff,oriCoeff;
234 virtual const char*
TypeString() {
return "cartesian_tracking"; }
236 virtual Real
TerminalCost(Real tend,
const Vector& qend,
const Vector& dqend);
244 int FindSegment(Real t)
const;
248 Vector3 GetDesiredPosition(Real t)
const;
250 void GetDifferentialCostFunction(Real t,Matrix3& A,Vector3& b)
const;
256 Vector3 localPosition;
258 vector<Vector3> positions;
261 vector<Real> weights;
263 vector<Matrix3> matWeights;
265 Real endTimeWeight,endPosWeight;
266 Matrix3 endPosMatWeight;
virtual Real PathCost(const ParabolicRamp::DynamicPath &path, Real tstart=0)
virtual Real Delta(PlannerObjectiveBase *priorGoal)
Definition: PlannerObjective.h:55
virtual Real PathCost(const ParabolicRamp::DynamicPath &path, Real tstart=0)
Definition: PlannerObjective.h:186
A goal that measures point-to-point distance.
Definition: PlannerObjective.h:177
virtual const char * TypeString()
Subclasses: return an identifier for this goal type.
Definition: PlannerObjective.h:156
Solves for optimal trajectores for a velocity-bounded ND system.
Definition: ParabolicRamp.h:110
A goal that measures absolute difference in terminal time (i.e., penalize stopping at a different tim...
Definition: PlannerObjective.h:83
virtual bool DifferentialTimeInvariant() const
Subclasses: planners may exploit time invariant costs for faster performance.
Definition: PlannerObjective.h:38
virtual const char * TypeString()
Subclasses: return an identifier for this goal type.
Definition: PlannerObjective.h:70
virtual bool PathInvariant() const
Subclasses: planners may exploit path-invariant costs for faster performance.
Definition: PlannerObjective.h:138
virtual bool DifferentialTimeInvariant() const
Subclasses: planners may exploit time invariant costs for faster performance.
Definition: PlannerObjective.h:92
An objective that measures path execution time.
Definition: PlannerObjective.h:65
virtual bool DifferentialTimeInvariant() const
Subclasses: planners may exploit time invariant costs for faster performance.
Definition: PlannerObjective.h:218
virtual Real DifferentialCost(Real t, const Vector &q, const Vector &dq)
Definition: PlannerObjective.h:72
std::vector< ParabolicRampND > ramps
The path is stored as a series of ramps.
Definition: DynamicPath.h:160
A goal for an IK solution (including possibly rotation)
Definition: PlannerObjective.h:201
virtual bool PathInvariant() const
Subclasses: planners may exploit path-invariant costs for faster performance.
Definition: PlannerObjective.h:219
virtual bool DifferentialTimeInvariant() const
Subclasses: planners may exploit time invariant costs for faster performance.
Definition: PlannerObjective.h:191
Tracking a path in cartesian space.
Definition: PlannerObjective.h:229
virtual Real PathCost(const ParabolicRamp::DynamicPath &path, Real tstart=0)
Definition: PlannerObjective.h:211
virtual Real PathCost(const ParabolicRamp::DynamicPath &path, Real tstart=0)
Definition: PlannerObjective.h:132
A bounded-velocity, bounded-acceleration trajectory consisting of parabolic ramps.
Definition: DynamicPath.h:114
An objective that merges contributions from multiple other objective functions.
Definition: PlannerObjective.h:147
virtual bool Read(File &file)
Subclasses: read and write to binary file (optional, not implemented yet)
Definition: PlannerObjective.h:58
virtual bool DifferentialTimeInvariant() const
Subclasses: planners may exploit time invariant costs for faster performance.
Definition: PlannerObjective.h:114
virtual bool DifferentialTimeInvariant() const
Subclasses: planners may exploit time invariant costs for faster performance.
Definition: PlannerObjective.h:75
virtual Real DifferentialCost(Real t, const Vector &q, const Vector &dq)
Definition: PlannerObjective.h:35
virtual Real TerminalCost(Real tend, const Vector &qend, const Vector &dqend)
Definition: PlannerObjective.h:106
virtual const char * TypeString()
Subclasses: return an identifier for this goal type.
Definition: PlannerObjective.h:105
virtual bool PathInvariant() const
Subclasses: planners may exploit path-invariant costs for faster performance.
Definition: PlannerObjective.h:41
virtual const char * TypeString()
Subclasses: return an identifier for this goal type.
Definition: PlannerObjective.h:88
virtual bool DifferentialTimeInvariant() const
Subclasses: planners may exploit time invariant costs for faster performance.
Definition: PlannerObjective.h:137
A base class for objective functionals in time/config/velocity space.
Definition: PlannerObjective.h:17
virtual const char * TypeString()
Subclasses: return an identifier for this goal type.
Definition: PlannerObjective.h:24
The main robot type used in RobotSim.
Definition: Robot.h:83
virtual Real PathCost(const ParabolicRamp::DynamicPath &path, Real tstart=0)
Definition: PlannerObjective.h:109
A goal that measures distance to a goal velocity vgoal.
Definition: PlannerObjective.h:123
virtual Real TerminalCost(Real tend, const Vector &qend, const Vector &dqend)
Definition: PlannerObjective.h:31
virtual const char * TypeString()
Subclasses: return an identifier for this goal type.
Definition: PlannerObjective.h:128
virtual bool PathInvariant() const
Subclasses: planners may exploit path-invariant costs for faster performance.
Definition: PlannerObjective.h:192
virtual bool PathInvariant() const
Subclasses: planners may exploit path-invariant costs for faster performance.
Definition: PlannerObjective.h:115
virtual const char * TypeString()
Subclasses: return an identifier for this goal type.
Definition: PlannerObjective.h:207
Functions for optimal acceleration-bounded trajectories.
virtual Real TerminalCost(Real tend, const Vector &qend, const Vector &dqend)
Definition: PlannerObjective.h:129
virtual const char * TypeString()
Subclasses: return an identifier for this goal type.
Definition: PlannerObjective.h:234
Definition: ContactDistance.h:6
virtual const char * TypeString()
Subclasses: return an identifier for this goal type.
Definition: PlannerObjective.h:183
A goal that measures distance to a goal configuration qgoal.
Definition: PlannerObjective.h:100
virtual Real IncrementalCost(Real t, const ParabolicRamp::ParabolicRampND &ramp)
Definition: PlannerObjective.h:46
virtual string Description()
Subclasses: return a string for printing (optional)
Definition: PlannerObjective.h:27