1 #define BIORBD_API_EXPORTS
2 #include "Muscles/StateDynamics.h"
4 #include "Utils/Error.h"
5 #include "Utils/String.h"
6 #include "Muscles/Characteristics.h"
9 const biorbd::utils::Scalar& excitation,
10 const biorbd::utils::Scalar& activation) :
11 biorbd::muscles::
State(excitation,activation),
12 m_previousExcitation(std::make_shared<biorbd::utils::Scalar>(0)),
13 m_previousActivation(std::make_shared<biorbd::utils::Scalar>(0)),
14 m_activationDot(std::make_shared<biorbd::utils::Scalar>(0))
21 biorbd::muscles::
State(other),
22 m_previousExcitation(other.m_previousExcitation),
23 m_previousActivation(other.m_previousActivation),
24 m_activationDot(other.m_activationDot)
54 bool alreadyNormalized){
55 return timeDerivativeActivation(emg.
excitation(), emg.
activation(), characteristics, alreadyNormalized);
60 const biorbd::utils::Scalar& excitation,
61 const biorbd::utils::Scalar& activation,
63 bool alreadyNormalized){
64 setExcitation(excitation);
65 setActivation(activation);
66 return timeDerivativeActivation(characteristics, alreadyNormalized);
71 bool alreadyNormalized){
74 #ifdef BIORBD_USE_CASADI_MATH
75 *m_activation = casadi::MX::if_else(
76 casadi::MX::lt(*m_activation, characteristics.
minActivation()),
78 *m_excitation = casadi::MX::if_else(
79 casadi::MX::lt(*m_excitation, characteristics.
minActivation()),
97 biorbd::utils::Scalar num;
98 if (alreadyNormalized)
99 num = *m_excitation - *m_activation;
101 num = normalizeExcitation(characteristics.
stateMax())- *m_activation;
103 biorbd::utils::Scalar denom;
104 #ifdef BIORBD_USE_CASADI_MATH
105 denom = casadi::MX::if_else(
106 casadi::MX::gt(num, 0),
115 *m_activationDot = num/denom;
117 return *m_activationDot;
122 return *m_activationDot;
126 const biorbd::utils::Scalar& val,
127 bool turnOffWarnings) {
128 *m_previousExcitation = *m_excitation;
134 return *m_previousExcitation;
138 const biorbd::utils::Scalar& val,
139 bool turnOffWarnings) {
140 *m_previousActivation = *m_activation;
146 return *m_previousActivation;
151 *m_stateType = biorbd::muscles::STATE_TYPE::DYNAMIC;