Biorbd
Markers.h
1 #ifndef BIORBD_RIGIDBODY_MARKERS_H
2 #define BIORBD_RIGIDBODY_MARKERS_H
3 
4 #include <memory>
5 #include <vector>
6 #include "biorbdConfig.h"
7 
8 namespace biorbd {
9 namespace utils {
10 class String;
11 class Matrix;
12 }
13 
14 namespace rigidbody {
15 class GeneralizedCoordinates;
16 class GeneralizedVelocity;
17 class NodeSegment;
18 
22 class BIORBD_API Markers
23 {
24 public:
28  Markers();
29 
34  Markers(const biorbd::rigidbody::Markers& other);
35 
39  virtual ~Markers();
40 
45  biorbd::rigidbody::Markers DeepCopy() const;
46 
51  void DeepCopy(const biorbd::rigidbody::Markers& other);
52 
63  void addMarker(
65  const biorbd::utils::String &name,
66  const biorbd::utils::String &parentName,
67  bool technical,
68  bool anatomical,
69  const biorbd::utils::String& axesToRemove,
70  int id = -1
71  );
72 
78  const biorbd::rigidbody::NodeSegment& marker(
79  unsigned int idx) const;
80 
86  std::vector<biorbd::rigidbody::NodeSegment> marker(
87  const biorbd::utils::String &name) const;
88 
93  std::vector<biorbd::utils::String> markerNames() const;
94 
99  std::vector<biorbd::utils::String> technicalMarkerNames() const;
100 
105  std::vector<biorbd::utils::String> anatomicalMarkerNames() const;
106 
117  const biorbd::rigidbody::NodeSegment& node,
118  bool removeAxis=true,
119  bool updateKin = true);
120 
131  unsigned int idx,
132  bool removeAxis=true,
133  bool updateKin = true);
134 
142  unsigned int idx,
143  bool removeAxis);
144 
152  std::vector<biorbd::rigidbody::NodeSegment> markers(
154  bool removeAxis=true,
155  bool updateKin = true);
156 
162  std::vector<biorbd::rigidbody::NodeSegment> markers(
163  bool removeAxis=true);
164 
174  biorbd::rigidbody::NodeSegment markerVelocity(
177  unsigned int idx,
178  bool removeAxis=true,
179  bool updateKin = true);
180 
181 
190  std::vector<biorbd::rigidbody::NodeSegment> markersVelocity(
193  bool removeAxis=true,
194  bool updateKin = true);
195 
203  std::vector<biorbd::rigidbody::NodeSegment> technicalMarkers(
205  bool removeAxis=true,
206  bool updateKin = true);
207 
213  std::vector<biorbd::rigidbody::NodeSegment> technicalMarkers(
214  bool removeAxis=true);
215 
223  std::vector<biorbd::rigidbody::NodeSegment> anatomicalMarkers(
225  bool removeAxis=true,
226  bool updateKin = true);
227 
233  std::vector<biorbd::rigidbody::NodeSegment> anatomicalMarkers(
234  bool removeAxis=true);
235 
244  std::vector<biorbd::rigidbody::NodeSegment> segmentMarkers(
246  unsigned int idx,
247  bool removeAxis=true,
248  bool updateKin = true);
249 
254  unsigned int nbMarkers() const;
255 
261  unsigned int nbMarkers(
262  unsigned int idxSegment) const;
263 
268  unsigned int nbTechnicalMarkers();
269 
275  unsigned int nbTechnicalMarkers(unsigned int idxSegment);
276 
281  unsigned int nbAnatomicalMarkers();
282 
290  std::vector<biorbd::utils::Matrix> markersJacobian(
292  bool removeAxis=true,
293  bool updateKin = true);
294 
302  std::vector<biorbd::utils::Matrix> technicalMarkersJacobian(
304  bool removeAxis=true,
305  bool updateKin = true);
306 
315  biorbd::utils::Matrix markersJacobian(
317  const biorbd::utils::String& parentName,
319  bool updateKin);
320 
321 #ifndef BIORBD_USE_CASADI_MATH
322  bool inverseKinematics(
330  const std::vector<biorbd::rigidbody::NodeSegment>& markers,
333  bool removeAxes=true);
334 #endif
335 
336 protected:
345  std::vector<biorbd::utils::Matrix> markersJacobian(
347  bool removeAxis,
348  bool updateKin,
349  bool lookForTechnical); // Retourne la jacobienne des markers
350 
351  std::shared_ptr<std::vector<biorbd::rigidbody::NodeSegment>> m_marks;
352 
353 };
354 
355 }}
356 
357 #endif // BIORBD_RIGIDBODY_MARKERS_H
biorbd::rigidbody::GeneralizedCoordinates
Class GeneralizedCoordinates.
Definition: GeneralizedCoordinates.h:15
biorbd::rigidbody::Markers
Holder for the marker set.
Definition: Markers.h:23
biorbd::utils::Matrix
A wrapper for the Eigen::MatrixXd.
Definition: Matrix.h:21
biorbd::rigidbody::Markers::m_marks
std::shared_ptr< std::vector< biorbd::rigidbody::NodeSegment > > m_marks
The markers.
Definition: Markers.h:351
biorbd::utils::String
Wrapper around the std::string class with augmented functionality.
Definition: String.h:17
biorbd::rigidbody::NodeSegment
A point attached to a segment, generally speaking a skin marker.
Definition: NodeSegment.h:19
biorbd::rigidbody::GeneralizedVelocity
Class GeneralizedVelocity.
Definition: GeneralizedVelocity.h:15