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

suUTWalk8IATaylor Class Reference

A class that extends rdUTWalking8 to compute induced accelerations by Taylor expansion. More...

#include <suUTWalk8IATaylor.h>

Inheritance diagram for suUTWalk8IATaylor:

rdUTWalking8 rdSDFast rdModel List of all members.

Public Member Functions

 suUTWalk8IATaylor ()
 Default constructor.

virtual ~suUTWalk8IATaylor ()
 Destructor.

int getNC ()
 Get the number of components.

int getNIC ()
 Get the number of independent components.

int getNE ()
 Get the number of compliant elements.

char * getComponentName (int aC)
 GET THE NAME OF A COMPONENT.

void setPerformDecomposition (bool aTrueFalse, int aCapcity=100)
 Initialize new decomposition storage objects.

rdStorage ** getForceStorage ()
 Get the force decomposition storage.

void setApplyDecompression (bool aTrueFalse)
 Set whether or not to apply a decompression algorithm.

bool getApplyDecompression ()
 Get whether or not to apply a decompression algorithm.

void getStiffness (double aVel[3], double aPos[3], double aDFDP[3], double aDFDV[3])
 Create a new decomposition storage object.

void setStorageInterval (int aInterval)
 Set the storage interval.

int getStorageInterval ()
 Get the storage interval.

void setCorrectionInterval (int aInterval)
 Set the interval at which corrections are made to satisfy superposition.

int getCorrectionInterval ()
 Get the interval at which corrections are made to satisfy superposition.

void initializeForceElements (double aT, double aSFrc[][3])
 Initialize the force values for the component elements.

void initializeVelocityElements (double aT, double aSVel[][3])
 Initialize the velocities values for the component elements.

void applyActiveForces (int aC, double *aY)
 Apply appropriate component forces.

void decompStep (double aDT, double aDFDP[3], double aDFDV[3], double aAcc[3], double aV[3], double aF[3])
 Take a step forward in a decomposition component.

void compress (double aDT, double aDFDP, double aDFDV, double aAcc, double *aVe, double *aFe)
 Compress an element in a decomposition.

void decompress (double aFrcLast, double aFrc, double aVelLast, double aVel, double *aVe, double *aFe)
 Decompress an element in a decomposition.

void correctForSliding (double aAlpha[3], double aF[3])
 Correct spring components for sliding.

void correctForSliding (double aAlpha, double *aF)
 Correct spring components for sliding.

void computeHigherOrderDerivatives (int c, double t, double *dudt, double *ddudt, double *dddudt)
 Compute higher order derivatives of the accelerations.

virtual void store (double t, double *x, double *y)
 Store various model quantities.

void printStorage (const char *aPath=NULL, double dt=-1.0)
 Print storage.

void sumSpringForces ()
 Sum the separate spring forces to get the totals on each foot and on both feet.

void sumSpringVelocities ()
 Sum the components of the spring velocities to get the total velocities induced by the muscles and by all components.

void integBeginCallback (int i, double dt, double t, double *x, double *y, void *cd=NULL)
 At the beginning of an integration, initialize the decomposition.

void integStepCallback (double *xPrev, double *yPrev, int i, double dt, double t, double *x, double *y, void *cd=NULL)
 After each integration step, update the horizontal spring zeros and draw the model.


Static Public Member Functions

double CorrectForSuperposition (int aNEA, double *aActual, int aNC, int aNIC, int aNED, double *aDecomp, double *aCorrection, bool aComputeMeanCorrection=false)
 Correct force and velocity components to satisfy superposition.


Static Public Attributes

const int NC = NNC
const int NIC = NC - 2
const int NE = NNS
const int NEFOOT = 5
const int NEFRC = NE+3
const int CMUS = NX-1
const int CLIG = NX
const int CGRAV = NX+1
const int CCEN
const int CVEL = NX+2
const int CINER
const int CALLMUS = NX+3
const int CALL = NX+4

Protected Attributes

char ** _cNames
int _storageInterval
int _correctionInterval
int _drawInterval
bool * _contactEstablished
bool _applyDecompression
double _tolContact
double * _sfrcLast
double * _svelLast
double * _feContig
double *** _fe
double * _veContig
double *** _ve
double * _fbContig
double *** _fb
double _at [NNC][3]
double _ah [NNC][NNU][3]
rdStorage ** _feStore
rdStorage ** _veStore
rdStorage ** _aeStore
rdStorage ** _fbStore

Private Member Functions

void constructComponentNames ()
 Construct component names.

void allocateElementVectors ()
 Allocate element vectors.

void deleteStorage ()
 Delete storage objects.


Detailed Description

A class that extends rdUTWalking8 to compute induced accelerations by Taylor expansion.


Member Function Documentation

double suUTWalk8IATaylor::CorrectForSuperposition int  aNEA,
double *  aActual,
int  aNC,
int  aNIC,
int  aNED,
double *  aDecomp,
double *  aCorrection,
bool  aComputeMeanCorrection = false
[static]
 

Correct force and velocity components to satisfy superposition.

The actual simulated values are input in aActual, and the decomposition values are input in aDecomp. Based on the difference between the superposition of the decomposition values and the actual values, all decomposition values are shifted.

It is assumed that aDecomp holds the superposition of its components at aDecomp[NC-1][0][0], expressed here as if aDecomp were a three dimensional array.

The caller must also supply an aCorrection array that is used within this method and that returns the superpostion corrections that were used to make the corrections. aCorrection should be the same size as aActual.

If an error is encoutnered -1.0 is returned. Otherwise, if the flag aComputeMeanCorrection is set to true, the mean correction is returned, or, if aComputeError is set to false, 0.0 is returned.

int suUTWalk8IATaylor::getCorrectionInterval  ) 
 

Get the interval at which corrections are made to satisfy superposition.

If the correction interval is 0 or negative, no correction is performed.

void suUTWalk8IATaylor::setCorrectionInterval int  aInterval  ) 
 

Set the interval at which corrections are made to satisfy superposition.

If the correction interval is 0 or negative, no correction is performed.


The documentation for this class was generated from the following files:
Generated on Wed Aug 20 02:17:15 2003 for Simulation Software by doxygen1.3