OpenSim
OpenSim 3.0
|
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 <ActuatorForceTargetFast.h>
Public Member Functions | |
virtual | ~ActuatorForceTargetFast () |
ActuatorForceTargetFast (SimTK::State &s, int aNX, CMC *aController) | |
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 |
int | constraintFunc (const SimTK::Vector &x, bool new_coefficients, SimTK::Vector &constraints) const |
int | constraintJacobian (const SimTK::Vector &x, bool new_coefficients, SimTK::Matrix &jac) const |
CMC * | getController () |
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. | |
Protected Attributes inherited from OpenSim::OptimizationTarget | |
Array< double > | _dx |
Perturbation size for computing numerical derivatives. |
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 the sum of actutor stresses squared. The desired accelerations are achieved by imposing a set of constraints. The desired accelerations are computed according to the Proportional Derivative (PD) control in order to drive the dynamic model toward a set of target kinematic trajectories.
Because the desired accelerations are achieved by imposing a set of linear hard constraints, this optimiztion target can fail if the desired accelreations cannot be achieved. To insure that the constraints can be achieved, a number of sufficiently strong actuators can be added to the model. Althernatively, one can use a different optimization target ActuatorForceTarget. The benefits of using the fast target are both speed and tracking accuracy.
|
virtual |
OpenSim::ActuatorForceTargetFast::ActuatorForceTargetFast | ( | SimTK::State & | s, |
int | aNX, | ||
CMC * | aController | ||
) |
int OpenSim::ActuatorForceTargetFast::constraintFunc | ( | const SimTK::Vector & | x, |
bool | new_coefficients, | ||
SimTK::Vector & | constraints | ||
) | const |
int OpenSim::ActuatorForceTargetFast::constraintJacobian | ( | const SimTK::Vector & | x, |
bool | new_coefficients, | ||
SimTK::Matrix & | jac | ||
) | const |
|
inline |
int OpenSim::ActuatorForceTargetFast::gradientFunc | ( | const SimTK::Vector & | x, |
bool | new_coefficients, | ||
SimTK::Vector & | gradient | ||
) | const |
int OpenSim::ActuatorForceTargetFast::objectiveFunc | ( | const SimTK::Vector & | aF, |
bool | new_coefficients, | ||
SimTK::Real & | rP | ||
) | const |
|
virtual |
Reimplemented from OpenSim::OptimizationTarget.