VR-Forces 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() override;
50 
53  virtual bool init() override;
54 
55  virtual bool createPorts() override;
56 
59  virtual const char* type() const override;
60 
62  virtual void tick() override;
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 override;
74  virtual void updateTaskVisualizations() override;
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 
159  virtual void limitAccelFromMaxAcceleration(DtVector& horizBodyAccel);
160 
165  virtual void computeTopoDeltaPosition(DtVector& topoDeltaPosition);
166 
170  virtual void computeTopoDesiredEndVelocity(const DtVector& topoXyDeltaPos,
171  DtVector& topoXyEndDirection,
172  double& topoXyEndSpeed);
173 
178  virtual double limitedVerticalControlAcceleration(const double verticalControlAccel,
179  const double verticalError, const double currentVerticalVelocity, const double period);
180 
185  virtual bool isCloseToGoalPosition(const DtVector& topoDeltaPos);
186 
188 
199  virtual void setCollectiveAndCyclicFromAccel(const DtVector& desiredAcceleration);
200 
201  virtual void setPedalFromDesiredYawAcceleration(const double yawAccel);
202 
204  virtual void setThrottle();
205 
207 
211  void limitAccelForFixedFlightSlope(DtVector& topoEntToGoal,
212  DtVector& topoCurrentVel, double period, DtVector& desiredTopoAccel);
213 
216  virtual DtReal terrainAvoidanceVelocity() const;
217 
224  virtual void calculateTargetAlignmentAngle(DtReal& headingToTarget) const;
225 
228  virtual void computeYawAccelerationToHeading(const double headingToPoint,
229  const double period,
230  double& yawAccel);
231 
233  virtual void getTransformationMatrices();
234 
237  virtual void clearControlState();
238 
241 
249  virtual double stationaryGoalSpeedThreshold(){ return 0.5; }
250 
255  virtual double catchUpSpeedFactor(){ return 1.5; }
256 
257  virtual void lookupAndCacheProcessSR();
258 
259  virtual bool postAddComponentsInit() override;
260 
261  protected:
263 
264  DtVectorInputPort* myTargetLocationInputPort;
271 
274 
276  DtDcm myBodyToRef;
277 
280 
283 
286 
288 
294 
295 
296 public:
297 
301  static DtReal xyDistSquared(DtVector a, DtVector b);
302 
303 };
#define DT_DLL_vrfmodel
This file is used to determine how to build.
Definition: vrfmodelDefines.h:24
virtual const char * type() const override
Returns a string identifies the class type of component. Type values are defined in compTypes...
virtual bool postAddComponentsInit() override
Calls enableTaskTypes()
DtRotaryWingPilotDescriptor * myPilotDescriptor
A pointer to the descriptor for this controller.
Definition: simpleRotaryWingPilot.h:273
virtual bool taskVisualizationsActive() const
Returns true if task visualizations are currently active for this component. Default behavior is to r...
DtVector myLastIntegralDistError
PID state variables. In topo coordinates. Note – Integral control not employed currently.
Definition: simpleRotaryWingPilot.h:291
DtDcm myBodyToRef
The local orientation matrix.
Definition: simpleRotaryWingPilot.h:276
virtual double stationaryGoalSpeedThreshold()
Constants.
Definition: simpleRotaryWingPilot.h:249
Definition: rotaryWingFlightPSR.h:30
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
virtual bool createPorts() override
Overridden to create rotary wing ports.
const DtRotaryWingPilotController & operator=(const DtRotaryWingPilotController &orig)
assignment operator; not implemented
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:443
virtual void tick() override
Reads the data from the guidance ports into the state repository.
Definition: coordSystem.h:54
DtDcm myTopoToBodyHeadingDcm
The 2D rotation about the yaw axis only.
Definition: simpleRotaryWingPilot.h:285
virtual bool init() override
Overridden to initialize myRotaryWingEntityState.
DtRotaryWingFlightPSR * myProcessState
Definition: simpleRotaryWingPilot.h:287
DtDcm myLocalToTopoDcm
The local to topographic coordinate transformation matrix.
Definition: simpleRotaryWingPilot.h:279
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:255
DtDcm myTopoToLocalDcm
The topographic to local coordinate transformation matrix.
Definition: simpleRotaryWingPilot.h:282
Central access point of all non-object-specific the services and managers that are available for use ...
Definition: simulationServices.h:96
The DtSimComponent class is the base class for the entire simulation model component hierarchy...
Definition: simComponent.h:89
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
double myLastYawDerivativeControl
D state variable for yaw control.
Definition: simpleRotaryWingPilot.h:293
A locally simulated VRF object.
Definition: localObject.h:98

Document ID: Generated on Thu Oct 23 22:29:17 EDT 2025 from SVN revision 280951
Copyright © 2005-2024 MAK Technologies. All Rights Reserved (www.mak.com)