VR-Forces 4.0.4 Class Documentation
include/vrfmodel/fixWngPltCtl.h
Go to the documentation of this file.
00001 /*******************************************************************************
00002 ** Copyright (c) 1999-2000 MAK Technologies, Inc.
00003 ** All rights reserved.
00004 *******************************************************************************/
00005 /*******************************************************************************
00006 ** $RCSfile: fixWngPltCtl.h,v $ $Revision: 1.48 $ $State: Exp $
00007 *******************************************************************************/
00008 
00011 
00014 
00015 #ifndef fixWngPltCtl_H_
00016 #define fixWngPltCtl_H_
00017 
00018 #include "vrfobjcore/singleTaskControllerComponent.h"
00019 #include <matrix/LibMatrix.h>
00020 
00021 class DtString;
00022 class DtSimManager;
00023 class DtConstrainedAnalogOutputPort;
00024 class DtConstrainedDualAxisAnalogOutputPort;
00025 class DtBooleanOutputPort;
00026 class DtFixedWingEntityStateRepository;
00027 class DtTaskMessage;
00028 class DtFixedWingFlightPSR;
00029 
00032 const double DtTurningSpeedTol = 0.0556;
00033 
00037 const double DtLandingTolerance = 1.0;
00038 
00045 #include "vrfmodel/vrfmodelDefines.h"
00046 class DT_DLL_vrfmodel DtFixedWingPilotController : public DtSingleTaskControllerComponent
00047 {
00048 
00049 public:
00050 
00053    DtFixedWingPilotController(const DtString& name, 
00054       DtVrfObject* owner,
00055       DtSimManager* simManager, 
00056       DtComponentDescriptor* desc = 0,
00057       DtReaderWriterRegistry* parentRegistry = 0);
00058 
00060    virtual ~DtFixedWingPilotController();
00061 
00063    virtual bool init();
00064 
00068    virtual void tick();
00069 
00072    virtual DtString type() const;
00073 
00076    virtual void clearTask();
00077 
00092    virtual void taxiTo(const DtVector& destination, double speed);
00093 
00100    virtual void taxi(double speed, double turnRate);
00101 
00105    virtual double calculateSteering(double turnAngle) const;
00106 
00109    virtual double approximateThrottle(double speed);
00110    
00113    virtual double calculateCurrentBrakingDistance() const;
00115 
00116 
00129    virtual void flyTo(const DtVector& destination, double speed);
00130 
00136    virtual void flyToDirect(const DtVector& destination, double speed);
00137 
00146    virtual void fly(double speed, double turnRate, double climbRate);
00147 
00156    virtual void flyFixedPitch(double speed, double turnRate, double desiredPitch);
00157 
00183    virtual void circle(const DtVector& center, double radius, double speed, 
00184       double altitude, bool clockwise = true);
00185 
00188    virtual double calcControlForRoll(double rollRate);
00189 
00197 
00200    virtual double calcControlForThrottle(double speed, bool& deployFlaps);
00201 
00205    virtual void calcControlForTurnAndClimb(double turnRate, double climbRate, 
00206        double& stickX, double& pedal);
00207 
00212    virtual void calcControlForTurnAndPitch(double turnRate, double desiredPitch, 
00213       double& stickX, double& pedal);
00214 
00221    virtual double calculateClimbRate(double altitude, double climbTime) const;
00222 
00228    // turn rate = (heading change / max-turnrate-cutoff-angle) *
00229    //    max-pitch-rate
00233    virtual double calculateTurnRate(double turnAngle) const;
00234 
00237    // roll angle = ATAN((speed * turn rate * 0.5)  /  9.8)
00238    virtual double calculateRollAngle(double turnRate, double speed)
00239        const;
00240 
00243    virtual double calculateRollRate(double rollAngle);
00244 
00246 
00260    virtual void calculateNormalizedBodyVelocity();
00261 
00267    virtual void calculateLocalAngularVelocity();
00268 
00274    //     mySpeedRatioSquared
00275    virtual void calculateSpeedRatioSquared();
00276 
00283    virtual void initializeControllerForTick();
00284 
00287    virtual bool createFixedWingControlPortGroup();
00288    virtual bool createThrottlePort();
00289    virtual bool createStickPort();
00290    virtual bool createPedalPort();
00291    virtual bool createBrakePort();
00292 
00294    virtual bool createFlapsDeployedPort();
00295 
00297    virtual DtConstrainedAnalogOutputPort* throttlePort();
00298    virtual DtConstrainedDualAxisAnalogOutputPort*  stickPort();
00299    virtual DtConstrainedAnalogOutputPort* pedalPort();
00300    virtual DtConstrainedAnalogOutputPort* brakePort();
00301    virtual DtBooleanOutputPort* flapsDeployedPort();
00302 
00304    virtual void setMaxThrustAcceleration(double maxThrustAcceleration);
00305 
00307    virtual void setTakeOffDir(const DtVector& takeOffDir);
00308    virtual const DtVector& takeOffDir() const;
00309 
00312    virtual DtReal maxTurningGs() const;
00313    virtual DtReal maxTurnRateCutoffAngle() const;
00314    virtual DtReal maxTaxiingTurnSpeed() const;
00315    virtual DtReal taxiingNearDistance() const;
00316    virtual DtReal taxiingAtDistance() const;
00317    virtual DtReal taxiingApproachSpeed() const;
00318    virtual DtReal maxPitchAngle() const;
00319    virtual DtReal timeToTargetAltitude() const;
00321 
00325    static DtSimComponent * creator(const DtString& name, 
00326       DtVrfObject* owner,
00327       DtSimManager* simManager, 
00328       DtComponentDescriptor* desc = 0,
00329       DtReaderWriterRegistry* parentRegistry = 0);
00330 
00331 protected:
00332 
00334    virtual bool createPorts();
00335 
00337    virtual bool createPortGroups();
00338 
00346    virtual void lookupAndCacheProcessSR();
00347 
00352    virtual bool postAddComponentsInit();
00353 
00356    virtual bool decideToGiveUpTask() const;
00357 
00358 protected:
00359    
00361    DtFixedWingPilotController();
00362 
00364    DtFixedWingPilotController(const DtFixedWingPilotController & 
00365       orig);
00366 
00368    const DtFixedWingPilotController & operator=(const 
00369       DtFixedWingPilotController & orig);
00370 
00371 protected:
00372 
00373    DtFixedWingEntityStateRepository* myFixedWingEntityState;
00374 
00377 
00380    DtOutputPortGroup* myFixedWingControlPortGroup;
00381    
00387    DtConstrainedAnalogOutputPort* myThrottlePort;
00388    
00394    DtConstrainedDualAxisAnalogOutputPort* myStickPort;
00395    
00401    DtConstrainedAnalogOutputPort* myPedalPort;
00402    
00408    DtConstrainedAnalogOutputPort* myBrakePort;
00409    
00415    DtBooleanOutputPort* myFlapsDeployedPort;
00416    
00418 
00424    DtFixedWingFlightPSR*              myProcessState;
00425 };
00426 #endif

Document ID: Generated on Fri Jun 29 16:33:32 EDT 2012 from SVN revision 116588
Copyright © 2005-2012 VT MÄK Inc. All Rights Reserved (www.mak.com)