VR-Forces 5.0.3 Developer's Guide
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
simpleRotaryWingPilot.h
Go to the documentation of this file.
1 /*******************************************************************************
2 ** Copyright (c) 2006 MAK Technologies, Inc.
3 ** All rights reserved.
4 *******************************************************************************/
5 
8 
11 
12 #pragma once
13 
15 #include <matrix/vlDcm.h>
16 #include <matrix/vlVector.h>
18 
19 class DtString;
22 class Coordinate_System;
23 class DtVectorInputPort;
25 
37 {
38 public:
39 
42  DtSimpleRotaryWingPilot(const DtString& name,
43  DtLocalObject* owner,
44  DtSimulationServices* simManager,
45  DtComponentDescriptor* desc = 0,
46  DtReaderWriterRegistry* parentRegistry = 0);
47 
49  virtual ~DtSimpleRotaryWingPilot();
50 
53  virtual bool init();
54 
55  virtual bool createPorts();
56 
59  virtual const char* type() const;
60 
62  virtual void tick();
63 
67  static DtSimComponent * creator(const DtString& name,
68  DtLocalObject* owner,
69  DtSimulationServices* simManager,
70  DtComponentDescriptor* desc = 0,
71  DtReaderWriterRegistry* parentRegistry = 0);
72 
73  virtual bool taskVisualizationsActive() const;
74  virtual void updateTaskVisualizations();
75 
76 private:
79 
82 
85 
86 protected:
99  virtual void computeDesiredLinearAccel(DtVector& desiredHorizBodyAccel,
100  double& desiredYawAccel);
101 
112  virtual void computeDesiredTopoAccelToPosition(const double maxAccel, const double period,
113  DtVector& desiredTopoAccel, double& yawAccel);
114 
120  virtual void computeDesiredTopoAccelToVelocity(const DtVector& desiredVel, const double period,
121  DtVector& desiredTopoAccel);
122 
130  virtual double desiredHeadingWithNoMoveGoal();
131 
134  virtual void computeDesiredTopoAccelToHeading(const double desiredHeading, const double desiredSpeed,
135  const double period, DtVector& desiredTopoAccel);
136 
138 
140  virtual void checkLandNoFuel();
141 
150  virtual void findEarthCurveDeltaPosition(DtVector fromPosition,
151  DtVector toPosition, DtVector& deltaPosition,
152  const Coordinate_System* coordinateSystem);
153 
157  virtual void limitAccelFromMaxForwardSpeed(const DtVector& topoVelocity,
158  const double speedAtGoal,
159  const double period,
160  DtVector& desiredTopoAccel);
161 
171  //virtual double limitAccelFromMaxAcceleration(const double desiredAccel);
172 
178  virtual void limitAccelFromMaxAcceleration(DtVector& horizBodyAccel);
179 
184  virtual void computeTopoDeltaPosition(DtVector& topoDeltaPosition);
185 
189  virtual void computeTopoDesiredEndVelocity(const DtVector& topoXyDeltaPos,
190  DtVector& topoXyEndDirection,
191  double& topoXyEndSpeed);
192 
199  virtual void computeAccelerationTowardGoal(const DtVector& topoCurrentXyVel,
200  const DtVector& topoVelDirAtGoalPt, const double horizDesSpeedAtGoal,
201  const DtVector& topoHorizDeltaPos, const double period,
202  double& maxAccelTowardGoal);
203 
208  virtual void limitAccelForFixedFlightSlope(DtVector& topoDeltaPos,
209  DtVector&topoCurrentXyVel, double& maxAccel);
210 
214  virtual void computeAccelerationPerpendicularToGoal(const DtVector& topoCurrentXyVel,
215  const DtVector& topoVelDirAtGoalPt,
216  const DtVector& horizDeltaPos, const double maxAccel, const double delayTime,
217  double& maxAccelTowardGoal);
218 
226  virtual void computeVerticalAcceleration(const DtVector& topoDeltaPos,
227  const double downSpeed,
228  const double period,
229  double& desiredZAccel);
230 
244  virtual double accelFromConstraintsAvoidingOvershoot(
245  const double maxDecel, const double maxAccel, const double period, double speed,
246  double targetDist, const double speedAtTarget);
247 
252  virtual bool isCloseToGoalPosition(const DtVector& topoDeltaPos);
254 
265  virtual void setCollectiveAndCyclicFromAccel(const DtVector& desiredAcceleration);
266 
267  virtual void setPedalFromDesiredYawAcceleration(const double yawAccel);
268 
270  virtual void setThrottle();
271 
273 
276  virtual DtReal terrainAvoidanceVelocity() const;
277 
282  virtual void calculateTargetAlignmentAngle(DtReal& alignmentAngle) const;
283 
286  virtual void computeYawAccelerationToHeading(const double headingToPoint,
287  const double period,
288  double& yawAccel);
289 
291  virtual void getTransformationMatrices();
292 
295 
303  virtual double stationaryGoalSpeedThreshold(){ return 0.5; }
304 
309  virtual double catchUpSpeedFactor(){ return 1.5; }
310 
311  virtual void lookupAndCacheProcessSR();
312 
313  virtual bool postAddComponentsInit() override;
314 
315  protected:
317 
318  DtVectorInputPort* myTargetLocationInputPort;
325 
328 
330  DtDcm myBodyToRef;
331 
334 
337 
340 
342 
343 public:
344 
348  static DtReal xyDistSquared(DtVector a, DtVector b);
349 
350 };
#define DT_DLL_vrfmodel
This file is used to determine how to build.
Definition: vrfmodelDefines.h:24
DtRotaryWingPilotDescriptor * myPilotDescriptor
A pointer to the descriptor for this controller.
Definition: simpleRotaryWingPilot.h:327
virtual bool taskVisualizationsActive() const
Returns true if task visualizations are currently active for this component. Default behavior is to r...
virtual void tick()
Reads the data from the guidance ports into the state repository.
DtDcm myBodyToRef
The local orientation matrix.
Definition: simpleRotaryWingPilot.h:330
virtual double stationaryGoalSpeedThreshold()
Constants.
Definition: simpleRotaryWingPilot.h:303
Definition: rotaryWingFlightPSR.h:29
A readable, writable type whose name is the name of a component and that has a list of component name...
Definition: componentDescriptor.h:49
DtRotaryWingPilotDescriptor is a component descriptor for helicopter flight involving destination poi...
Definition: rotaryWingPilotDescriptor.h:25
DtSimpleRotaryWingPilot is a controller that represents the autopilot aspects of a rotary-wing pilot...
Definition: simpleRotaryWingPilot.h:36
Definition: readerWriterRegistry.h:39
const DtRotaryWingPilotController & operator=(const DtRotaryWingPilotController &orig)
assignment operator; not implemented
virtual bool createPorts()
Overridden to create rotary wing ports.
Contains class declarations for DtVectorInputPort, DtVectorOutputPort, and DtVectorPortData.
Definition: vectorIOPort.h:27
virtual void updateTaskVisualizations()
Called to update task visualizations after every tick. Implemented by subclasses. ...
Definition: simComponent.h:436
Definition: coordSystem.h:54
virtual bool init()
Overridden to initialize myRotaryWingEntityState.
DtDcm myTopoToBodyHeadingDcm
The 2D rotation about the yaw axis only.
Definition: simpleRotaryWingPilot.h:339
DtRotaryWingFlightPSR * myProcessState
Definition: simpleRotaryWingPilot.h:341
DtDcm myLocalToTopoDcm
The local to topographic coordinate transformation matrix.
Definition: simpleRotaryWingPilot.h:333
virtual double catchUpSpeedFactor()
When moving toward a moving goal, how much faster than the goal&#39;s speed the entity is allowed to move...
Definition: simpleRotaryWingPilot.h:309
DtDcm myTopoToLocalDcm
The topographic to local coordinate transformation matrix.
Definition: simpleRotaryWingPilot.h:336
Central access point of all non-object-specific the services and managers that are available for use ...
Definition: simulationServices.h:90
The DtSimComponent class is the base class for the entire simulation model component hierarchy...
Definition: simComponent.h:70
virtual const char * type() const
Returns a string identifies the class type of component. Type values are defined in compTypes...
static DtSimComponent * creator(const DtString &name, DtLocalObject *owner, DtSimulationServices *simManager, DtComponentDescriptor *desc=0, DtReaderWriterRegistry *parentRegistry=0)
The DtRotaryWingPilotController class creates the rotary-wing-control port group needed to control ro...
Definition: rotaryWingPilotController.h:38
virtual bool postAddComponentsInit()
Calls enableTaskTypes()
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 Thu Jun 1 17:58:13 EDT 2023 from SVN revision 255404
Copyright © 2005-2021 MAK Technologies. All Rights Reserved (www.mak.com)