VR-Forces Developer's Guide
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
List of all members | Classes | Public Types | Public Member Functions | Static Public Member Functions | Static Public Attributes | Protected Types | Protected Member Functions | Protected Attributes
DtMoveAlongRouteTimeEstimator Class Reference

Performs time estimates for move along route with actions tasks. Based on settings for the entity's speed and acceleration characteristics, determines an estimate of when the entity will reach each vertex and task and set along the route. Before calling any estimation functions you will need to initialize the estimator with the current state and characteristics of the entity. To initialize the estimator for a particular entity, it is recommended you call the following setEntity* functions.

Classes

struct  InputRoute
 
struct  OutputEstimates
 
struct  PlannedSpeed
 

Public Types

typedef void(* TaskCallbackFcn )(DtSimTask *task, const DtVertexList &vertices, double position, void *usr)
 
typedef void(* SetCallbackFcn )(DtSetDataRequest *set, const DtVertexList &vertices, double position, void *usr)
 
typedef std::vector< PlannedSpeedPlannedSpeedList
 

Public Member Functions

 DtMoveAlongRouteTimeEstimator ()
 
virtual ~DtMoveAlongRouteTimeEstimator ()
 
virtual void initialize ()
 
virtual void estimateTimes (const InputRoute &routeInput, OutputEstimates &estimates)
 
virtual void addTaskPreprocessor (DtSimTaskMessageType t, TaskCallbackFcn fcn, void *usr)
 
virtual void addTaskProcessor (DtSimTaskMessageType t, TaskCallbackFcn fcn, void *usr)
 
virtual void addSetPreprocessor (DtSetMessageType t, SetCallbackFcn fcn, void *usr)
 
virtual void addSetProcessor (DtSetMessageType t, SetCallbackFcn fcn, void *usr)
 
virtual void printState (std::ostream &strm) const
 
Initialization functions for starting entity state
virtual void setInitialGeocentricLocation (const DtVector &geocLoc)
 
virtual void setInitialTime (double t)
 
virtual void setInitialSpeed (double s)
 
Initialization functions for entity movement capabilities
virtual void setEntityMaxSpeed (double speed)
 
virtual double entityMaxSpeed () const
 
virtual void setEntityMinSpeed (double speed)
 
virtual double entityMinSpeed () const
 
virtual void setEntityDefaultSpeed (double speed)
 
virtual double entityDefaultSpeed () const
 
virtual void setEntityMaxAcceleration (double accel)
 
virtual double entityMaxAcceleration () const
 
virtual void setEntityMaxDeceleration (double decel)
 
virtual double entityMaxDeceleration () const
 
Estimator functions. Used during estimation calculations.
virtual void setCurrentGeocentricLocation (const DtVector &geocLoc)
 
virtual DtVector currentGeocentricLocation () const
 
virtual void setCurrentTime (double t)
 
virtual double currentTime () const
 
virtual void setCurrentMinSpeed (double speed)
 
virtual double currentMinSpeed () const
 
virtual void setCurrentMaxSpeed (double speed)
 
virtual double currentMaxSpeed () const
 
virtual void setCurrentPreferredSpeed (double speed)
 
virtual double currentPreferredSpeed () const
 
virtual void setCurrentSpeed (double speed)
 
virtual double currentSpeed () const
 
virtual void setCurrentAcceleration (double speed)
 
virtual double currentAcceleration () const
 
virtual double targetPosition () const
 
virtual double targetTime () const
 
virtual double holdPosition () const
 
virtual void addPlannedSpeed (double routePosition, double speed, bool required)
 
virtual PlannedSpeedList plannedSpeeds () const
 

Static Public Member Functions

static
DtMoveAlongRouteTimeEstimator
createAndInitialize ()
 

Static Public Attributes

static const double NoTimeSpecified
 
static const double NoRoutePositionSpecified
 

Protected Types

typedef std::pair
< TaskCallbackFcn, void * > 
TaskCallbackPair
 
typedef std::map
< DtSimTaskMessageType,
TaskCallbackPair
TaskCallbackMap
 
typedef std::pair
< SetCallbackFcn, void * > 
SetCallbackPair
 
typedef std::map
< DtSetMessageType,
SetCallbackPair
SetCallbackMap
 

Protected Member Functions

virtual DtVector calculateLocationOfPositionOnRoute (double pos, const DtVertexList &vertices) const
 
virtual double calculateTravelTime (const DtVector &currLoc, const DtVector &nextLoc, double currentSpeed, double preferredSpeed, double &newSpeed, double &newAcceleration) const
 
virtual double calculateDistanceToTarget (const DtVector &currLoc, double currPos, const DtVertexList &vertices, double targetPos) const
 
virtual double calculateTimeAndDistanceAtRequiredSpeeds (double currPos, const DtVertexList &vertices, double targetPos, const PlannedSpeedList &plannedSpeeds, double &distanceAtRequiredSpeeds) const
 
virtual void sanityCheckCurrentSettings ()
 
virtual void processHold (const DtVertexList &vertices, double position)
 
void preprocessAction (const DtRouteAction &action, const DtVertexList &vertices, double position)
 
void processAction (const DtRouteAction &action, const DtVertexList &vertices, double position)
 
void preprocessTask (DtSimTask *task, const DtVertexList &vertices, double position)
 
void preprocessSet (DtSetDataRequest *set, const DtVertexList &vertices, double position)
 
void processTask (DtSimTask *task, const DtVertexList &vertices, double position)
 
void processSet (DtSetDataRequest *set, const DtVertexList &vertices, double position)
 

Protected Attributes

double myHoldPosition
 
TaskCallbackMap myTaskPreprocessors
 
TaskCallbackMap myTaskProcessors
 
SetCallbackMap mySetPreprocessors
 
SetCallbackMap mySetProcessors
 
PlannedSpeedList myPlannedSpeeds
 
Coordinate_SystemmyCoordSys
 
double myCurrentTime
 
DtVector myCurrentLocation
 
double myTargetPosition
 
double myTargetTime
 
double myEntityMinSpeed
 
double myEntityMaxSpeed
 
double myEntityDefaultSpeed
 
double myEntityMaxAcceleration
 
double myEntityMaxDeceleration
 
bool myEntityRequiredSpeed
 
double myCurrentMinSpeed
 
double myCurrentMaxSpeed
 
double myCurrentPreferredSpeed
 
double myCurrentSpeed
 
double myCurrentAcceleration
 

Member Typedef Documentation

typedef void(* DtMoveAlongRouteTimeEstimator::TaskCallbackFcn)(DtSimTask *task, const DtVertexList &vertices, double position, void *usr)
typedef void(* DtMoveAlongRouteTimeEstimator::SetCallbackFcn)(DtSetDataRequest *set, const DtVertexList &vertices, double position, void *usr)

Constructor & Destructor Documentation

DtMoveAlongRouteTimeEstimator::DtMoveAlongRouteTimeEstimator ( )
virtual DtMoveAlongRouteTimeEstimator::~DtMoveAlongRouteTimeEstimator ( )
virtual

Member Function Documentation

virtual void DtMoveAlongRouteTimeEstimator::initialize ( )
virtual

Initializes the estimator by registering default task and set pre-processor and processor functions.

virtual void DtMoveAlongRouteTimeEstimator::estimateTimes ( const InputRoute routeInput,
OutputEstimates estimates 
)
virtual

Estimates the ETA at every vertex and action point along a route.

Parameters
vertexEtas- Input parameter describing the route and any actions to take along it.
actionEtas- Output parameter that specifies estimated times for each route vertex and action.
virtual void DtMoveAlongRouteTimeEstimator::setInitialGeocentricLocation ( const DtVector geocLoc)
virtual

Sets the initial geocentric location. Should be called prior to any time estimates. If not called, the first route vertex is assumed to be the initial position.

virtual void DtMoveAlongRouteTimeEstimator::setInitialTime ( double  t)
virtual

Sets the initial time, in seconds. Should be called prior to any time estimates. The meaning of the value, other than that it is in seconds, is up to the caller. It can be relative to any time frame of the caller's choosing. Default is 0.0.

virtual void DtMoveAlongRouteTimeEstimator::setInitialSpeed ( double  s)
virtual

Sets the initial speed, in meters per second. Should be called prior to any time estimates.

virtual void DtMoveAlongRouteTimeEstimator::setEntityMaxSpeed ( double  speed)
virtual

Initializes the entity's absolute maximum speed. Should be initialized once and not changed by any calculations.

virtual double DtMoveAlongRouteTimeEstimator::entityMaxSpeed ( ) const
virtual

The entity's absolute maximum speed.

virtual void DtMoveAlongRouteTimeEstimator::setEntityMinSpeed ( double  speed)
virtual

Initializes the entity's absolute minimum speed. Should be initialized once and not changed by any calculations.

virtual double DtMoveAlongRouteTimeEstimator::entityMinSpeed ( ) const
virtual

The entity's absolute minimum speed.

virtual void DtMoveAlongRouteTimeEstimator::setEntityDefaultSpeed ( double  speed)
virtual

Initializes the entity's default speed. Should be initialized once and not changed by any calculations.

virtual double DtMoveAlongRouteTimeEstimator::entityDefaultSpeed ( ) const
virtual

The entity's default speed.

virtual void DtMoveAlongRouteTimeEstimator::setEntityMaxAcceleration ( double  accel)
virtual

Initializes the entity's maximum acceleration. Should be initialized once and not changed by any calculations.

virtual double DtMoveAlongRouteTimeEstimator::entityMaxAcceleration ( ) const
virtual

The entity's default speed.

virtual void DtMoveAlongRouteTimeEstimator::setEntityMaxDeceleration ( double  decel)
virtual

Initializes the entity's maximum deceleration. Should be initialized once and not changed by any calculations.

virtual double DtMoveAlongRouteTimeEstimator::entityMaxDeceleration ( ) const
virtual

The entity's default speed.

virtual void DtMoveAlongRouteTimeEstimator::setCurrentGeocentricLocation ( const DtVector geocLoc)
virtual

Sets the current geocentric location. Called by calculations to adjust location as travel along the route is estimated.

virtual DtVector DtMoveAlongRouteTimeEstimator::currentGeocentricLocation ( ) const
virtual

The current preferred speed.

virtual void DtMoveAlongRouteTimeEstimator::setCurrentTime ( double  t)
virtual

Sets the current time, in seconds. Called by calculations to adjust elapsed time as travel along the route is estimated.

virtual double DtMoveAlongRouteTimeEstimator::currentTime ( ) const
virtual

The current time.

virtual void DtMoveAlongRouteTimeEstimator::setCurrentMinSpeed ( double  speed)
virtual

Sets the current minimum speed. May be called by calculations to adjust the minimum speed based on entity actions.

virtual double DtMoveAlongRouteTimeEstimator::currentMinSpeed ( ) const
virtual

The current minimum speed.

virtual void DtMoveAlongRouteTimeEstimator::setCurrentMaxSpeed ( double  speed)
virtual

Sets the current maximum speed. May be called by calculations to adjust the maximum speed based on entity actions.

virtual double DtMoveAlongRouteTimeEstimator::currentMaxSpeed ( ) const
virtual

The current maximum speed.

virtual void DtMoveAlongRouteTimeEstimator::setCurrentPreferredSpeed ( double  speed)
virtual

Sets the current preferred speed. May be called by calculations to adjust the maximum speed based on entity actions.

virtual double DtMoveAlongRouteTimeEstimator::currentPreferredSpeed ( ) const
virtual

The current preferred speed.

virtual void DtMoveAlongRouteTimeEstimator::setCurrentSpeed ( double  speed)
virtual

Sets the current speed. Updated by calculations to adjust speed. Should not be called directly by users!

virtual double DtMoveAlongRouteTimeEstimator::currentSpeed ( ) const
virtual

The current speed.

virtual void DtMoveAlongRouteTimeEstimator::setCurrentAcceleration ( double  speed)
virtual

Sets the current acceleration. Updated by calculations to adjust acceleration. Should not be called directly by users!

virtual double DtMoveAlongRouteTimeEstimator::currentAcceleration ( ) const
virtual

The current acceleration.

virtual double DtMoveAlongRouteTimeEstimator::targetPosition ( ) const
virtual

Returns the target position along the route.

virtual double DtMoveAlongRouteTimeEstimator::targetTime ( ) const
virtual

Returns the time at which we should arrive at the target position.

virtual double DtMoveAlongRouteTimeEstimator::holdPosition ( ) const
virtual

Returns the hold position along the route.

virtual void DtMoveAlongRouteTimeEstimator::addPlannedSpeed ( double  routePosition,
double  speed,
bool  required 
)
virtual

Informs the estimator of planned ordered speed changes.

virtual PlannedSpeedList DtMoveAlongRouteTimeEstimator::plannedSpeeds ( ) const
virtual

Returns the future ordered speeds list.

virtual void DtMoveAlongRouteTimeEstimator::addTaskPreprocessor ( DtSimTaskMessageType  t,
TaskCallbackFcn  fcn,
void *  usr 
)
virtual

Adds a task pre-processor callback.

virtual void DtMoveAlongRouteTimeEstimator::addTaskProcessor ( DtSimTaskMessageType  t,
TaskCallbackFcn  fcn,
void *  usr 
)
virtual

Adds a task processor callback.

virtual void DtMoveAlongRouteTimeEstimator::addSetPreprocessor ( DtSetMessageType  t,
SetCallbackFcn  fcn,
void *  usr 
)
virtual

Adds a set pre-processor callback.

virtual void DtMoveAlongRouteTimeEstimator::addSetProcessor ( DtSetMessageType  t,
SetCallbackFcn  fcn,
void *  usr 
)
virtual

Adds a set processor callback.

static DtMoveAlongRouteTimeEstimator* DtMoveAlongRouteTimeEstimator::createAndInitialize ( )
static

Creates and initializes a new estimator.

virtual void DtMoveAlongRouteTimeEstimator::printState ( std::ostream &  strm) const
virtual

Prints the current state to the specified output stream.

virtual DtVector DtMoveAlongRouteTimeEstimator::calculateLocationOfPositionOnRoute ( double  pos,
const DtVertexList vertices 
) const
protectedvirtual

Calculates the geocentric location of a point on a route. Called by estimateTimes().

Parameters
pos- The position on the route defined as a floating point value based on the vertices of the route: e.g. 0.75 is 75% of the way between vertex 0 and 1 and 2.35 is 35% of the way between vertex 2 and 3.
vertices- The geocentric vertices of the route.
Returns
The geocentric location of the point on the the route, or 0,0,0 if it could not be determined.
virtual double DtMoveAlongRouteTimeEstimator::calculateTravelTime ( const DtVector currLoc,
const DtVector nextLoc,
double  currentSpeed,
double  preferredSpeed,
double newSpeed,
double newAcceleration 
) const
protectedvirtual

Calculates the time to get from one location to the next given current settings and specified entity capabilities. Called by estimateTimes().

Parameters
currLoc- The current location (geocentric).
nextLoc- The location to which we are traveling (geocentric).
currentSpeed- The starting speed.
preferredSpeed- The preferred speed.
newSpeed- Output speed at arrival at nextPos.
newAcceleration- Output acceleration at arrival at nextPos.
Returns
The time it takes to travel from the currPos to the nextPos.
virtual double DtMoveAlongRouteTimeEstimator::calculateDistanceToTarget ( const DtVector currLoc,
double  currPos,
const DtVertexList vertices,
double  targetPos 
) const
protectedvirtual

Calculates an estimated distance to the target position.

Parameters
currLoc- The current location (geocentric).
currPos- The approximate current position along the route defined as a floating point value based on the vertices of the route.
vertices- The geocentric vertices of the route.
targetPos- The target position along the route defined as a floating point value based on the vertices of the route.
virtual double DtMoveAlongRouteTimeEstimator::calculateTimeAndDistanceAtRequiredSpeeds ( double  currPos,
const DtVertexList vertices,
double  targetPos,
const PlannedSpeedList plannedSpeeds,
double distanceAtRequiredSpeeds 
) const
protectedvirtual

Calculates the time and distance the entity is required to move at user specified speeds. During these times we will not be able to adjust speeds to meet target times, so they can be removed from the calculation to determine how we should adjust our speed.

Parameters
currLoc- The current location (geocentric).
currPos- The approximate current position along the route defined as a floating point value based on the vertices of the route.
vertices- The geocentric vertices of the route.
targetPos- The target position along the route defined as a floating point value based on the vertices of the route.
plannedSpeeds- The list of route segments where that are planned to use specific, required speeds.
distanceAtRequiredSpeeds- Output distance covered at required speeds.
Returns
The time it will take to traverse the segments at required speeds.
virtual void DtMoveAlongRouteTimeEstimator::sanityCheckCurrentSettings ( )
protectedvirtual

Performs a sanity check on current settings and adjusts some of the current values to ensure correctness before beginning estimates.

virtual void DtMoveAlongRouteTimeEstimator::processHold ( const DtVertexList vertices,
double  position 
)
protectedvirtual

Performs a hold at the specified position, determining hold time based on desired time arrival time.

void DtMoveAlongRouteTimeEstimator::preprocessAction ( const DtRouteAction action,
const DtVertexList vertices,
double  position 
)
protected

Pre-process the given action. Calls preprocessTask() or preprocessSet() accordingly.

void DtMoveAlongRouteTimeEstimator::processAction ( const DtRouteAction action,
const DtVertexList vertices,
double  position 
)
protected

Process the given action. Calls processTask() or processSet() accordingly.

void DtMoveAlongRouteTimeEstimator::preprocessTask ( DtSimTask task,
const DtVertexList vertices,
double  position 
)
protected

Pre-processes the given task. All tasks and sets are pre-processed in order prior to performing calculations. This allows us to save information about future tasks or sets as necessary before performing the actual calculations.

void DtMoveAlongRouteTimeEstimator::preprocessSet ( DtSetDataRequest set,
const DtVertexList vertices,
double  position 
)
protected

Pre-processes the given set. All tasks and sets are pre-processed in order prior to performing calculations. This allows us to save information about future tasks or sets as necessary before performing the actual calculations.

void DtMoveAlongRouteTimeEstimator::processTask ( DtSimTask task,
const DtVertexList vertices,
double  position 
)
protected

Processes the given task. Processing of a task may change current settings and affect time estimates going forward.

void DtMoveAlongRouteTimeEstimator::processSet ( DtSetDataRequest set,
const DtVertexList vertices,
double  position 
)
protected

Processes the given set. Processing of a set may change current settings and affect time estimates going forward.

Member Data Documentation

const double DtMoveAlongRouteTimeEstimator::NoTimeSpecified
static
const double DtMoveAlongRouteTimeEstimator::NoRoutePositionSpecified
static
double DtMoveAlongRouteTimeEstimator::myCurrentTime
protected

Current state, initialized by user and updated by calculations.

DtVector DtMoveAlongRouteTimeEstimator::myCurrentLocation
protected

Current state, initialized by user and updated by calculations.

double DtMoveAlongRouteTimeEstimator::myTargetPosition
protected

Target position and the time at which we need to arrive there.

double DtMoveAlongRouteTimeEstimator::myTargetTime
protected

Target position and the time at which we need to arrive there.

double DtMoveAlongRouteTimeEstimator::myHoldPosition
protected

Position at which to hold.

double DtMoveAlongRouteTimeEstimator::myEntityMinSpeed
protected

Entity characteristics, initialized by user.

double DtMoveAlongRouteTimeEstimator::myEntityMaxSpeed
protected

Entity characteristics, initialized by user.

double DtMoveAlongRouteTimeEstimator::myEntityDefaultSpeed
protected

Entity characteristics, initialized by user.

double DtMoveAlongRouteTimeEstimator::myEntityMaxAcceleration
protected

Entity characteristics, initialized by user.

double DtMoveAlongRouteTimeEstimator::myEntityMaxDeceleration
protected

Entity characteristics, initialized by user.

bool DtMoveAlongRouteTimeEstimator::myEntityRequiredSpeed
protected

Entity characteristics, initialized by user.

double DtMoveAlongRouteTimeEstimator::myCurrentMinSpeed
protected

Temporary preferences, updated by some actions during calculations.

double DtMoveAlongRouteTimeEstimator::myCurrentMaxSpeed
protected

Temporary preferences, updated by some actions during calculations.

double DtMoveAlongRouteTimeEstimator::myCurrentPreferredSpeed
protected

Temporary preferences, updated by some actions during calculations.

double DtMoveAlongRouteTimeEstimator::myCurrentSpeed
protected

Current state, updated by calculations.

double DtMoveAlongRouteTimeEstimator::myCurrentAcceleration
protected

Current state, updated by calculations.

TaskCallbackMap DtMoveAlongRouteTimeEstimator::myTaskPreprocessors
protected
TaskCallbackMap DtMoveAlongRouteTimeEstimator::myTaskProcessors
protected
SetCallbackMap DtMoveAlongRouteTimeEstimator::mySetPreprocessors
protected
SetCallbackMap DtMoveAlongRouteTimeEstimator::mySetProcessors
protected
PlannedSpeedList DtMoveAlongRouteTimeEstimator::myPlannedSpeeds
protected
Coordinate_System* DtMoveAlongRouteTimeEstimator::myCoordSys
protected

The documentation for this class was generated from the following file:

Document ID: Generated on Wed Mar 27 22:49:11 EDT 2024 from SVN revision 264633
Copyright © 2005-2024 MAK Technologies. All Rights Reserved (www.mak.com)