1 #define BIORBD_API_EXPORTS
2 #include "Muscles/State.h"
4 #include "Utils/Error.h"
7 const biorbd::utils::Scalar& excitation,
8 const biorbd::utils::Scalar& activation) :
9 m_stateType(std::make_shared<biorbd::muscles::STATE_TYPE>()),
10 m_excitation(std::make_shared<biorbd::utils::Scalar>(excitation)),
11 m_excitationNorm(std::make_shared<biorbd::utils::Scalar>(0)),
12 m_activation(std::make_shared<biorbd::utils::Scalar>(activation))
19 m_stateType(other.m_stateType),
20 m_excitation(other.m_excitation),
21 m_excitationNorm(std::make_shared<biorbd::utils::Scalar>(0)),
22 m_activation(other.m_activation)
48 const biorbd::utils::Scalar& val,
49 bool turnOffWarnings) {
51 #ifdef BIORBD_USE_CASADI_MATH
52 *m_excitation = casadi::MX::if_else_zero(casadi::MX::gt(val, 0), val);
55 if (!turnOffWarnings) {
57 0,
"Excitation can't be lower than 0, 0 is used then");
73 bool turnOffWarnings) {
75 #ifndef BIORBD_USE_CASADI_MATH
76 if (!turnOffWarnings) {
79 "Excitation is higher than maximal excitation.");
82 *m_excitationNorm = *m_excitation / emgMax.
excitation();
84 return *m_excitationNorm;
88 const biorbd::utils::Scalar& val)
90 *m_excitationNorm = val;
95 return *m_excitationNorm;
99 const biorbd::utils::Scalar& val,
100 bool turnOffWarnings){
102 #ifdef BIORBD_USE_CASADI_MATH
103 *m_activation = casadi::MX::if_else_zero(casadi::MX::gt(val, 0), val);
104 *m_activation = casadi::MX::if_else(casadi::MX::lt(val, 1), val, 1);
108 if (!turnOffWarnings){
115 if (!turnOffWarnings){
129 return *m_activation;
139 *m_stateType = biorbd::muscles::STATE_TYPE::SIMPLE_STATE;