API
4.2
For C++ developers

A Computed Muscle Control (CMC) optimization target for controlling dynamic systems whose actuators may be themselves governed by differential equations, meaning there may be nonlinear behavior and delays in force production. More...
Public Member Functions  
virtual  ~ActuatorForceTarget () 
ActuatorForceTarget (int aNX, CMC *aController)  
void  setStressTermWeight (double aWeight) 
bool  prepareToOptimize (SimTK::State &s, double *x) override 
int  objectiveFunc (const SimTK::Vector &aF, bool new_coefficients, SimTK::Real &rP) const override 
int  gradientFunc (const SimTK::Vector &x, bool new_coefficients, SimTK::Vector &gradient) const override 
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...  
A Computed Muscle Control (CMC) optimization target for controlling dynamic systems whose actuators may be themselves governed by differential equations, meaning there may be nonlinear behavior and delays in force production.
The performance criterion is a sum of two terms. The first term is the sum of actuator 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 actuators. 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

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

override 

override 

overridevirtual 
Reimplemented from OpenSim::OptimizationTarget.
void OpenSim::ActuatorForceTarget::setStressTermWeight  (  double  aWeight  ) 