|
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) |
|
| OptimizerSystem () |
|
| OptimizerSystem (int nParameters) |
|
virtual | ~OptimizerSystem () |
|
virtual int | hessian (const Vector ¶meters, bool new_parameters, Vector &gradient) const |
|
void | setNumParameters (const int nParameters) |
|
void | setNumEqualityConstraints (const int n) |
|
void | setNumInequalityConstraints (const int n) |
|
void | setNumLinearEqualityConstraints (const int n) |
|
void | setNumLinearInequalityConstraints (const int n) |
|
void | setParameterLimits (const Vector &lower, const Vector &upper) |
|
int | getNumParameters () const |
|
int | getNumConstraints () const |
|
int | getNumEqualityConstraints () const |
|
int | getNumInequalityConstraints () const |
|
int | getNumLinearEqualityConstraints () const |
|
int | getNumNonlinearEqualityConstraints () const |
|
int | getNumLinearInequalityConstraints () const |
|
int | getNumNonlinearInequalityConstraints () const |
|
bool | getHasLimits () const |
|
void | getParameterLimits (Real **lower, Real **upper) const |
|
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