|
virtual | ~ActuatorForceTargetFast () |
|
| ActuatorForceTargetFast (SimTK::State &s, int aNX, CMC *aController) |
|
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 |
|
int | constraintFunc (const SimTK::Vector &x, bool new_coefficients, SimTK::Vector &constraints) const override |
|
int | constraintJacobian (const SimTK::Vector &x, bool new_coefficients, SimTK::Matrix &jac) const override |
|
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 actuator 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 optimization target can fail if the desired accelerations cannot be achieved. To insure that the constraints can be achieved, a number of sufficiently strong actuators can be added to the model. Alternatively, 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