VR-Forces 5.0.1 Developer's Guide
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
fixedWingFollowEntityController.h
Go to the documentation of this file.
1 /*******************************************************************************
2 ** Copyright (c) 2003 MAK Technologies, Inc.
3 ** All rights reserved.
4 *******************************************************************************/
5 
8 
11 #pragma once
12 
13 
15 
16 #include <vlutil/vlString.h>
17 #include <matrix/vlVector.h>
18 
20 class DtSimMessage;
21 class DtLocalObject;
22 
33 {
34 
35 public:
36 
40  DtLocalObject* owner,
41  DtSimulationServices* simManager,
42  DtComponentDescriptor* desc = 0,
43  DtReaderWriterRegistry* parentRegistry = 0);
46 
49  virtual const char* type() const;
50 
54  virtual void tick();
55 
57  virtual void doMoving();
58  virtual void doFlying();
59  virtual void doTaxiing();
60 
64  static void followEntityCallback(DtSimMessage * msg, void * usrData);
65  virtual void processFollowEntityTask(DtSimMessage * msg);
66 
67  virtual DtUUID entityToFollow() const;
68  virtual void setEntityToFollow(const DtUUID& entity);
69 
70  virtual const DtVector& offsetVector() const;
71  virtual void setOffsetVector(const DtVector& offsets);
72 
76  static DtSimComponent * creator(const DtString& name,
77  DtLocalObject* owner,
78  DtSimulationServices* simManager,
79  DtComponentDescriptor* desc = 0,
80  DtReaderWriterRegistry* parentRegistry = 0);
81 
82 protected:
86 
89  orig);
90 
94 
96  virtual void registerTaskMsgCallbacks();
97 
102  virtual bool setupControlPoint();
103 
117  virtual bool getCurrentLeaderState(DtVector& localPosition,
118  DtVector& localVelocity, DtTaitBryan& topoOrientation,
119  DtVector& topoRotationRate);
120 
122  virtual double findDesiredFlyingSpeed(
123  const double leaderSpeed,
124  const double forwardPositionError);
125 
131  virtual double flyingControlSpeed(double targetSpeed,
132  double targetDistance);
133 
149  virtual double calculateControlTurnRate(
150  double desiredHeading, double distanceFromLine, double dt);
151 
160  virtual double calculateControlClimbRate(double altitudeDiff,
161  DtVector& topoEntityCurrentVelocity,
162  DtVector& topoNextTickVelocity,
163  double dt);
164 
184  virtual double desiredHeading(double estimatedTurnRadius,
185  DtVector& topoEntityToGoal,
186  DtVector& topoGoalHorizDirection,
187  DtVector& topoEntityVelocity, DtVector& topoNextVelocity,
188  double dt);
189 
193  DtVector predictedMove(const DtVector& vInitial,
194  const DtVector& vFinal, double dt);
195 
197  virtual double findDesiredSpeed();
198 
199  virtual double lastHeadingError() const;
200  virtual void setLastHeadingError(const double error);
201 
204  virtual double integratedHorizontalError() const;
205  virtual void setIntegratedHorizontalError(const double error);
208  virtual void updateIntegratedHorizontalError(const double currentError,
209  const double dt, const double decayRate);
211 
213 
214 protected:
215 
219 
224  double myStationSpeed;
228 
231 
235 
238 
242  std::vector<DtVector> myVisLine;
244  {
250  nearLineRegion
251  };
252  enum approachRegion myApproachState;
254 };
255 
void updateTaskVisualizations()
update visualizations
UUID is a unique ID wrapper class.
Definition: rwUUID.h:226
#define DT_DLL_vrfmodel
This file is used to determine how to build.
Definition: vrfmodelDefines.h:24
DtVector myStationLocalVelocity
Calculations saved for the duration of a tick.
Definition: fixedWingFollowEntityController.h:223
DtFixedWingFollowEntityController is a controller that models follow behavior for fixed-wing entities...
Definition: fixedWingFollowEntityController.h:32
virtual void tick()
Calculate new control values. If myWaitingToSetMovementStatus is set in myProcessState, then setMovementStatusFromRoute is called to see if the required terrain data is now available.
Definition: fixedWingFollowEntityController.h:247
Definition: fixedWingFollowEntityController.h:246
DtFixedWingMoveToController & operator=(const DtFixedWingMoveToController &orig)
assignment operator
virtual void doTaxiing()
Determines if the entity is near its goal. If it is, it sets the finishing flag to true...
DtVector myStationLocalPosition
Calculations saved for the duration of a tick.
Definition: fixedWingFollowEntityController.h:222
virtual void registerTaskMsgCallbacks()
Overrides this so it can register its interest in MoveTo commands and all other messages described in...
double myIntegratedHorizontalError
Accumulated horizontal offset error, decayed over time, for integral control.
Definition: fixedWingFollowEntityController.h:234
std::vector< DtVector > myVisLine
Temporary variables (updated each tick) that support task visualization.
Definition: fixedWingFollowEntityController.h:242
DtSimObjectReference myEntityPointer
Set fresh each frame by setupControlPoint.
Definition: fixedWingFollowEntityController.h:217
static DtSimComponent * creator(const DtString &name, DtLocalObject *owner, DtSimulationServices *simManager, DtComponentDescriptor *desc=0, DtReaderWriterRegistry *parentRegistry=0)
The DtSimObjectReference is a shared pointer that can be used amongst many object for access to the u...
Definition: simObjectReference.h:26
A readable, writable type whose name is the name of a component and that has a list of component name...
Definition: componentDescriptor.h:49
double myStationSpeed
Calculations saved for the duration of a tick.
Definition: fixedWingFollowEntityController.h:224
Definition: readerWriterRegistry.h:39
Definition: fixedWingFollowEntityController.h:248
DtMovementSimObjectFacade myEntityPointerMovementSimObjectFacade
Definition: fixedWingFollowEntityController.h:218
double myLastHeadingError
Error from last tick, for derivative control.
Definition: fixedWingFollowEntityController.h:230
bool myGaveLeaderStateWarning
Remember if a warning was given about the leader state.
Definition: fixedWingFollowEntityController.h:237
DtTaitBryan myStationTopoOrientation
From velocity.
Definition: fixedWingFollowEntityController.h:225
File: simMsg.h.
Definition: simMessage.h:35
Definition: asyncJobServer.h:39
virtual double findDesiredSpeed()
This function returns the appropriate speed for the movement status of the FWE. The desired speed can...
virtual void doFlying()
Determines if the entity is five seconds or fewer away from being at the waypoint using the entity’s s...
DtFixedWingMoveToController is a controller used to model the movement of a fixed wing entity to a sp...
Definition: fixedWingMoveToController.h:28
approachRegion
Temporary variables (updated each tick) that support task visualization.
Definition: fixedWingFollowEntityController.h:243
Definition: fixedWingFollowEntityController.h:245
virtual const char * type() const
Returns a string identifies the class type of component. Type values are defined in compTypes...
Central access point of all non-object-specific the services and managers that are available for use ...
Definition: simulationServices.h:89
The DtSimComponent class is the base class for the entire simulation model component hierarchy...
Definition: simComponent.h:70
DtVector myStationTopoRotationRate
Calculations saved for the duration of a tick.
Definition: fixedWingFollowEntityController.h:226
virtual void doMoving()
Determines what state the entity is currently in and then calls the appropriate doMoving function for...
virtual bool setupControlPoint()
Sets up initial information for where the fixed wing wants to move to. Must call setMovementStatusFro...
Definition: fixedWingFollowEntityController.h:249
A locally simulated VRF object. Holds all internal and external data for the object, and provides access to both the current frame and next frame state data for the object. All current frame data is read-only, and next-frame data can be written to. No thread safety guarantees are made on this object during the simulation frame and it should only be accessed by the thread that is simulating the object.
Definition: localObject.h:86

Document ID: Generated on Mon Jun 20 00:38:30 EDT 2022 from SVN revision 244029
Copyright © 2005-2021 MAK Technologies. All Rights Reserved (www.mak.com)