![]() |
VR-Forces Developer's Guide
|
Classes | |
| struct | AvoiderStatus |
| struct | EntityObstacleData |
| struct | FeatureObstacleData |
| struct | FeatureObstacleEdge |
| class | SpeedConstraint |
| struct | SpeedInterval |
Public Types | |
Speed Constraints | |
Classes to represent the allowed speeds at a given heading. | |
| typedef std::list< SpeedInterval > | IntervalList |
Public Member Functions | |
| DtGroundMoveToObstacleAvoider (const DtSimulationServices *simsvc, const DtLocalObject *hostEntity, const DtGroundMoveToDestinationControllerComponent *parentCtrlr) | |
| virtual | ~DtGroundMoveToObstacleAvoider () |
Protected Member Functions | |
Behavior Constants | |
These functions define constants that affect various avoidance decisions. Override to change behavior. | |
| virtual double | maxOffroadSpeed () const |
| virtual double | lookaheadTime () const |
Right of Way Rules | |
| virtual bool | shouldYieldToRight () |
| virtual bool | shouldYieldToLeft () |
Get Obstacles | |
Functions to gather obstacles each tick. | |
| virtual void | provideDynamicObstacles (std::list< struct EntityObstacleData > &vehicles) |
| virtual void | computeEntityObstacleData (const DtSimObjectReference &obj, EntityObstacleData &entityObstacleData) |
| virtual void | provideStaticObstacles (std::list< struct FeatureObstacleData > &walls) |
| virtual void | testAndSetClockwiseOrdering (FeatureObstacleData &obstacle) |
| virtual void | setInitialObstacleEdgeHeadings (FeatureObstacleData &obstacle) const |
| virtual void | setIsFacingEntity (FeatureObstacleData &obstacle, const DtVector &entityLocation) |
| virtual DtExtent | makeDynamicObstacleSearchArea (const DtVector &localGoal) |
| virtual MAKVRinTerra::DtFeatureGeometry::Area | makeStaticObstacleSearchArea (const DtVector &localGoal) |
Processing Obstacles. | |
Functions that examine obstacles and produce speed constraints, then call evaluation functions to find the best speed and a score for it. | |
| virtual void | computeFinalAction (const std::list< struct EntityObstacleData > &vehicles, const std::list< struct FeatureObstacleData > &walls, const double desiredHeading, const double desiredSpeed, double &outHeading, double &outSpeed, AvoiderStatus &status) |
| virtual double | computeSpeedAndScoreForPathHeading (const double pathHeading, double refHeading, SpeedConstraint &refConstraint, const bool maybeYieldRow, const std::list< struct EntityObstacleData > &vehicles, const std::list< struct FeatureObstacleData > &walls, const double desiredSpeed, const double desiredHeading, double &outSpeed, SpeedConstraint &resultConstraint) |
| virtual double | computeSpeedAndScoreForStraightAhead (const std::list< struct EntityObstacleData > &vehicles, const std::list< struct FeatureObstacleData > &walls, const double desiredSpeed, const double desiredHeading, SpeedConstraint &outConstraint, double &outSpeed) |
| virtual SpeedConstraint | computeSpeedConstraintFromDynamicObstacle (const double originOffset, const double ownHalfWidth, const double ownHalfLength, const EntityObstacleData &obstacle, bool leftTurn, bool rightTurn, const double cornerBufferWidth) |
| virtual SpeedConstraint | computeSpeedConstraintFromStaticObstacle (const double originOffset, const double ownHalfWidth, const double ownHalfLength, const FeatureObstacleData &obstacle, bool leftTurn, bool rightTurn, const double cornerBufferWidth) |
Scoring Functions. | |
These functions compute a score for a given speed and heading so that actions can be compared against one another. | |
| virtual double | actionScore (const SpeedConstraint &constrainedAction, const double desiredHeading, const double desiredSpeed, double &speedForBestScore) |
| virtual void | updateBestScoreAndSpeed (double &bestScore, double &bestSpeed, const double speed, const double heading, const double desiredSpeed, const double desiredHeading, const bool applyYield=false, const bool isStatic=false) |
| virtual double | combinedScore (const double speed, const double heading, const double desiredSpeed, const double desiredHeading, const bool yieldTo=false, const bool isStatic=false) |
| virtual double | speedGreaterThanDesiredScore (const double speed, const double heading, const double desiredSpeed, const double desiredHeading) |
| virtual double | speedLessThanDesiredScore (const double speed, const double heading, const double desiredSpeed, const double desiredHeading) |
| virtual double | speedInDesiredDirectionScore (const double speed, const double heading, const double desiredSpeed, const double desiredHeading) |
| virtual double | speedLessThanFeasibleScore (const double speed, const double heading, const double desiredSpeed, const double desiredHeading) |
| virtual double | speedGreaterThanFeasibleScore (const double speed, const double heading, const double desiredSpeed, const double desiredHeading) |
| virtual double | headingInDesiredDirectionScore (const double speed, const double heading, const double desiredSpeed, const double desiredHeading) |
| virtual double | yieldToScore (const double speed, const double heading, const double desiredSpeed, const double desiredHeading) |
Utilities | |
| virtual void | computeBodyTransform () |
| virtual void | computeHorizontalRotation (const double angle, DtDcm &rot) |
| virtual void | markVehiclesWithRightOfWay (const double desiredHeading, const std::list< struct EntityObstacleData > &vehicles) |
| virtual double | maxSpeedForPassBehind (const double timeLimit, const double distance) |
| virtual double | minSpeedForPassAhead (const double timeLimit, const double distance) |
| virtual double | minTurnRadiusForCurrentSpeed () const |
| virtual double | maxAccelerationForSpeed () |
| virtual double | maxTractionForConditions () |
| virtual double | highestFeasibleSpeed () const |
| virtual void | setHighestFeasibleSpeed (const double s) |
| virtual double | lowestFeasibleSpeed () const |
| virtual void | setLowestFeasibleSpeed (const double s) |
Public API | |
| enum | AvoiderStatusTypeValue { avoiderNotActive = 0, avoiderNoObstacles = 1, avoiderAvoiding = 2, avoiderStoppedForMovingObstacle = 3, avoiderStoppedForStaticObstacle = 4 } |
| enum | ObstacleType { obstacleStatic = 0, obstacleDynamic = 1 } |
| std::string | avoiderStatusString (enum AvoiderStatusTypeValue) |
| virtual void | steeringAndSpeedThroughObstacles (const DtVector &localGoalPosition, const double desiredImmediateHeading, const double desiredSpeed, const double desiredAccelLimit, double &desiredHeadingOut, double &desiredSpeedOut, AvoiderStatus &avoiderStatus, const bool debug=false) |
| virtual void | searchAreaVisualization (std::vector< DtVector > &boundary) |
| virtual void | staticObstacleVisualization (std::vector< std::vector< DtVector >> &walls) |
| virtual void | dynamicObstacleVisualization (DtExtent &extent) |
Obstacle Gathering Utilities | |
| virtual bool | isNotSelf (const DtSimObject *obj) |
| virtual bool | isNotBehind (const DtSimObject *obj) |
| virtual bool | isNotEmbarkedOnDifferentParent (const DtSimObject *obj) |
| virtual bool | doesNotOverlapInAltitude (const DtSimObject *obj) |
| virtual DtCompositePredicate | dynamicObstaclePredicate () |
| virtual void | putFeatureInCache (const MAKVRinTerra::DtFeature &f) |
| static bool | ignoreSelfFilterFcn (const DtSimObject *obj, void *usr) |
| static bool | ignoreBehindFilterFcn (const DtSimObject *obj, void *usr) |
| static bool | ignoreEmbarkedOnDifferentParentFcn (const DtSimObject *obj, void *usr) |
| static bool | ignoreDifferentAltitudeFcn (const DtSimObject *obj, void *usr) |
| typedef std::list<SpeedInterval> DtGroundMoveToObstacleAvoider::IntervalList |
Called each tick of the parent controller to provide steering and speed, given the goal and considering obstacles.
| localGoalPosition | The goal location in local coordinates. This is used to allow the avoider to make sure that obstacle space buffers don't unnecessarily keep the vehicle from reaching the goal. |
| desiredImmediateHeading | The heading desired this tick. Often this will be the heading to the goal position, but the caller may instead want to move the entity back toward a line or something. |
| desiredSpeed | The desired unrestricted speed (e.g. ordered speed). |
| desiredLatAccelLimit | Lateral acceleration limit to use when considering turning maneuvers. |
| desiredHeadingOut | The output heading to turn to. |
| desiredSpeedOut | The output speed. This is usually an upper bound, but a maneuver to pass in front of another vehicle may require driving this speed. If the vehicle is moving in reverse, this will still be a positive value. |
| Enumerator | |
|---|---|
| avoiderNotActive | |
| avoiderNoObstacles | |
| avoiderAvoiding | |
| avoiderStoppedForMovingObstacle | |
| avoiderStoppedForStaticObstacle | |
Called each tick of the parent controller to provide steering and speed, given the goal and considering obstacles.
| localGoalPosition | The goal location in local coordinates. This is used to allow the avoider to make sure that obstacle space buffers don't unnecessarily keep the vehicle from reaching the goal. |
| desiredImmediateHeading | The heading desired this tick. Often this will be the heading to the goal position, but the caller may instead want to move the entity back toward a line or something. |
| desiredSpeed | The desired unrestricted speed (e.g. ordered speed). |
| desiredLatAccelLimit | Lateral acceleration limit to use when considering turning maneuvers. |
| desiredHeadingOut | The output heading to turn to. |
| desiredSpeedOut | The output speed. This is usually an upper bound, but a maneuver to pass in front of another vehicle may require driving this speed. If the vehicle is moving in reverse, this will still be a positive value. |
| Enumerator | |
|---|---|
| obstacleStatic | |
| obstacleDynamic | |
| DtGroundMoveToObstacleAvoider::DtGroundMoveToObstacleAvoider | ( | const DtSimulationServices * | simsvc, |
| const DtLocalObject * | hostEntity, | ||
| const DtGroundMoveToDestinationControllerComponent * | parentCtrlr | ||
| ) |
|
virtual |
destructor
| std::string DtGroundMoveToObstacleAvoider::avoiderStatusString | ( | enum | AvoiderStatusTypeValue | ) |
Called each tick of the parent controller to provide steering and speed, given the goal and considering obstacles.
| localGoalPosition | The goal location in local coordinates. This is used to allow the avoider to make sure that obstacle space buffers don't unnecessarily keep the vehicle from reaching the goal. |
| desiredImmediateHeading | The heading desired this tick. Often this will be the heading to the goal position, but the caller may instead want to move the entity back toward a line or something. |
| desiredSpeed | The desired unrestricted speed (e.g. ordered speed). |
| desiredLatAccelLimit | Lateral acceleration limit to use when considering turning maneuvers. |
| desiredHeadingOut | The output heading to turn to. |
| desiredSpeedOut | The output speed. This is usually an upper bound, but a maneuver to pass in front of another vehicle may require driving this speed. If the vehicle is moving in reverse, this will still be a positive value. |
|
virtual |
Called each tick of the parent controller to provide steering and speed, given the goal and considering obstacles.
| localGoalPosition | The goal location in local coordinates. This is used to allow the avoider to make sure that obstacle space buffers don't unnecessarily keep the vehicle from reaching the goal. |
| desiredImmediateHeading | The heading desired this tick. Often this will be the heading to the goal position, but the caller may instead want to move the entity back toward a line or something. |
| desiredSpeed | The desired unrestricted speed (e.g. ordered speed). |
| desiredLatAccelLimit | Lateral acceleration limit to use when considering turning maneuvers. |
| desiredHeadingOut | The output heading to turn to. |
| desiredSpeedOut | The output speed. This is usually an upper bound, but a maneuver to pass in front of another vehicle may require driving this speed. If the vehicle is moving in reverse, this will still be a positive value. |
|
virtual |
Fills in boundary with the vertices (world coordinates) of the search area.
|
virtual |
Fills in walls with the vertices (world coordinates) of the walls currently in use.
|
virtual |
Called each tick of the parent controller to provide steering and speed, given the goal and considering obstacles.
| localGoalPosition | The goal location in local coordinates. This is used to allow the avoider to make sure that obstacle space buffers don't unnecessarily keep the vehicle from reaching the goal. |
| desiredImmediateHeading | The heading desired this tick. Often this will be the heading to the goal position, but the caller may instead want to move the entity back toward a line or something. |
| desiredSpeed | The desired unrestricted speed (e.g. ordered speed). |
| desiredLatAccelLimit | Lateral acceleration limit to use when considering turning maneuvers. |
| desiredHeadingOut | The output heading to turn to. |
| desiredSpeedOut | The output speed. This is usually an upper bound, but a maneuver to pass in front of another vehicle may require driving this speed. If the vehicle is moving in reverse, this will still be a positive value. |
|
inlineprotectedvirtual |
The maximum assumed speed while driving off road. This affects the search distance for dynamic obstacles. Default value: 20.0 m/s.
|
inlineprotectedvirtual |
The amount of time to lookahead. This affects the search distance for all obstacles. Note that the time required to slow to a stop is spd/accel; consider the max speed above and a gentle deceleration of 3-5mps. Default value: 10.0 s.
|
inlineprotectedvirtual |
Indicates if yield-to-right is in effect. Ownship should yield (within reason) to vehicle obstacles approaching from the right. Takes priority if this and yield-to-left are in effect. TODO – not currently used.
|
inlineprotectedvirtual |
Indicates if yield-to-left is in effect. Ownship should yield (within reason) to vehicle obstacles approaching from the left. TODO – not currently used.
|
protectedvirtual |
Get the vehicle (dynamic) obstacles for the avoidance algorithm.
|
protectedvirtual |
Get the vehicle (dynamic) obstacles for the avoidance algorithm.
|
protectedvirtual |
Get the feature (static) obstacles for the avoidance algorithm.
|
protectedvirtual |
Determines if the vertices of an obstacle (assumed to be a closed area) are in clockwise order or not, and if not, reversed them (i.e. clockwise when viewed from above).
|
protectedvirtual |
Get the vehicle (dynamic) obstacles for the avoidance algorithm.
|
protectedvirtual |
Get the vehicle (dynamic) obstacles for the avoidance algorithm.
|
protectedvirtual |
Compute the area in which to search for moving obstacles. This function uses a defined constant for the maximum speed at which a moving obstacle can be moving. It uses the ownship location and orientation to compute the search area.
| localGoal | Local coordinates of destination. |
|
protectedvirtual |
Compute the area in which to search for static obstacles. This area will likely be different than the one for moving obstacles because all of these obstacles are stationary, i.e. they cannot be moving toward this vehicle.
| localGoal | Local coordinates of destination. |
|
protectedvirtual |
This also ignores an object if it is the parent of the entity.
|
protectedvirtual |
This also ignores an object if it is the parent of the entity.
|
protectedvirtual |
This also ignores an object if it is the parent of the entity.
|
protectedvirtual |
This also ignores an object if it is the parent of the entity.
|
staticprotected |
This also ignores an object if it is the parent of the entity.
|
staticprotected |
This also ignores an object if it is the parent of the entity.
|
staticprotected |
This also ignores an object if it is the parent of the entity.
|
staticprotected |
This also ignores an object if it is the parent of the entity.
|
protectedvirtual |
This also ignores an object if it is the parent of the entity.
|
protectedvirtual |
Visitor function for features in myObstacleFeatureSet that puts them into a list of FeatureObstacleData.
|
protectedvirtual |
Analyzes obstacles and determines the best steering and speed through them.
| vehicles | A list of EntityObstacleData, with offset, velocity, and relativeHeading values referenced to the ownship location and heading. The relativeHeading for each obstacle has already been flipped 180 degrees if the vehicle is moving in reverse. |
| walls | Similarly for feature obstacle data. |
| desiredHeading | The absolute heading desired. |
| desiredSpeed | The speed desired for the ownship, e.g. ordered speed. |
| outHeading | The heading of the best computed action. |
| outSpeed | The speed of the best computed action. |
|
protectedvirtual |
Computes the speed and a "score" for a path at a given heading from the ownship (refHeading). The function transforms all of the obstacle data to the frame of reference of the pathHeading and computes and merges SpeedConstraints for each obstacle. It returns the best score for this pathHeading, and the speed corresponding to that score.
| pathHeading | The desired heading for the path. |
| refHeading | The heading of the vehicle. This parameter allows the function to determine how much of a turn this pathHeading represents. |
| refConstraint | The constraint already computed for movement in the refHeading direction. This includes a clear distance in the refHeading direction and speed constraints to avoid any conflict area. |
| vehicles | A list of EntityObstacleData, where the offsets and velocities are relative to the [ownship] origin and the refHeading. |
| walls | Similarly, for FeatureObstacleData. |
| desiredSpeed | The ideal speed (ordered or task speed). |
| outSpeed | An output parameter to hold the best speed, corresponding to the return score value. |
| resultConstraint | The final constraint used to select the outSpeed, using the scoring functions. This output is provided to allow the caller to determine if other speeds were possible, and to see what obstacle was the forcing one for the constraint. |
|
protectedvirtual |
Like #computerSpeedAndScoreForPathHeading, but fixed for a path heading that is straight ahead for the ownship. Returns a SpeedConstraint that can be used for later computation.
| vehicles | A list of EntityObstacleData, where the offsets and velocities are relative to the [ownship] origin and heading. |
| walls | Similarly, for FeatureObstacleData. |
| outSpeed | The best speed to use going straight ahead. |
| outConstraint | The speed constraints for going straight ahead. |
|
protectedvirtual |
Compute the constraints set by one dynamic obstacle. Given the ownship's speed along the (body) +x axis, determine if the obstacle will intersect the ownship and when; compute a speed below which the ownship will pass behind the obstacle and a speed above which the ownship will pass in front of the obstacle. This generates a SpeedConstraint. SpeedConstraints for all obstacles are merged to return the final one.
| originOffset | This computation may be at an angle to the ownship's heading, requiring a turn along an arc. If two tangents are drawn to this arc, one at the ownship heading and one at a desired path heading, they will intersect at a point some distance in front of the ownship. This parameter is the distance to that intersection. This intersection point is the origin of the coordinate system that the obstacle positions are given in. |
| cornerBufferWidth | If the obstacle is close enough that it is along the curve that ownship would follow to turn to this path, then this function should check to see if the obstacle is along the curve. The curve cuts inside of the corner formed by the ownship x axis and the angled path line. This parameter defines how far inside the corner the curve cuts. |
| leftTurn | and rightTurn indicate whether the path angles left or right from the ownship x axis. The cornerBufferWidth is applied to the inside of the turn. |
|
protectedvirtual |
This function is similar to the one for dynamic obstacles, except that the obstacle is made up of a set of static line segments instead of bounding volumes. Segments that do not face the ownship are ignored.
|
protectedvirtual |
Compute a score for a given SpeedConstraint, i.e. constrained speed intervals at a certain heading. Applies the scoring functions to the intervals. Note that since the scoring functions are (currently) linear functions of speed, only the interval end points need be scored. In addition to the interval end points in the constraint, this function computes scores at the desired speed and the minimum and maximum feasible speeds.
|
protectedvirtual |
Computes the score for the given speed and heading using combinedScore, and then updates bestScore and bestSpeed if the resulting score is better than combinedScore.
| applyYield | A flag to indicate that the speed/heading input corresponds to a moving obstacle that has right of way. |
| isStatic | A flag to indicate that speed/heading input corresponds to a static obstacle. |
| bestScore | In/out parameter |
| bestSpeed | Output parameter; changed only if the computed score is better than the bestScore input. |
|
protectedvirtual |
Adds all of the scoring functions. Simply adds together the scoring functions. To add a new scoring function in a plugin, override this function to add a new score, then add the result of the base combinedScore.
|
protectedvirtual |
|
protectedvirtual |
Compute a score for a given SpeedConstraint, i.e. constrained speed intervals at a certain heading. Applies the scoring functions to the intervals. Note that since the scoring functions are (currently) linear functions of speed, only the interval end points need be scored. In addition to the interval end points in the constraint, this function computes scores at the desired speed and the minimum and maximum feasible speeds.
|
protectedvirtual |
Compute a score for a given SpeedConstraint, i.e. constrained speed intervals at a certain heading. Applies the scoring functions to the intervals. Note that since the scoring functions are (currently) linear functions of speed, only the interval end points need be scored. In addition to the interval end points in the constraint, this function computes scores at the desired speed and the minimum and maximum feasible speeds.
|
protectedvirtual |
Compute a score for a given SpeedConstraint, i.e. constrained speed intervals at a certain heading. Applies the scoring functions to the intervals. Note that since the scoring functions are (currently) linear functions of speed, only the interval end points need be scored. In addition to the interval end points in the constraint, this function computes scores at the desired speed and the minimum and maximum feasible speeds.
|
protectedvirtual |
Compute a score for a given SpeedConstraint, i.e. constrained speed intervals at a certain heading. Applies the scoring functions to the intervals. Note that since the scoring functions are (currently) linear functions of speed, only the interval end points need be scored. In addition to the interval end points in the constraint, this function computes scores at the desired speed and the minimum and maximum feasible speeds.
|
protectedvirtual |
Compute a score for a given SpeedConstraint, i.e. constrained speed intervals at a certain heading. Applies the scoring functions to the intervals. Note that since the scoring functions are (currently) linear functions of speed, only the interval end points need be scored. In addition to the interval end points in the constraint, this function computes scores at the desired speed and the minimum and maximum feasible speeds.
|
protectedvirtual |
Compute a score for a given SpeedConstraint, i.e. constrained speed intervals at a certain heading. Applies the scoring functions to the intervals. Note that since the scoring functions are (currently) linear functions of speed, only the interval end points need be scored. In addition to the interval end points in the constraint, this function computes scores at the desired speed and the minimum and maximum feasible speeds.
|
protectedvirtual |
Computes the coordinate transforms for the calculations this tick. Fills in myLocalToHorizBodyXform.
|
protectedvirtual |
Computes a 2D rotation matrix that can be used to pre-multiply a topo coordinate to make it relative to an angle. I.e., if V(x,y) is a topo vector with the given xy values, matrix * V = V'(x',y') is a vector in a coordinate system that is rotated by angle from topo.
|
protectedvirtual |
Mark vehicle obstacle in myVehiclesToYieldTo based on whether they are approaching the desired heading line from the side that has right of way.
|
protectedvirtual |
Computes the maximum speed the ownship can drive and still pass behind a moving obstacle at the given distance. Uses myBrakingLimit. The implementation does not use the timeLimit, because the fastest speed possible is achieved by going fast, decelerating at myBrakingLimit, and stopping at distance before the timeLimit. Other approaches are possible though.
|
protectedvirtual |
Computes the minimum speed the ownship can drive and still pass ahead of a moving obstacle. This is just an estimate, as several factors are unknown or difficult to calculate. For example, the ownship will take some time to accelerate, and its acceleration ability is reduced as speed increases. This function computes the minimum speed such that if the ownship accelerates at myAccelerationLimit for timeLimit, it will go distance, which is the minimum distance it has to go in timeLimit.
|
protectedvirtual |
Computes the turn radius to use for turns in collision avoidance computations. Implicitly uses the current speed and the lateral acceleration limit set in the call to steeringAndSpeedThroughObstacles.
|
protectedvirtual |
Returns the maximum acceleration that the vehicle can generate, considering its maxAcceleration parameter, soil and weather, and maxSpeed.
|
protectedvirtual |
Returns the maximum acceleration that the wheels/tracks can provide given the soil and weather. A positive value.
|
protectedvirtual |
|
protectedvirtual |
Computes the coordinate transforms for the calculations this tick. Fills in myLocalToHorizBodyXform.
|
protectedvirtual |
Computes the coordinate transforms for the calculations this tick. Fills in myLocalToHorizBodyXform.
|
protectedvirtual |
Computes the coordinate transforms for the calculations this tick. Fills in myLocalToHorizBodyXform.
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
Limit from desired acceleration input and physical limits.
|
protected |
Highest (forward) acceleration physically possible now.
|
protected |
Highest braking acceleration, limited by desired acceleration and physical limits. Negative.
|
protected |
Highest speed that can be achieved in 1 second given the desired acceleration and the physical limit of myAccelerationLimit.
|
protected |
Lowest speed that can be achieved in 1 second given the limitations of myBrakingLimit.
|
protected |
Fastest speed to use for tight turns.
|
protected |
Used in task visualizations.
|
protected |
Speed in direction of movement.
|
protected |
Heading of movement. This is 180 degrees from heading if moving backwards.
|
protected |
If right of way priorities are being used, this is a set of vehicle obstacles that have the right of way, it are approaching the line to the destination from the direction defined by RoW. It is cleared and set every tick for use in action selection logic.
|
protected |
Lists of vehicle obstacles found last time we looked.
|
protected |
|
protected |
Remembers embarkation state last tick. When this changes, the list of vehicle obstacles is refreshed.
|
protected |
Used for feature set for last query. Held until it is loaded, and then not needed until the next query.
|
protected |
These record the state of the entity when it made the last feature query. A new query is made when the state changes more than a threshold.
|
protected |
|
protected |
Set true when a query has been made through the terrain interface for a feature set with obstacle features.
|
protected |
Set true when a feature set has been loaded and the obstacles put into myCachedFeatureObstacles.
|
protected |
The features found the last time the terrain was queried. Vertices of lines, in local coordinates. The lines are typically area boundaries, with the first and last vertex the same location. Otherwise, an open line.
The offsetVertices in these FeatureObstacleData structures contain local coordinates instead of horizontal-body coordinates.
|
protected |
A coordinate transformation from local coordinates to a topo coordinate system that is rotated to the heading of the entity. I.e., body coordinates if the entity pitch and roll are zero.
|
protected |
Set by calling controller.
|
protected |
|
protected |
|
protected |
|
protected |
For task visualization. Make these available to the calling controller. TODO.
|
protected |