Model reference

Contents

Degrees of freedom

The generalized coordinates (degrees of freedom, DOF) of the model are:

  1.             SC_y
  2.             SC_z
  3.             SC_x
  4.             AC_y
  5.             AC_z
  6.             AC_x
  7.             GH_y
  8.             GH_z
  9.            GH_yy
 10.             EL_x
 11.             PS_y

Muscles

The muscle elements of the model are:

  1.   trapscap1
  2.   trapscap2
  3.   trapscap3
  4.   trapscap4
  5.   trapscap5
  6.   trapscap6
  7.   trapscap7
  8.   trapscap8
  9.   trapscap9
 10.  trapscap10
 11.  trapscap11
 12.   trapclav1
 13.   trapclav2
 14.    levscap1
 15.    levscap2
 16.    pectmin1
 17.    pectmin2
 18.    pectmin3
 19.    pectmin4
 20.   rhomboid1
 21.   rhomboid2
 22.   rhomboid3
 23.   rhomboid4
 24.   rhomboid5
 25.    serrant1
 26.    serrant2
 27.    serrant3
 28.    serrant4
 29.    serrant5
 30.    serrant6
 31.    serrant7
 32.    serrant8
 33.    serrant9
 34.   serrant10
 35.   serrant11
 36.   serrant12
 37.   deltscap1
 38.   deltscap2
 39.   deltscap3
 40.   deltscap4
 41.   deltscap5
 42.   deltscap6
 43.   deltscap7
 44.   deltscap8
 45.   deltscap9
 46.  deltscap10
 47.  deltscap11
 48.   deltclav1
 49.   deltclav2
 50.   deltclav3
 51.   deltclav4
 52.   coracobr1
 53.   coracobr2
 54.   coracobr3
 55.      infra1
 56.      infra2
 57.      infra3
 58.      infra4
 59.      infra5
 60.      infra6
 61.     termin1
 62.     termin2
 63.     termin3
 64.     termaj1
 65.     termaj2
 66.     termaj3
 67.     termaj4
 68.      supra1
 69.      supra2
 70.      supra3
 71.      supra4
 72.    subscap1
 73.    subscap2
 74.    subscap3
 75.    subscap4
 76.    subscap5
 77.    subscap6
 78.    subscap7
 79.    subscap8
 80.    subscap9
 81.   subscap10
 82.   subscap11
 83.        bicl
 84.       bicb1
 85.       bicb2
 86.   triclong1
 87.   triclong2
 88.   triclong3
 89.   triclong4
 90.   latdorsi1
 91.   latdorsi2
 92.   latdorsi3
 93.   latdorsi4
 94.   latdorsi5
 95.   latdorsi6
 96.   pectmajt1
 97.   pectmajt2
 98.   pectmajt3
 99.   pectmajt4
100.   pectmajt5
101.   pectmajt6
102.   pectmajc1
103.   pectmajc2
104.    tricmed1
105.    tricmed2
106.    tricmed3
107.    tricmed4
108.    tricmed5
109.  brachialis1
110.  brachialis2
111.  brachialis3
112.  brachialis4
113.  brachialis5
114.  brachialis6
115.  brachialis7
116.  brachiorad1
117.  brachiorad2
118.  brachiorad3
119.  pronteres1
120.  pronteres2
121.  supinator1
122.  supinator2
123.  supinator3
124.  supinator4
125.  supinator5
126.   pronquad1
127.   pronquad2
128.   pronquad3
129.    triclat1
130.    triclat2
131.    triclat3
132.    triclat4
133.    triclat5
134.   anconeus1
135.   anconeus2
136.   anconeus3
137.   anconeus4
138.   anconeus5

Muscle-skeleton coupling

In the Opensim model, muscles are coupled to the skeleton by a muscle path model. The muscle path model consists of an origin point, an insertion point, and points or objects in between which ensure that the muscle wraps realistically around the bones. For the real-time simulator, we want to avoid using such a path model, for two reasons: (1) computation speed, and (2) differentiability.

Fortunately, we can achieve these goals and stay consistent with the Opensim model. We will represent the muscle-skeleton model by an analytical function $L_M(\textbf{q})$ which produces the muscle-tendon length as a function of the joint angles. If this function is the same as what Opensim produces with its path model, the muscle is coupled to the skeleton in a way that is mechanically equivalent as far as the simulated movement is concerned.

For fast computation and differentiability, we choose a multivariate polynomial function:

$$L_{M}(q) = \sum_{i=1}^{Nterms}c_{i}\prod_{j=1}^{Ndof}q_{j}^{e_{ij}}$$

The muscle path model is now fully encoded in a series of coefficients $c_i$ and exponents $e_{ij}$. The exponents and coefficients are formatted in the model struct as follows:

For example, muscle trapscap1:
model.muscles{1}.dof_indeces:
     1
     2
     3
     4
     5
     6

model.muscles{1}.lparams (e_ij):
     0     0     0     0     0     0
     2     1     0     0     0     0
     1     2     1     0     0     0
     0     0     0     3     0     1
     0     0     0     0     1     0
     1     0     0     0     0     0
     0     2     0     0     0     0
     0     0     0     0     1     1
     1     0     0     1     1     1
     0     2     1     0     0     0
     0     0     0     1     0     0
     0     0     1     3     0     0

model.muscles{1}.lcoefs (c_i):
    0.2259
    0.0607
    0.1113
    0.0063
   -0.0050
    0.1261
   -0.2573
    0.0998
    0.0829
    0.2236
   -0.0036
    0.0018

This muscle has 12 terms in its path polynomial.
There are 6 joint angles involved, so each term has 6 integer exponents e_ij  and one coefficient c_i.

Next: Model testing
Previous: How to run the model
Home: Main