VR-Forces 4.6.1 Class Documentation
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
fixedWingPilotController.h
Go to the documentation of this file.
1 /*******************************************************************************
2 ** Copyright (c) 1999-2000 MAK Technologies, Inc.
3 ** All rights reserved.
4 *******************************************************************************/
5 
8 
11 
12 #pragma once
13 
15 #include <matrix/LibMatrix.h>
16 
17 class DtString;
18 class DtSimManager;
23 class DtTaskMessage;
25 
28 const double DtTurningSpeedTol = 0.0556;
29 
35 const double DtLandingTolerance = 2.5;
36 
45 {
46 
47 public:
48 
52  DtVrfObject* owner,
53  DtSimManager* simManager,
54  DtComponentDescriptor* desc = 0,
55  DtReaderWriterRegistry* parentRegistry = 0);
56 
58  virtual ~DtFixedWingPilotController();
59 
61  virtual bool init();
62 
66  virtual void tick();
67 
70  virtual const char* type() const;
71 
74  virtual void clearTask();
75 
90  virtual void taxiTo(const DtVector& destination, double speed);
91 
98  virtual void taxi(double speed, double turnRate);
99 
103  virtual double calculateSteering(double turnAngle) const;
104 
107  virtual double approximateThrottle(double speed);
108 
111  virtual double calculateCurrentBrakingDistance() const;
113 
114 
127  virtual void flyTo(const DtVector& destination, double speed, double maxTerrainAvoidanceLookaheadDist = -1);
128 
134  virtual void flyToDirect(const DtVector& destination, double speed, double maxTerrainAvoidanceLookaheadDist = -1);
135 
144  virtual void fly(double speed, double turnRate, double climbRate, double maxTerrainAvoidanceLookaheadDist = -1);
145 
154  virtual void flyFixedPitch(double speed, double turnRate, double desiredPitch, double maxTerrainAvoidanceLookaheadDist = -1);
155 
159  virtual double terrainAvoidancePitch(double speed, double desiredPitch, double maxTerrainAvoidanceLookaheadDist);
160 
163  virtual bool clearPathTo(const DtVector& localPosition);
164 
190  virtual void circle(const DtVector& center, double radius, double speed,
191  double altitude, bool clockwise = true);
192 
195  virtual double calcControlForRoll(double rollRate);
196 
210  virtual double calcControlForThrottle(double speed, bool& deployFlaps);
211 
223  virtual double decelerationLimitedClimbRate(double altitudeError,
224  double desiredSpeed, double finalClimbRate = 0.0);
225 
229  virtual void calcControlForTurnAndClimb(double turnRate, double climbRate,
230  double& stickX, double& pedal);
231 
236  virtual void calcControlForTurnAndPitch(double turnRate, double desiredPitch,
237  double& stickX, double& pedal, double rollRate = 0.0);
238 
245  virtual double calculateClimbRate(double altitude, double climbTime) const;
246 
252  // turn rate = (heading change / max-turnrate-cutoff-angle) *
253  // max-pitch-rate
260  virtual double calculateTurnRate(double turnAngle, double additionalTurnRate = 0) const;
261 
264  // roll angle = ATAN((speed * turn rate * 0.5) / 9.8)
265  virtual double calculateRollAngle(double turnRate, double speed)
266  const;
267 
270  virtual double calculateRollRate(double rollAngle, double turnRate);
271 
273 
287  virtual void calculateNormalizedBodyVelocity();
288 
294  virtual void calculateLocalAngularVelocity();
295 
301  // mySpeedRatioSquared
302  virtual void calculateSpeedRatioSquared();
303 
311  virtual void initializeControllerForTick();
312 
315  virtual bool createFixedWingControlPortGroup();
316  virtual bool createThrottlePort();
317  virtual bool createStickPort();
318  virtual bool createPedalPort();
319  virtual bool createBrakePort();
320 
322  virtual bool createFlapsDeployedPort();
323 
325  virtual DtConstrainedAnalogOutputPort* throttlePort();
326  virtual DtConstrainedDualAxisAnalogOutputPort* stickPort();
327  virtual DtConstrainedAnalogOutputPort* pedalPort();
328  virtual DtConstrainedAnalogOutputPort* brakePort();
329  virtual DtBooleanOutputPort* flapsDeployedPort();
330 
332  virtual void setMaxThrustAcceleration(double maxThrustAcceleration);
333 
335  virtual void setTakeOffDir(const DtVector& takeOffDir);
336  virtual const DtVector& takeOffDir() const;
337 
340  virtual DtReal maxTurningGsForTask() const;
341  virtual DtReal maxTurnRateCutoffAngle() const;
342  virtual DtReal maxTaxiingTurnSpeed() const;
343  virtual DtReal taxiingNearDistance() const;
344  virtual DtReal taxiingAtDistance() const;
345  virtual DtReal taxiingApproachSpeed() const;
346  virtual DtReal maxPitchAngle() const;
347  virtual DtReal timeToTargetAltitude() const;
349 
353  virtual double maxTurningGs() const;
354 
357  virtual bool terrainAvoidanceEnabled();
362  virtual double terrainAvoidanceLookaheadTime();
363 
367  static DtSimComponent * creator(const DtString& name,
368  DtVrfObject* owner,
369  DtSimManager* simManager,
370  DtComponentDescriptor* desc = 0,
371  DtReaderWriterRegistry* parentRegistry = 0);
372 
373 protected:
374 
376  virtual bool createPorts();
377 
379  virtual bool createPortGroups();
380 
388  virtual void lookupAndCacheProcessSR();
389 
394  virtual bool postAddComponentsInit();
395 
398  virtual bool decideToGiveUpTask() const;
399 
404  virtual void updateCurrentState();
405 
406 protected:
407 
410 
413  orig);
414 
418 
419 protected:
420 
422 
425 
429 
436 
443 
450 
457 
464 
466 
473 
486 
487 };

Document ID: Generated on Wed Jul 25 16:57:45 EDT 2018 from SVN revision 190790
Copyright © 2005-2018 VT MÄK. All Rights Reserved (www.mak.com)