VR-Forces 4.8 Class Documentation
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
moveAlongRouteTimeEstimator.h
Go to the documentation of this file.
1 /*******************************************************************************
2 ** Copyright (c) 2020 MAK Technologies, Inc.
3 ** All rights reserved.
4 *******************************************************************************/
5 
8 
10 
11 #pragma once
12 
13 #include <vrfutil/vertexList.h>
16 
18 
19 class DtSimTask;
20 class DtSetDataRequest;
21 class Coordinate_System;
22 class DtRouteAction;
23 
51 {
52 public:
53 
54  typedef void(*TaskCallbackFcn)(DtSimTask* task, const DtVertexList& vertices, double position, void* usr);
55  typedef void(*SetCallbackFcn)(DtSetDataRequest* set, const DtVertexList& vertices, double position, void* usr);
56 
57  static const double NoTimeSpecified;
58  static const double NoRoutePositionSpecified;
59 
62  struct InputRoute
63  {
64  InputRoute() : vertices(), actions("actions"), targetPosition(NoRoutePositionSpecified),
65  desiredTargetTime(NoTimeSpecified), holdPosition(NoRoutePositionSpecified), startPosition(0.0) {};
66  virtual ~InputRoute()
67  {
68  vertices.emptyList();
69  };
70 
72  DtVertexList vertices;
73 
76 
81  double targetPosition;
82 
86 
92  double holdPosition;
93 
98  double startPosition;
99  };
100 
102  {
103  OutputEstimates() : vertexTimes(), actionTimes(), targetTime(NoTimeSpecified),
104  holdUntilTime(NoTimeSpecified) {};
105  virtual ~OutputEstimates() {};
106 
108  std::vector<double> vertexTimes;
109 
111  std::vector<double> actionTimes;
112 
114  double targetTime;
115 
117  double holdUntilTime;
118 
121  };
122 
125 
127  virtual void initialize();
128 
132  virtual void estimateTimes(const InputRoute& routeInput, OutputEstimates& estimates);
133 
136  virtual void setInitialGeocentricLocation(const DtVector& geocLoc);
137 
141  virtual void setInitialTime(double t);
142 
144  virtual void setInitialSpeed(double s);
145 
148  virtual void setEntityMaxSpeed(double speed);
149 
151  virtual double entityMaxSpeed() const;
152 
155  virtual void setEntityMinSpeed(double speed);
156 
158  virtual double entityMinSpeed() const;
159 
162  virtual void setEntityDefaultSpeed(double speed);
163 
165  virtual double entityDefaultSpeed() const;
166 
169  virtual void setEntityMaxAcceleration(double accel);
170 
172  virtual double entityMaxAcceleration() const;
173 
176  virtual void setEntityMaxDeceleration(double decel);
177 
179  virtual double entityMaxDeceleration() const;
180 
183  virtual void setCurrentGeocentricLocation(const DtVector& geocLoc);
184 
186  virtual DtVector currentGeocentricLocation() const;
187 
190  virtual void setCurrentTime(double t);
191 
193  virtual double currentTime() const;
194 
197  virtual void setCurrentMinSpeed(double speed);
198 
200  virtual double currentMinSpeed() const;
201 
204  virtual void setCurrentMaxSpeed(double speed);
205 
207  virtual double currentMaxSpeed() const;
208 
211  virtual void setCurrentPreferredSpeed(double speed);
212 
214  virtual double currentPreferredSpeed() const;
215 
218  virtual void setCurrentSpeed(double speed);
219 
221  virtual double currentSpeed() const;
222 
225  virtual void setCurrentAcceleration(double speed);
226 
228  virtual double currentAcceleration() const;
229 
231  virtual double targetPosition() const;
232 
234  virtual double targetTime() const;
235 
237  virtual double holdPosition() const;
238 
240  virtual void addTaskPreprocessor(DtSimTaskMessageType t, TaskCallbackFcn fcn, void* usr);
241 
243  virtual void addTaskProcessor(DtSimTaskMessageType t, TaskCallbackFcn fcn, void* usr);
244 
246  virtual void addSetPreprocessor(DtSetMessageType t, SetCallbackFcn fcn, void* usr);
247 
249  virtual void addSetProcessor(DtSetMessageType t, SetCallbackFcn fcn, void* usr);
250 
252  static DtMoveAlongRouteTimeEstimator* createAndInitialize();
253 
255  virtual void printState(std::ostream& strm) const;
256 
257 protected:
258 
266  virtual DtVector calculateLocationOfPositionOnRoute(double pos, const DtVertexList& vertices) const;
267 
277  virtual double calculateTravelTime(const DtVector& currLoc, const DtVector& nextLoc,
278  double currentSpeed, double preferredSpeed,
279  double& newSpeed, double& newAcceleration) const;
280 
288  virtual double calculatesDistanceToTarget(const DtVector& currLoc, double currPos,
289  const DtVertexList& vertices, double targetPos) const;
290 
293  void sanityCheckCurrentSettings();
294 
297  virtual void processHold(const DtVertexList& vertices, double position);
298 
300  void preprocessAction(const DtRouteAction& action, const DtVertexList& vertices, double position);
301 
303  void processAction(const DtRouteAction& action, const DtVertexList& vertices, double position);
304 
309  void preprocessTask(DtSimTask* task, const DtVertexList& vertices, double position);
310 
315  void preprocessSet(DtSetDataRequest* set, const DtVertexList& vertices, double position);
316 
319  void processTask(DtSimTask* task, const DtVertexList& vertices, double position);
320 
323  void processSet(DtSetDataRequest* set, const DtVertexList& vertices, double position);
324 
325 protected:
326 
332 
336  double myTargetTime;
338 
341 
347 
351 
358 
364 
365  typedef std::pair<TaskCallbackFcn, void*> TaskCallbackPair;
366  typedef std::map<DtSimTaskMessageType, TaskCallbackPair> TaskCallbackMap;
367  typedef std::pair<SetCallbackFcn, void*> SetCallbackPair;
368  typedef std::map<DtSetMessageType, SetCallbackPair> SetCallbackMap;
369 
374 
376 };
377 
378 
382 
385 void processSetLocation(DtSetDataRequest* set, const DtVertexList& vertices, double position, DtMoveAlongRouteTimeEstimator* est);
386 void processSetOrderedSpeed(DtSetDataRequest* set, const DtVertexList& vertices, double position, DtMoveAlongRouteTimeEstimator* est);
387 void processSetCurrentSpeed(DtSetDataRequest* set, const DtVertexList& vertices, double position, DtMoveAlongRouteTimeEstimator* est);
389 
390 
391 DT_DLL_vrftasks std::ostream& operator<<(std::ostream&, const DtMoveAlongRouteTimeEstimator::InputRoute&);
392 
double startPosition
Indicates the starting position along the route if estimates are being made from somewhere other than...
Definition: moveAlongRouteTimeEstimator.h:98
double holdUntilTime
Estimated time at which hold will complete.
Definition: moveAlongRouteTimeEstimator.h:117
double myCurrentMinSpeed
Temporary preferences, updated by some actions during calculations.
Definition: moveAlongRouteTimeEstimator.h:354
Coordinate_System * myCoordSys
Definition: moveAlongRouteTimeEstimator.h:375
std::map< DtSetMessageType, SetCallbackPair > SetCallbackMap
Definition: moveAlongRouteTimeEstimator.h:368
virtual ~InputRoute()
Definition: moveAlongRouteTimeEstimator.h:66
SetCallbackMap mySetProcessors
Definition: moveAlongRouteTimeEstimator.h:373
Performs time estimates for move along route with actions tasks.
Definition: moveAlongRouteTimeEstimator.h:50
double targetPosition
The target position on the route defined as a floating point value based on the vertices of the route...
Definition: moveAlongRouteTimeEstimator.h:81
Structure for storing inputs describing the route to be followed and any actions to be taken while mo...
Definition: moveAlongRouteTimeEstimator.h:62
SetCallbackMap mySetPreprocessors
Definition: moveAlongRouteTimeEstimator.h:372
Definition: rwRouteActionList.h:19
virtual ~OutputEstimates()
Definition: moveAlongRouteTimeEstimator.h:105
double myTargetTime
Definition: moveAlongRouteTimeEstimator.h:336
DT_DLL_features std::ostream & operator<<(std::ostream &, const DtFeatureTransform &)
std::ostream output.
std::vector< double > actionTimes
Estimated completion times of each of the specified actions.
Definition: moveAlongRouteTimeEstimator.h:111
std::pair< TaskCallbackFcn, void * > TaskCallbackPair
Definition: moveAlongRouteTimeEstimator.h:365
TaskCallbackMap myTaskPreprocessors
Definition: moveAlongRouteTimeEstimator.h:370
double desiredTargetTime
Desired target time, in seconds relative to the initial time set in setCurrentTime.
Definition: moveAlongRouteTimeEstimator.h:85
double myEntityMaxDeceleration
Definition: moveAlongRouteTimeEstimator.h:349
double myEntityMaxSpeed
Definition: moveAlongRouteTimeEstimator.h:345
double myCurrentPreferredSpeed
Definition: moveAlongRouteTimeEstimator.h:356
double myEntityMaxAcceleration
Definition: moveAlongRouteTimeEstimator.h:348
double myEntityMinSpeed
Entity characteristics, initialized by user.
Definition: moveAlongRouteTimeEstimator.h:344
DtSetDataRequest is an abstract base class from which real setDataRequests can derive.
Definition: setDataRequest.h:40
Definition: coordSystem.h:54
Definition: moveAlongRouteTimeEstimator.h:101
std::pair< SetCallbackFcn, void * > SetCallbackPair
Definition: moveAlongRouteTimeEstimator.h:367
double holdPosition
The hold position on the route defined as a floating point value based on the vertices of the route: ...
Definition: moveAlongRouteTimeEstimator.h:92
OutputEstimates()
Definition: moveAlongRouteTimeEstimator.h:103
class DtVertexList:
Definition: vertexList.h:22
double speedRequired
Speed required to make time on target.
Definition: moveAlongRouteTimeEstimator.h:120
InputRoute()
Definition: moveAlongRouteTimeEstimator.h:64
double myHoldPosition
Position at which to hold.
Definition: moveAlongRouteTimeEstimator.h:340
static const double NoRoutePositionSpecified
Definition: moveAlongRouteTimeEstimator.h:58
double myCurrentAcceleration
Definition: moveAlongRouteTimeEstimator.h:362
static const double NoTimeSpecified
Definition: moveAlongRouteTimeEstimator.h:57
double myCurrentTime
Current state, initialized by user and updated by calculations.
Definition: moveAlongRouteTimeEstimator.h:329
#define DT_DLL_vrftasks
This file is used to determine how to build.
Definition: vrftasksDefines.h:26
double targetTime
Estimated time to arrive on target.
Definition: moveAlongRouteTimeEstimator.h:114
double myCurrentSpeed
Current state, updated by calculations.
Definition: moveAlongRouteTimeEstimator.h:361
DtSimTask is an abstract base class from which real tasks can derive.
Definition: simTask.h:33
Definition: routeAction.h:35
DtRwRouteActionList actions
The list of actions to take along the route.
Definition: moveAlongRouteTimeEstimator.h:75
double myTargetPosition
Target position and the time at which we need to arrive there.
Definition: moveAlongRouteTimeEstimator.h:335
double myEntityDefaultSpeed
Definition: moveAlongRouteTimeEstimator.h:346
void processSetLocation(DtSetDataRequest *set, const DtVertexList &vertices, double position, DtMoveAlongRouteTimeEstimator *est)
These functions handle the standard sets that can affect the time estimates.
void processSetCurrentSpeed(DtSetDataRequest *set, const DtVertexList &vertices, double position, DtMoveAlongRouteTimeEstimator *est)
DtVector myCurrentLocation
Definition: moveAlongRouteTimeEstimator.h:330
double myCurrentMaxSpeed
Definition: moveAlongRouteTimeEstimator.h:355
std::map< DtSimTaskMessageType, TaskCallbackPair > TaskCallbackMap
Definition: moveAlongRouteTimeEstimator.h:366
void processSetOrderedSpeed(DtSetDataRequest *set, const DtVertexList &vertices, double position, DtMoveAlongRouteTimeEstimator *est)
TaskCallbackMap myTaskProcessors
Definition: moveAlongRouteTimeEstimator.h:371

Document ID: Generated on Thu Aug 27 10:56:05 EDT 2020 from SVN revision 217100
Copyright © 2005-2020 MAK Technologies. All Rights Reserved (www.mak.com)