Biomech-Sim-Toolbox 1
Toolbox for movement simulation and analysis
Loading...
Searching...
No Matches
gait10dof18musc_multibody.h
Go to the documentation of this file.
1// gait10dof18musc_multibody.h
2// This file defines the data structures that are needed in Autolev multibody model
3
4#define NDOF 10 // number of kinematic degrees of freedom
5#define NFKSEG 8 // number of Opensim body segments (excluding ground)
6#define NFK 6*NFKSEG // number of forward kinematic outputs: 6 for each segment: Ox,Oy,R11,R12,R21,R22
7#define NGRFSEG 2 // number of body segments that have contact points attached to them (Rcalc, Rtoes, Lcalc, Ltoes)
8#define NGRF 3*NGRFSEG // number of GRF inputs to equation of motion (2D force and moment on each segment that has contact points)
9
10// macro to declare inertial properties of a segment S
11#define INERTIAL(S) double S##_M, S##_CMx, S##_CMy, S##_Izz
12
13typedef struct {
14 // Gravity and body weight
15 double gravity_x, gravity_y;
16 double bodyweight;
17
18 // Air drag
19 double airdrag; // drag coefficient, N/(m/s)^2
20 double wind; // wind speed, m/s (positive value is a tailwind)
21
22 // Body segment parameters
23 INERTIAL(pelvis);
24 INERTIAL(torso);
25
26 INERTIAL(Rfemur);
27 INERTIAL(Rtibia);
28 INERTIAL(Rfoot);
29// INERTIAL(Rcalcaneus); // Does not have toes or other stuff atm
30// INERTIAL(Rtoes);
31
32 INERTIAL(Lfemur);
33 INERTIAL(Ltibia);
34 INERTIAL(Lfoot);
35// INERTIAL(Lcalcaneus);
36// INERTIAL(Ltoes);
37
38 // Alignment parameters for BKA study
39 double trans, flex;
40
41 // Joint axis positions (parameters that were coded as hard zeros in gait3d_pelvis213make.m are not included here)
42 double back_x, back_y;
43
44 double Rhip_x, Rhip_y;
45 double Rknee_x1, Rknee_x2, Rknee_x3, Rknee_x4, Rknee_x5; // polynomial coefficients for knee x as function of knee angle
46 double Rknee_y1, Rknee_y2, Rknee_y3, Rknee_y4, Rknee_y5; // polynomial coefficients for knee y as function of knee angle
47 double Rankle_y;
48
49
50 double Lhip_x, Lhip_y;
51 double Lknee_x1, Lknee_x2, Lknee_x3, Lknee_x4, Lknee_x5; // polynomial coefficients for knee x as function of knee angle
52 double Lknee_y1, Lknee_y2, Lknee_y3, Lknee_y4, Lknee_y5; // polynomial coefficients for knee y as function of knee angle
53 double Lankle_y;
55
56// prototype for the Autolev C function for multibody dynamics
58 double q[NDOF],
59 double qd[NDOF],
60 double qdd[NDOF],
61 double G[NGRF],
62 double f[NDOF],
63 double df_dq[NDOF][NDOF],
64 double df_dqd[NDOF][NDOF],
65 double df_dqdd[NDOF][NDOF],
66 double df_dG[NDOF][NGRF],
67 double fk[NFK],
68 double dfk_dq[NFK][NDOF],
69 double fkdot[NFK],
70 double dfkdot_dq[NFK][NDOF]);
71
73 double q[NDOF],
74 double qd[NDOF],
75 double qdd[NDOF],
76 double G[NGRF],
77 double f[NDOF],
78 double fk[NFK],
79 double dfk_dq[NFK][NDOF],
80 double fkdot[NFK],
81 double dfkdot_dq[NFK][NDOF]);
82
84 double q[NDOF],
85 double qd[NDOF],
86 double qdd[NDOF],
87 double fk[NFK],
88 double dfk_dq[NFK][NDOF],
89 double fkdot[NFK],
90 double dfkdot_dq[NFK][NDOF]);
double f[4]
Definition: contact_2d_raw.c:20
double fkdot[48]
Definition: gait10dof18musc_FK_raw.c:24
double dfk_dq[48][10]
Definition: gait10dof18musc_FK_raw.c:24
double fk[48]
Definition: gait10dof18musc_FK_raw.c:24
double dfkdot_dq[48][10]
Definition: gait10dof18musc_FK_raw.c:25
void gait10dof18musc_NoDer_al(param_struct *par, double q[NDOF], double qd[NDOF], double qdd[NDOF], double G[NGRF], double f[NDOF], double fk[NFK], double dfk_dq[NFK][NDOF], double fkdot[NFK], double dfkdot_dq[NFK][NDOF])
void gait10dof18musc_al(param_struct *par, double q[NDOF], double qd[NDOF], double qdd[NDOF], double G[NGRF], double f[NDOF], double df_dq[NDOF][NDOF], double df_dqd[NDOF][NDOF], double df_dqdd[NDOF][NDOF], double df_dG[NDOF][NGRF], double fk[NFK], double dfk_dq[NFK][NDOF], double fkdot[NFK], double dfkdot_dq[NFK][NDOF])
#define NGRF
Definition: gait10dof18musc_multibody.h:8
void gait10dof18musc_FK_al(param_struct *par, double q[NDOF], double qd[NDOF], double qdd[NDOF], double fk[NFK], double dfk_dq[NFK][NDOF], double fkdot[NFK], double dfkdot_dq[NFK][NDOF])
#define NFK
Definition: gait10dof18musc_multibody.h:6
#define NDOF
Definition: gait10dof18musc_multibody.h:4
double df_dqd[10][10]
Definition: gait10dof18musc_raw.c:34
double df_dG[10][6]
Definition: gait10dof18musc_raw.c:34
double df_dq[10][10]
Definition: gait10dof18musc_raw.c:34
double df_dqdd[10][10]
Definition: gait10dof18musc_raw.c:34
Definition: gait10dof18musc_multibody.h:13
INERTIAL(pelvis)
INERTIAL(torso)
double Rknee_y1
Definition: gait10dof18musc_multibody.h:46
INERTIAL(Rtibia)
double Rankle_y
Definition: gait10dof18musc_multibody.h:47
double Lknee_y1
Definition: gait10dof18musc_multibody.h:52
INERTIAL(Ltibia)
INERTIAL(Rfemur)
double gravity_x
Definition: gait10dof18musc_multibody.h:15
INERTIAL(Rfoot)
double Lhip_x
Definition: gait10dof18musc_multibody.h:50
double Lknee_x1
Definition: gait10dof18musc_multibody.h:51
double Lankle_y
Definition: gait10dof18musc_multibody.h:53
INERTIAL(Lfoot)
double airdrag
Definition: gait10dof18musc_multibody.h:19
double Rknee_x1
Definition: gait10dof18musc_multibody.h:45
double wind
Definition: gait10dof18musc_multibody.h:20
double Rhip_x
Definition: gait10dof18musc_multibody.h:44
double back_x
Definition: gait10dof18musc_multibody.h:42
double bodyweight
Definition: gait10dof18musc_multibody.h:16
double flex
Definition: gait10dof18musc_multibody.h:39
INERTIAL(Lfemur)