Biorbd
include
RigidBody
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(
64
const
biorbd::rigidbody::NodeSegment
&pos,
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
115
biorbd::rigidbody::NodeSegment
marker(
116
const
biorbd::rigidbody::GeneralizedCoordinates
& Q,
117
const
biorbd::rigidbody::NodeSegment
& node,
118
bool
removeAxis=
true
,
119
bool
updateKin =
true
);
120
129
biorbd::rigidbody::NodeSegment
marker(
130
const
biorbd::rigidbody::GeneralizedCoordinates
& Q,
131
unsigned
int
idx,
132
bool
removeAxis=
true
,
133
bool
updateKin =
true
);
134
141
biorbd::rigidbody::NodeSegment
marker(
142
unsigned
int
idx,
143
bool
removeAxis);
144
152
std::vector<biorbd::rigidbody::NodeSegment> markers(
153
const
biorbd::rigidbody::GeneralizedCoordinates
&Q,
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(
175
const
biorbd::rigidbody::GeneralizedCoordinates
&Q,
176
const
biorbd::rigidbody::GeneralizedVelocity
&Qdot,
177
unsigned
int
idx,
178
bool
removeAxis=
true
,
179
bool
updateKin =
true
);
180
181
190
std::vector<biorbd::rigidbody::NodeSegment> markersVelocity(
191
const
biorbd::rigidbody::GeneralizedCoordinates
&Q,
192
const
biorbd::rigidbody::GeneralizedVelocity
&Qdot,
193
bool
removeAxis=
true
,
194
bool
updateKin =
true
);
195
203
std::vector<biorbd::rigidbody::NodeSegment> technicalMarkers(
204
const
biorbd::rigidbody::GeneralizedCoordinates
&Q,
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(
224
const
biorbd::rigidbody::GeneralizedCoordinates
&Q,
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(
245
const
biorbd::rigidbody::GeneralizedCoordinates
&Q,
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(
291
const
biorbd::rigidbody::GeneralizedCoordinates
&Q,
292
bool
removeAxis=
true
,
293
bool
updateKin =
true
);
294
302
std::vector<biorbd::utils::Matrix> technicalMarkersJacobian(
303
const
biorbd::rigidbody::GeneralizedCoordinates
&Q,
304
bool
removeAxis=
true
,
305
bool
updateKin =
true
);
306
315
biorbd::utils::Matrix
markersJacobian(
316
const
biorbd::rigidbody::GeneralizedCoordinates
&Q,
317
const
biorbd::utils::String
& parentName,
318
const
biorbd::rigidbody::NodeSegment
& p,
319
bool
updateKin);
320
321
#ifndef BIORBD_USE_CASADI_MATH
322
bool
inverseKinematics(
330
const
std::vector<biorbd::rigidbody::NodeSegment>& markers,
331
const
biorbd::rigidbody::GeneralizedCoordinates
& Qinit,
332
biorbd::rigidbody::GeneralizedCoordinates
&Q,
333
bool
removeAxes=
true
);
334
#endif
335
336
protected
:
345
std::vector<biorbd::utils::Matrix> markersJacobian(
346
const
biorbd::rigidbody::GeneralizedCoordinates
&Q,
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
Generated by
1.8.18