OpenSim  OpenSim 3.2
 All Classes Namespaces Functions Variables Typedefs Enumerations Enumerator Friends Pages
OpenSim::ActuatorForceTarget Class Reference

A Computed Muscle Control (CMC) optimization target for controlling dynamic systems whose actuators may be themselves governed by differential equations, meaning there may be non-linear behavior and delays in force production. More...

#include <ActuatorForceTarget.h>

Inheritance diagram for OpenSim::ActuatorForceTarget:
OpenSim::OptimizationTarget

Public Member Functions

virtual ~ActuatorForceTarget ()
 
 ActuatorForceTarget (int aNX, CMC *aController)
 
void setStressTermWeight (double aWeight)
 
bool prepareToOptimize (SimTK::State &s, double *x)
 
int objectiveFunc (const SimTK::Vector &aF, bool new_coefficients, SimTK::Real &rP) const
 
int gradientFunc (const SimTK::Vector &x, bool new_coefficients, SimTK::Vector &gradient) const
 
- Public Member Functions inherited from OpenSim::OptimizationTarget
 OptimizationTarget (int aNX=0)
 
void setNumParameters (const int aNX)
 
void setDX (double aVal)
 
void setDX (int aIndex, double aVal)
 
double getDX (int aIndex)
 
double * getDXArray ()
 
void validatePerturbationSize (double &aSize)
 
virtual void printPerformance (double *x)
 

Additional Inherited Members

- Static Public Member Functions inherited from OpenSim::OptimizationTarget
static int CentralDifferencesConstraint (const OptimizationTarget *aTarget, double *dx, const SimTK::Vector &x, SimTK::Matrix &jacobian)
 
static int CentralDifferences (const OptimizationTarget *aTarget, double *dx, const SimTK::Vector &x, SimTK::Vector &dpdx)
 
static int ForwardDifferences (const OptimizationTarget *aTarget, double *dx, const SimTK::Vector &x, SimTK::Vector &dpdx)
 
- Static Public Attributes inherited from OpenSim::OptimizationTarget
static const double SMALLDX
 Smallest allowable perturbation size for computing derivatives. More...
 
- Protected Attributes inherited from OpenSim::OptimizationTarget
Array< double > _dx
 Perturbation size for computing numerical derivatives. More...
 

Detailed Description

A Computed Muscle Control (CMC) optimization target for controlling dynamic systems whose actuators may be themselves governed by differential equations, meaning there may be non-linear behavior and delays in force production.

The performance criterion is a sum of two terms. The first term is the sum of actutor stresses squared. The second term is a weighted sum of terms designed to achieve a set of desired accelerations that will drive the dynamic model toward a set of target kinematic trajectories. The desired accelerations are according to the Proportional Derivative (PD) control law.

Because the performance criterion is simply a long sum of things, achieving the desired accelerations can be compromised in order to reduce the forces (or moments) applied by the actutors. This feature is what is exploited by the Residual Reduction Algorithm.

Although this target is fairly robust (meaning the optimizer should not fail to find a solution), it is a bit slower and less accurate than the "fast" target

See Also
ActuatorForceTargetFast.
Version
1.0
Author
Frank C. Anderson

Constructor & Destructor Documentation

virtual OpenSim::ActuatorForceTarget::~ActuatorForceTarget ( )
virtual
OpenSim::ActuatorForceTarget::ActuatorForceTarget ( int  aNX,
CMC aController 
)

Member Function Documentation

int OpenSim::ActuatorForceTarget::gradientFunc ( const SimTK::Vector &  x,
bool  new_coefficients,
SimTK::Vector &  gradient 
) const
int OpenSim::ActuatorForceTarget::objectiveFunc ( const SimTK::Vector &  aF,
bool  new_coefficients,
SimTK::Real &  rP 
) const
bool OpenSim::ActuatorForceTarget::prepareToOptimize ( SimTK::State &  s,
double *  x 
)
virtual

Reimplemented from OpenSim::OptimizationTarget.

void OpenSim::ActuatorForceTarget::setStressTermWeight ( double  aWeight)

The documentation for this class was generated from the following file: