Biorbd
Muscle.h
1 #ifndef BIORBD_MUSCLES_H
2 #define BIORBD_MUSCLES_H
3 
4 #include "biorbdConfig.h"
5 #include "Muscles/Compound.h"
6 #include "Utils/Scalar.h"
7 
8 namespace biorbd {
9 namespace utils {
10 class Matrix;
11 class Vector3d;
12 }
13 
14 namespace muscles {
15 class Geometry;
16 class Characteristics;
17 class State;
18 
22 class BIORBD_API Muscle : public biorbd::muscles::Compound
23 {
24 public:
28  Muscle();
29 
36  Muscle(
37  const biorbd::utils::String& name,
38  const biorbd::muscles::Geometry& position,
39  const biorbd::muscles::Characteristics& characteristics);
40 
48  Muscle(
49  const biorbd::utils::String& name,
50  const biorbd::muscles::Geometry& position,
51  const biorbd::muscles::Characteristics& characteristics,
52  const biorbd::muscles::State& emg);
53 
61  Muscle(
62  const biorbd::utils::String& name,
63  const biorbd::muscles::Geometry& position,
64  const biorbd::muscles::Characteristics& characteristics,
65  const biorbd::muscles::PathModifiers& pathModifiers);
66 
75  Muscle(
76  const biorbd::utils::String& name,
77  const biorbd::muscles::Geometry& position,
78  const biorbd::muscles::Characteristics& characteristics,
79  const biorbd::muscles::PathModifiers& pathModifiers,
80  const biorbd::muscles::State& emg);
81 
86  Muscle(
87  const biorbd::muscles::Muscle& other);
88 
93  Muscle(
94  const std::shared_ptr<biorbd::muscles::Muscle> other);
95 
99  virtual ~Muscle();
100 
105  void DeepCopy(
106  const biorbd::muscles::Muscle& other);
107 
108  // Get and set
109 
117  const biorbd::utils::Scalar& length(
120  int updateKin = 2);
121 
129  const biorbd::utils::Scalar& musculoTendonLength(
132  int updateKin = 2);
133 
142  const biorbd::utils::Scalar& velocity(
146  bool updateKin = true);
147 
154  void updateOrientations(
157  int updateKin = 2);
158 
166  void updateOrientations(
170  int updateKin = 2);
171 
177  void updateOrientations(
178  std::vector<biorbd::utils::Vector3d>& musclePointsInGlobal,
179  biorbd::utils::Matrix& jacoPointsInGlobal);
180 
187  void updateOrientations(
188  std::vector<biorbd::utils::Vector3d>& musclePointsInGlobal,
189  biorbd::utils::Matrix& jacoPointsInGlobal,
191 
196  void setPosition(
197  const biorbd::muscles::Geometry &positions);
198 
203  const biorbd::muscles::Geometry& position() const;
204 
209  void setCharacteristics(
210  const biorbd::muscles::Characteristics &characteristics);
211 
216  const biorbd::muscles::Characteristics& characteristics() const;
217 
224  const std::vector<biorbd::utils::Vector3d>& musclesPointsInGlobal(
227 
232  const std::vector<biorbd::utils::Vector3d>& musclesPointsInGlobal() const;
233 
238  void setForceIsoMax(
239  const biorbd::utils::Scalar& forceMax);
240 
245  void setState(
246  const biorbd::muscles::State &emg);
247 
252  const biorbd::muscles::State& state() const;
253 
258  biorbd::muscles::State& state();
259 
266  const biorbd::utils::Scalar& activationDot(
267  const biorbd::muscles::State& state,
268  bool alreadyNormalized = false) const;
269 protected:
274  virtual void computeForce(
275  const biorbd::muscles::State &emg);
276 
282  virtual biorbd::utils::Scalar getForceFromActivation(const biorbd::muscles::State &emg) = 0;
283 
284  std::shared_ptr<biorbd::muscles::Geometry> m_position;
285  std::shared_ptr<biorbd::muscles::Characteristics> m_characteristics;
286  std::shared_ptr<biorbd::muscles::State> m_state;
287 
288 };
289 
290 }}
291 
292 #endif // BIORBD_MUSCLES_H
biorbd::muscles::Muscle::m_state
std::shared_ptr< biorbd::muscles::State > m_state
The dynamic state.
Definition: Muscle.h:286
biorbd::muscles::Compound
Class compound is a very generic definition of what a muscle is. It should be the base class of every...
Definition: Compound.h:30
biorbd::muscles::State
EMG holder to interact with the muscle.
Definition: State.h:16
biorbd::muscles::Muscle::m_position
std::shared_ptr< biorbd::muscles::Geometry > m_position
The position of all the nodes of the muscle (0 being the origin and last being insertion.
Definition: Muscle.h:284
biorbd::muscles::Muscle::getForceFromActivation
virtual biorbd::utils::Scalar getForceFromActivation(const biorbd::muscles::State &emg)=0
Function allowing modification of the way the multiplication is done in computeForce(EMG)
biorbd::rigidbody::GeneralizedCoordinates
Class GeneralizedCoordinates.
Definition: GeneralizedCoordinates.h:15
biorbd::muscles::Geometry
Class Geometry of the muscle.
Definition: Geometry.h:30
biorbd::rigidbody::Joints
This is the core of the musculoskeletal model in biorbd.
Definition: Joints.h:40
biorbd::muscles::PathModifiers
Holder of all the path modifiers of a muscle.
Definition: PathModifiers.h:18
biorbd::utils::Matrix
A wrapper for the Eigen::MatrixXd.
Definition: Matrix.h:21
biorbd::muscles::Muscle::m_characteristics
std::shared_ptr< biorbd::muscles::Characteristics > m_characteristics
The muscle characteristics.
Definition: Muscle.h:285
biorbd::utils::String
Wrapper around the std::string class with augmented functionality.
Definition: String.h:17
biorbd::muscles::Characteristics
Class Holds that muscle characteristics.
Definition: Characteristics.h:17
biorbd::rigidbody::GeneralizedVelocity
Class GeneralizedVelocity.
Definition: GeneralizedVelocity.h:15
biorbd::muscles::Muscle
Base class of all muscle.
Definition: Muscle.h:23