Biorbd
Muscles.h
1 #ifndef BIORBD_MUSCLES_MUSCLES_H
2 #define BIORBD_MUSCLES_MUSCLES_H
3 
4 #include <vector>
5 #include <memory>
6 
7 #include "biorbdConfig.h"
8 
9 namespace biorbd {
10 namespace utils {
11 class String;
12 class Matrix;
13 class Vector;
14 class Vector3d;
15 }
16 
17 namespace rigidbody {
18 class GeneralizedCoordinates;
19 class GeneralizedVelocity;
20 class GeneralizedTorque;
21 }
22 
23 namespace muscles {
24 class MuscleGroup;
25 class State;
26 class Muscle;
27 
31 class BIORBD_API Muscles
32 {
33 public:
37  Muscles();
38 
43  Muscles(const biorbd::muscles::Muscles& other);
44 
48  virtual ~Muscles();
49 
54  biorbd::muscles::Muscles DeepCopy() const;
55 
60  void DeepCopy(
61  const biorbd::muscles::Muscles& other);
62 
69  void addMuscleGroup(
70  const biorbd::utils::String &name,
71  const biorbd::utils::String &originName,
72  const biorbd::utils::String &insertionName);
73 
79  int getGroupId(
80  const biorbd::utils::String &name) const;
81 
82 
87  const std::vector<std::shared_ptr<biorbd::muscles::Muscle>> muscles() const;
88 
94  const biorbd::muscles::Muscle& muscle(
95  unsigned int idx) const;
96 
102  std::vector<biorbd::utils::String> muscleNames() const;
103 
108  std::vector<biorbd::muscles::MuscleGroup>& muscleGroups();
109 
114  const std::vector<biorbd::muscles::MuscleGroup>& muscleGroups() const;
115 
121  biorbd::muscles::MuscleGroup& muscleGroup(
122  unsigned int idx);
123 
129  const biorbd::muscles::MuscleGroup& muscleGroup(
130  unsigned int idx) const;
131 
137  const biorbd::muscles::MuscleGroup& muscleGroup(
138  const biorbd::utils::String& name) const;
139 
145  void updateMuscles(
147  bool updateKin);
148 
155  void updateMuscles(
158  bool updateKin);
159 
165  void updateMuscles(
166  std::vector<std::vector<biorbd::utils::Vector3d>>& musclePointsInGlobal,
167  std::vector<biorbd::utils::Matrix>& jacoPointsInGlobal);
168 
175  void updateMuscles(
176  std::vector<std::vector<biorbd::utils::Vector3d>>& musclePointsInGlobal,
177  std::vector<biorbd::utils::Matrix>& jacoPointsInGlobal,
179 
192  biorbd::rigidbody::GeneralizedTorque muscularJointTorque(
193  const biorbd::utils::Vector& F);
194 
210  biorbd::rigidbody::GeneralizedTorque muscularJointTorque(
211  const biorbd::utils::Vector& F,
214 
228  biorbd::rigidbody::GeneralizedTorque muscularJointTorque(
229  const std::vector<std::shared_ptr<biorbd::muscles::State>>& emg);
230 
243  biorbd::rigidbody::GeneralizedTorque muscularJointTorque(
244  const std::vector<std::shared_ptr<biorbd::muscles::State>>& emg,
247 
254  biorbd::utils::Vector activationDot(
255  const std::vector<std::shared_ptr<biorbd::muscles::State>>& states,
256  bool areadyNormalized = true);
257 
262  biorbd::utils::Matrix musclesLengthJacobian();
263 
269  biorbd::utils::Matrix musclesLengthJacobian(
271 
279  biorbd::utils::Vector muscleForces(
280  const std::vector<std::shared_ptr<biorbd::muscles::State>>& emg);
281 
289  biorbd::utils::Vector muscleForces(
290  const std::vector<std::shared_ptr<biorbd::muscles::State>>& emg,
293 
298  unsigned int nbMuscleGroups() const;
299 
304  unsigned int nbMuscleTotal() const;
305 
310  unsigned int nbMuscles() const;
311 
312 protected:
313  std::shared_ptr<std::vector<biorbd::muscles::MuscleGroup>> m_mus;
314 
315 };
316 
317 }}
318 
319 #endif // BIORBD_MUSCLES_MUSCLES_H
320 
biorbd::utils::Vector
Wrapper of the Eigen VectorXd.
Definition: Vector.h:20
biorbd::muscles::Muscles::m_mus
std::shared_ptr< std::vector< biorbd::muscles::MuscleGroup > > m_mus
Holder for muscle groups.
Definition: Muscles.h:313
biorbd::muscles::Muscles
Muscle group holder.
Definition: Muscles.h:32
biorbd::rigidbody::GeneralizedCoordinates
Class GeneralizedCoordinates.
Definition: GeneralizedCoordinates.h:15
biorbd::muscles::MuscleGroup
A muscle group is muscle that share parents for both origin and insertion.
Definition: MuscleGroup.h:23
biorbd::utils::Matrix
A wrapper for the Eigen::MatrixXd.
Definition: Matrix.h:21
biorbd::rigidbody::GeneralizedTorque
Class GeneralizedTorque.
Definition: GeneralizedTorque.h:15
biorbd::utils::String
Wrapper around the std::string class with augmented functionality.
Definition: String.h:17
biorbd::rigidbody::GeneralizedVelocity
Class GeneralizedVelocity.
Definition: GeneralizedVelocity.h:15
biorbd::muscles::Muscle
Base class of all muscle.
Definition: Muscle.h:23