|
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 |
|
| 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 | constraintFunc (const Vector ¶meters, bool new_parameters, Vector &constraints) const |
|
virtual int | constraintJacobian (const Vector ¶meters, bool new_parameters, Matrix &jac) const |
|
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 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
- See also
- ActuatorForceTargetFast.
- Version
- 1.0
- Author
- Frank C. Anderson