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 () |
| 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) |
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.
- Version
- 1.0
- Author
- Frank C. Anderson