VR-Forces 4.0.4 Class Documentation
include/vrfmodel/autoAct.h
Go to the documentation of this file.
00001 /*******************************************************************************
00002 ** Copyright (c) 1999 MAK Technologies, Inc.
00003 ** All rights reserved.
00004 *******************************************************************************/
00005 /*******************************************************************************
00006 ** $RCSfile: autoAct.h,v $ $Revision: 1.64 $ $State: Exp $
00007 *******************************************************************************/
00008 
00011 
00013 
00014 #ifndef autoAct_H_
00015 #define autoAct_H_
00016 
00017 #include <vlpi/disEnums.h>
00018 #include "vrfobjcore/actCmpnt.h"
00019 #include "vrfobjcore/automotivePSR.h"
00020 
00021 class DtChord;
00022 class DtString;
00023 class DtSimManager;
00024 class DtGroundVehicleStateRepository;
00025 class boolPort;
00026 class DtVector;
00027 class DtTaitBryan;
00028 class DtSoilFactors;
00029 class DtAutomotivePSR;
00030 class DtAutomotiveActuatorDescriptor;
00031 class DtConstrainedIntegerInputPort;
00032 class DtConstrainedAnalogInputPort;
00033 class DtBooleanInputPort;
00034 class DtChordIntersectionRecord;
00035 class DtAttachedTerrain;
00036 
00037 
00047 #include "vrfmodel/vrfmodelDefines.h"
00048 class DT_DLL_vrfmodel DtAutomotiveActuatorComponent : public DtActuatorComponent
00049 {
00050 
00051 public:
00052 
00055    DtAutomotiveActuatorComponent(const DtString& name, DtVrfObject* owner,
00056       DtSimManager* simManager, 
00057       DtComponentDescriptor* desc = 0,
00058       DtReaderWriterRegistry* parentRegistry = 0);
00059 
00060 
00062    virtual ~DtAutomotiveActuatorComponent();
00063 
00065    virtual bool init();
00066 
00069    virtual DtString type() const;
00070 
00072    virtual void tick();
00073 
00077    static DtSimComponent * creator(const DtString& name, 
00078       DtVrfObject* owner,
00079       DtSimManager* simManager, 
00080       DtComponentDescriptor* desc = 0,
00081       DtReaderWriterRegistry* parentRegistry = 0);
00082 
00083 protected:
00084 
00086    virtual double maxSpeedSoilFactor() const;
00087 
00089    virtual double accelSoilFactor() const;
00090 
00092    virtual double decelSoilFactor() const;
00093 
00096    virtual DtSoilFactors* soilFactors() const;
00097 
00101    virtual bool disableControl();
00102 
00109    virtual void useFuel(double fuelUsed);
00110 
00116    virtual double fuelLeft() const;
00117 
00135    virtual void updateRepository(const DtVector & localPosition, 
00136       const DtVector & localVelocity, const DtVector & localAcceleration, 
00137       const DtTaitBryan & localOrientation, const DtVector& rotationalVelocity,
00138       double newHeading);
00139 
00140 
00145    virtual double calculateMaxDecelerationFromFriction(
00146       const DtVector& oldBodyVelocity);
00147 
00152    virtual double calculateMaxDecelerationFromBrake(double brake);
00153 
00158    virtual double calculateAccelerationFromEngine(double throttle, 
00159       DtAutoTransmissionGear gear);
00160 
00171    virtual double calculateDecelerationFromSoilType(
00172       const DtVector& oldBodyVelocity);
00173 
00179    virtual double calculateAccelerationFromSlope(double slope);
00180 
00194    virtual void calculateOrientationAndPosition(
00195       const DtVector& newLocalProjectedLocation, double newHeading, 
00196       DtDcm& newLocalOrientation, DtVector& newLocalPosition);
00197 
00203    virtual bool useHighFidelityGroundClamping() const;
00204    
00216    bool groundClamp(double heading, const DtVector& location, 
00217       DtAttachedTerrain& terrain, DtVector& newNormal);
00218 
00223    void groundClampHighFidelity(double heading, const DtVector& location, 
00224       DtAttachedTerrain& terrain, DtVector& newNormal);
00225 
00231    void groundClampLowFidelity(double heading, const DtVector& location, 
00232       DtAttachedTerrain& terrain, DtVector& newNormal);
00233 
00238    virtual double calculateHeading(double oldHeading, 
00239       const DtVector& oldBodyVelocity, DtAutoTransmissionGear gear, 
00240       double steering, double throttle, double dT);
00241 
00249    virtual DtVector calculateBodyAcceleration(double throttle, 
00250       DtAutoTransmissionGear gear, double brake, 
00251       const DtVector& oldBodyVelocity, double oldPitch, double dT);
00252 
00253    virtual DtVector calculateBodyVelocity(
00254      const DtVector& oldBodyVelocity, const DtVector& newBodyAcceleration,
00255      double dT);
00256 
00257    virtual DtVector calculateProjectedLocation(
00258       const DtVector& oldLocalPosition, const DtVector& newBodyAcceleration,
00259       const DtVector& oldBodyVelocity, double newHeading);
00260 
00269    virtual bool checkForTerrainCollisions() const;
00270 
00276    virtual bool foundTerrainCollision(double heading,
00277                                       const DtVector& oldLocalPosition, 
00278                                       const DtVector& newLocalPosition,
00279                                       DtChordIntersectionRecord 
00280                                       &collisionIntersectionRecord) const;
00281 
00291    virtual bool createMovementChord(DtChord& movementChord, 
00292                                     double heading,
00293                                     const DtVector& oldLocalPosition, 
00294                                     const DtVector& newLocalPosition) const;
00295 
00300    virtual bool terrainPassable(double heading,
00301                                 const DtChordIntersectionRecord&
00302                                 terrainIntersectionRecord) const;
00303 
00304 
00306    virtual double calculateMaxSpeed();
00307 
00310    virtual double calculateMaxAcceleration();
00311 
00315    virtual DtVector calculateRotationalVelocity(
00316       const DtDcm& newOrientation, 
00317       const DtDcm& oldOrientation, double dT);
00318 
00323    virtual double calculatePitch(const DtVector& localPosition, double heading, 
00324       const DtAttachedTerrain& terrain);
00325    
00329    virtual void calculateDirectionOfLinearMotion(
00330       const DtDcm& newLocalOrientation, const DtVector& newLocalPosition, 
00331       DtDcm& newLocalDirectionOfLinearMotion);
00332 
00336    virtual double getPitchAdjustedMaxSpeed(double maxSpeed, double pitch) const;
00337 
00339    virtual bool createPortGroups();
00340 
00342    virtual bool createPorts();
00343 
00349    virtual bool createPSR();
00350 
00354    virtual bool rotationalVelocityShouldBeClamped(const DtVector&
00355       bodyRotationalVelocity);
00356 
00358    virtual double steeringControlValue() const;
00360    virtual double throttleControlValue() const;
00362    virtual double brakeControlValue() const;
00364    virtual DtAutoTransmissionGear gearControlValue() const;
00366    virtual bool parkingBrakeControlValue() const;
00367 
00368 private:
00370    DtAutomotiveActuatorComponent();
00371 
00373    DtAutomotiveActuatorComponent(const DtAutomotiveActuatorComponent & orig);
00374 
00376    const DtAutomotiveActuatorComponent & operator=(const 
00377       DtAutomotiveActuatorComponent & orig);
00378 
00379 protected:
00380 
00383 
00389    DtConstrainedAnalogInputPort* myThrottlePort;
00390 
00396    DtConstrainedAnalogInputPort* mySteeringPort;
00397 
00403    DtConstrainedAnalogInputPort* myBrakePort;
00404 
00410    DtConstrainedIntegerInputPort* myGearPort;
00411 
00417    DtBooleanInputPort* myParkingBrakePort;
00418 
00422    DtInputPortGroup* myAutomotiveControlPortGroup;
00423 
00432    DtBooleanInputPort *    myMovementDisableInputPort;
00433 
00435 
00436    DtGroundVehicleStateRepository * myGroundVehicleState;
00437 
00440    DtAutomotivePSR* myProcessState;
00441 
00442    const DtAutomotiveActuatorDescriptor* myAutomotiveDescriptor;
00443 };
00444 
00445 #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)