1 #ifndef REAL_TIME_PLANNER_H 2 #define REAL_TIME_PLANNER_H 4 #include "RobotCSpace.h" 5 #include "PlannerSettings.h" 6 #include "PlannerObjective.h" 7 #include "RampCSpace.h" 8 #include <Klampt/Modeling/DynamicPath.h> 9 #include <KrisLibrary/utils/StatCollector.h> 10 #include <KrisLibrary/utils/threadutils.h> 11 #include <KrisLibrary/Timer.h> 15 class MotionQueueInterface;
29 enum { Failure=0, Success=1, Timeout=2 };
34 virtual void SetGoal(shared_ptr<PlannerObjectiveBase> newgoal);
35 virtual void SetTime(Real tstart);
36 virtual void SetDefaultLimits();
37 virtual void SetLimits(Real qScale=1.0,Real vScale=1.0,Real aScale=1.0);
39 bool LogBegin(
const char* fn=
"realtimeplanner.log");
61 result.
ramps.resize(1);
62 result.
ramps[0].SetConstant(qstart);
101 shared_ptr<PlannerObjectiveBase> goal;
103 ParabolicRamp::Vector qMin,qMax,velMax,accMax;
201 void SetConstantPath(
const Config& q);
207 virtual void Reset(shared_ptr<PlannerObjectiveBase> newgoal);
210 shared_ptr<PlannerObjectiveBase> Objective()
const;
218 virtual bool PlanUpdate(Real tglobal,Real& splitTime,Real& planTime);
222 if(!planner)
return true;
223 return planner->StopPlanning();
228 virtual void MarkSendFailure();
250 enum SplitUpdateProtocol { Constant, ExponentialBackoff, Learning };
251 SplitUpdateProtocol protocol;
252 Real currentSplitTime,currentPadding,currentExternalPadding;
294 void SetStartConfig(
const Config& qstart);
298 void SetPlanner(
const shared_ptr<DynamicMotionPlannerBase>& planner);
299 void SetPlanner(
const shared_ptr<RealTimePlanner>& planner);
301 void SetObjective(shared_ptr<PlannerObjectiveBase> newgoal);
316 void PausePlanning();
318 void BreakPlanning();
322 void ResumePlanning();
329 Real ObjectiveValue();
332 shared_ptr<RealTimePlanner> planner;
Definition: RobotInterface.h:29
shared_ptr< DynamicMotionPlannerBase > planner
Users must set these members before planning.
Definition: RealTimePlanner.h:233
bool acceptTimeOverruns
Definition: RealTimePlanner.h:248
A base class for a motion planner that generates dynamic paths. The output should always respect join...
Definition: RealTimePlanner.h:26
A cspace consisting of a single robot configuration in a WorldModel. Feasibility constraints are join...
Definition: RobotCSpace.h:103
A structure containing settings that should be used for collision detection, contact solving...
Definition: PlannerSettings.h:43
A real-time planner. Supports constant time-stepping or adaptive time-stepping.
Definition: RealTimePlanner.h:191
std::vector< ParabolicRampND > ramps
The path is stored as a series of ramps.
Definition: DynamicPath.h:160
Real EvaluatePathCost(const ParabolicRamp::DynamicPath &path, Real tStart=-1.0)
int PlanFrom(const Config &qstart, Real cutoff, ParabolicRamp::DynamicPath &result)
Plans from a start configuration.
Definition: RealTimePlanner.h:59
An interface to a planning thread.
Definition: RealTimePlanner.h:287
int SmartShortcut(Real tstart, ParabolicRamp::DynamicPath &path, Real timeLimit)
bool GetMilestoneRamp(const Config &q0, const Vector &dq0, const Config &q1, ParabolicRamp::DynamicPath &ramp) const
Helper.
A bounded-velocity, bounded-acceleration trajectory consisting of parabolic ramps.
Definition: DynamicPath.h:114
Real pathStartTime
Set the current path before planning, using SetConstantPath or SetCurrentPath.
Definition: RealTimePlanner.h:236
StatCollector planFailTimeStats
Statistics captured on planning times, depending on PlanMore output.
Definition: RealTimePlanner.h:256
bool StopPlanning()
Tells the planner to stop, when called from an external thread.
Definition: RealTimePlanner.h:221
int Shortcut(ParabolicRamp::DynamicPath &path, Real timeLimit)
Performs shortcutting up until the time limit.
Real EvaluateDirectPathCost(const ParabolicRamp::DynamicPath &curPath, const Config &q)
returns the cost of going straight to q (assuming no collision detection)
shared_ptr< SendPathCallbackBase > sendPathCallback
Users should set this up to capture the outputted path.
Definition: RealTimePlanner.h:240
A base class for the path sending callback. Send is called by the planner to update the path used by ...
Definition: RealTimePlanner.h:120
A base class for objective functionals in time/config/velocity space.
Definition: PlannerObjective.h:17
The main robot type used in RobotSim.
Definition: Robot.h:83
Real EvaluateTerminalCost(const Config &q, Real tEnd)
returns the terminal cost for a path ending at q at time tEnd
Real cognitiveMultiplier
Definition: RealTimePlanner.h:244
Definition: ContactDistance.h:6
virtual int PlanFrom(ParabolicRamp::DynamicPath &path, Real cutoff)
Definition: RealTimePlanner.h:53