Main Page   Class Hierarchy   Alphabetical List   Compound List   File List   Compound Members   Related Pages  

rdActuatedModel_SDFast.h

00001 // rdActuatedModel_SDFast.h
00002 //+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
00003 // Copyright 2002 Realistic Dynamics, Inc.
00004 // All rights reserved.
00005 //
00006 // Please do not read, copy, distribute, or use without permission.
00007 // Contact: Frank C. Anderson, fca@RealisticDynamics.com
00008 //+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
00009 #ifndef __rdActuatedModel_SDFast_h__
00010 #define __rdActuatedModel_SDFast_h__
00011 
00012 
00013 //=============================================================================
00014 // INCLUDES
00015 //=============================================================================
00016 #include <rdTools.h>
00017 #include "rdSDFastDLL.h"
00018 #include <rdModel.h>
00019 #include <rdActuatorSet.h>
00020 #include <rdContactForceSet.h>
00021 #include "rdSDFast.h"
00022 
00023 
00024 //=============================================================================
00025 //=============================================================================
00030 class RDSDFAST_API rdActuatedModel_SDFast : public rdSDFast
00031 {
00032 //=============================================================================
00033 // DATA
00034 //=============================================================================
00035 protected:
00036    rdActuatorSet *_actuatorSet;
00037    rdContactForceSet *_contactSet;
00038    
00039 //=============================================================================
00040 // METHODS
00041 //=============================================================================
00042 public:
00043    rdActuatedModel_SDFast(rdActuatorSet *aActuators,
00044       rdContactForceSet *aContacts);
00045    virtual ~rdActuatedModel_SDFast();
00046 private:
00047    void setNull();
00048    void constructControls();
00049    void constructStates();
00050    void constructPseudoStates();
00051    void constructNames();
00052 
00053 public:
00054    //--------------------------------------------------------------------------
00055    // GET AND SET
00056    //--------------------------------------------------------------------------
00057    // NAMES
00058    const char* getActuatorName(int aIndex) const;
00059    // ACTUATORS
00060    const rdActuatorSet* getActuatorSet() const;
00061    // CONTACTS
00062    const rdContactForceSet* getContactForceSet() const;
00063    // CONTROLS
00064    virtual void setControls(const double aX[]);
00065    // STATES
00066    virtual void setStates(const double aY[]);
00067    virtual void getStates(double rY[]) const;
00068    virtual double getState(int aIndex) const;
00069    // PSEUDOSTATES
00070    virtual void setPseudoStates(const double aYP[]);
00071    virtual void getPseudoStates(double rYP[]) const;
00072    virtual double getPseudoState(int aIndex) const;
00073 
00074    //--------------------------------------------------------------------------
00075    // ACTUATION
00076    //--------------------------------------------------------------------------
00077    virtual void computeActuation();
00078    virtual void computeActuatorStateDerivatives(double rDY[]);
00079    virtual void applyActuatorForce(int aID);
00080    virtual void applyActuatorForces();
00081    virtual double getActuatorForce(int aID) const;
00082    virtual double getActuatorSpeed(int aID) const;
00083    virtual double getActuatorPower(int aID) const;
00084 
00085    //--------------------------------------------------------------------------
00086    // CONTACT
00087    //--------------------------------------------------------------------------
00088    virtual void
00089       computeContact();
00090    virtual void
00091       applyContactForce(int aID);
00092    virtual void
00093       applyContactForces();
00094    virtual int
00095       getContactBodyA(int aID) const;
00096    virtual int
00097       getContactBodyB(int aID) const;
00098    virtual void
00099       setContactPointA(int aID,const double aPoint[3]);
00100    virtual void
00101       getContactPointA(int aID,double rPoint[3]) const;
00102    virtual void
00103       setContactPointB(int aID,const double aPoint[3]);
00104    virtual void
00105       getContactPointB(int aID,double rPoint[3]) const;
00106    virtual void
00107       getContactForce(int aID,double rF[3])const;
00108    virtual void
00109       getContactNormalForce(int aID,double rFP[3],double rFV[3],double rF[3])
00110       const;
00111    virtual void
00112       getContactTangentForce(int aID,double rFP[3],double rFV[3],double rF[3])
00113       const;
00114    virtual void
00115       getContactStiffness(int aID,const double aDX[3],double rDF[3]) const;
00116    virtual void
00117       getContactViscosity(int aID,const double aDV[3],double rDF[3]) const;
00118    virtual void
00119       getContactFrictionCorrection(int aID,double rDFFric[3]) const;
00120    virtual double
00121       getContactForce(int aID) const;
00122    virtual double
00123       getContactSpeed(int aID) const;
00124    virtual double
00125       getContactPower(int aID) const;
00126 
00127    //--------------------------------------------------------------------------
00128    // OPTIMIZATION
00129    //--------------------------------------------------------------------------
00130    virtual void promoteControlsToStates(const double aX[],double aDT);
00131 
00132    //--------------------------------------------------------------------------
00133    // DERIVATIVES
00134    //--------------------------------------------------------------------------
00135    int deriv(double t,double *xt,double *y,double *dy);
00136    int deriv(double t,double *xt,double *y,double *dqdt,double *dudt);
00137 
00138    //--------------------------------------------------------------------------
00139    // CALLBACKS
00140    //--------------------------------------------------------------------------
00141    void
00142       integBeginCallback(int i,double dt,double t,double *x,double *y,
00143        void *cd=NULL);
00144    void
00145       integStepCallback(double *xtPrev,double *yPrev,int i,double dt,
00146        double t,double *x,double *y,void *cd=NULL);
00147 
00148 
00149 //=============================================================================
00150 }; // END of class rdActuatedModel_SDFast
00151 //=============================================================================
00152 //=============================================================================
00153 
00154 
00155 #endif // #ifndef __rdActuatedModel_SDFast_h__

Generated on Wed Aug 20 02:17:05 2003 for Simulation Software by doxygen1.3