1#ifndef TORQUEMUSCLEFITTINGTOOLKIT_H_ 
    2#define TORQUEMUSCLEFITTINGTOOLKIT_H_ 
  166    double activationUpperBound,
 
  167    double passiveTorqueAngleMultiplierUpperBound,
 
  185        double maxActivation,
 
  186        double maxPassiveTorqueAngleMultiplier,
 
  195                              Ipopt::Index &nnz_jac_g,
 
  196                              Ipopt::Index &nnz_h_lag,
 
  197                              Ipopt::TNLP::IndexStyleEnum &index_style);
 
  216                                    Ipopt::Number *lambda);
 
  219                        const Ipopt::Number *x,
 
  221                        Ipopt::Number &obj_value);
 
  224                             const Ipopt::Number *x,
 
  226                             Ipopt::Number *grad_f);
 
  229                        const Ipopt::Number *x,
 
  235                            const Ipopt::Number *x,
 
  238                            Ipopt::Index nele_jac,
 
  241                            Ipopt::Number *values);
 
  244                      Ipopt::SolverReturn status,
 
  246                      const Ipopt::Number *x,
 
  247                      const Ipopt::Number *z_L,
 
  248                      const Ipopt::Number *z_U,
 
  250                      const Ipopt::Number *g,
 
  251                      const Ipopt::Number *lambda,
 
  252                      Ipopt:: Number obj_value,
 
  253                      const Ipopt::IpoptData *ip_data,
 
  254                      Ipopt::IpoptCalculatedQuantities *ip_cq);
 
  258                          const Ipopt::Number *x,
 
  260                          Ipopt::Number obj_factor,
 
  262                          const Ipopt::Number *lambda,
 
  264                          Ipopt::Index nele_hess,
 
  267                          Ipopt::Number *values);
 
virtual bool get_starting_point(Ipopt::Index n, bool init_x, Ipopt::Number *x, bool init_z, Ipopt::Number *z_L, Ipopt::Number *z_U, Ipopt::Index m, bool init_lambda, Ipopt::Number *lambda)
virtual bool eval_g(Ipopt::Index n, const Ipopt::Number *x, bool new_x, Ipopt::Index m, Ipopt::Number *g)
double mTaAngleScaleStart
RigidBodyDynamics::Math::VectorNd mConstraintErrors
unsigned int mIndexTauScaling
double getObjectiveValue()
virtual bool eval_f(Ipopt::Index n, const Ipopt::Number *x, bool new_x, Ipopt::Number &obj_value)
double getSolutionTorqueAngularVelocityOmegaMaxScale()
virtual bool get_nlp_info(Ipopt::Index &n, Ipopt::Index &m, Ipopt::Index &nnz_jac_g, Ipopt::Index &nnz_h_lag, Ipopt::TNLP::IndexStyleEnum &index_style)
double getSolutionMaximumActiveIsometricTorqueScale()
double mTvOmegaMaxScaleStart
RigidBodyDynamics::Math::VectorNd mXOffset
double getSolutionPassiveTorqueAngleCurveOffset()
RigidBodyDynamics::Math::VectorNd mWeights
FitTorqueMuscleParameters(const RigidBodyDynamics::Math::VectorNd &jointAngle, const RigidBodyDynamics::Math::VectorNd &jointAngularVelocity, const RigidBodyDynamics::Math::VectorNd &jointTorque, double maxActivation, double maxPassiveTorqueAngleMultiplier, double taLambda, double tvLambda, Millard2016TorqueMuscle &tqMcl)
RigidBodyDynamics::Math::VectorNd & getConstraintError()
double mTvOmegaMaxScaleLB
virtual bool eval_jac_g(Ipopt::Index n, const Ipopt::Number *x, bool new_x, Ipopt::Index m, Ipopt::Index nele_jac, Ipopt::Index *iRow, Ipopt::Index *jCol, Ipopt::Number *values)
virtual bool eval_grad_f(Ipopt::Index n, const Ipopt::Number *x, bool new_x, Ipopt::Number *grad_f)
double mTaAngleAtOneNormTorque
RigidBodyDynamics::Math::VectorNd mDtp_Dx
unsigned int mIndexTvOmegaMaxScale
const RigidBodyDynamics::Math::VectorNd & mJointTorque
unsigned int mIndexTpOffset
unsigned int mIndexTaAngleScale
virtual bool eval_h(Ipopt::Index n, const Ipopt::Number *x, bool new_x, Ipopt::Number obj_factor, Ipopt::Index m, const Ipopt::Number *lambda, bool new_lambda, Ipopt::Index nele_hess, Ipopt::Index *iRow, Ipopt::Index *jCol, Ipopt::Number *values)
double getSolutionActiveTorqueAngleAngleScaling()
const RigidBodyDynamics::Math::VectorNd & mJointAngularVelocity
Millard2016TorqueMuscle & mTqMcl
unsigned int mConIdxTauPassiveStart
unsigned int mConIdxTauPassiveEnd
double mTpAngleOffsetStart
double mTvOmegaMaxScaleUB
unsigned int mIndexTpLambda
virtual bool get_bounds_info(Ipopt::Index n, Ipopt::Number *x_l, Ipopt::Number *x_u, Ipopt::Index m, Ipopt::Number *g_l, Ipopt::Number *g_u)
void updOptimizationVariables(const Ipopt::Number *x)
unsigned int mConIdxTauActMaxEnd
unsigned int mConIdxTauActMinEnd
double getSolutionPassiveTorqueAngleBlendingParameter()
unsigned int mConIdxTauActMinStart
virtual void finalize_solution(Ipopt::SolverReturn status, Ipopt::Index n, const Ipopt::Number *x, const Ipopt::Number *z_L, const Ipopt::Number *z_U, Ipopt::Index m, const Ipopt::Number *g, const Ipopt::Number *lambda, Ipopt::Number obj_value, const Ipopt::IpoptData *ip_data, Ipopt::IpoptCalculatedQuantities *ip_cq)
const RigidBodyDynamics::Math::VectorNd & mJointAngle
unsigned int mConIdxTauActMaxStart
This class implements a rigid-tendon muscle-torque-generator (MTG) for a growing list of joints and t...
static void fitTorqueMuscleParameters(Millard2016TorqueMuscle const &tqMcl, RigidBodyDynamics::Math::VectorNd const &jointAngle, RigidBodyDynamics::Math::VectorNd const &jointAngularVelocity, RigidBodyDynamics::Math::VectorNd const &jointTorque, double activationUpperBound, double passiveTorqueAngleMultiplierUpperBound, TorqueMuscleParameterFittingData ¶metersOfBestFit, bool verbose=false)
This function will adjust the parameters of the muscle-torque-generator (MTG) so that the MTG is stro...