The MuscleLengthInfo struct contains information about the muscle that is strictly a function of the length of the fiber and the tendon, and the orientation of the muscle fiber.
w.r.t. a fixed orientation of the tendon.
The function that populates this struct, calcMuscleLengthInfo, is called at a point when only the position and orientation of the system are known. This function is the first one that is called of the functions calcMuscleLengthInfo, calcFiberVelocityInfo and calcMuscleDynamicInfo. The velocity and acceleration of the muscle's path will not be known when this function is called.
NAME DIMENSION UNITS
fiberLength length m
fiberLengthAlongTendon length m [1]
normFiberLength length/length m/m [2]
tendonLength length m
normTendonLength length/length m/m [3]
tendonStrain length/length m/m [4]
pennationAngle angle rad [5]
cosPennationAngle NA NA
sinPennationAngle NA NA
fiberPassiveForceLengthMultiplier force/force N/N [6]
fiberActiveForceLengthMultiplier force/force N/N [7]
userDefinedLengthExtras NA NA [8]
[1] fiberLengthAlongTendon is the length of the muscle fiber as projected on the tendon.
[2] normFiberLength is the fiberLength normalized with respect to the optimalFiberLength,
normFiberLength = fiberLength / optimalFiberLength
N.B. It is assumed that the optimalFiberLength of a muscle is also its resting length.
[3] normTendonLength is the tendonLength normalized with respect to the tendonSlackLength
normTendonLength = tendonLength / tendonSlackLength
[4] Tendon strain is defined using the elongation of the material divided by its resting length. This is identical to the engineering definition of strain. Thus a tendonStrain of 0.01 means that the tendon is currently 1% longer than its resting length.
tendonStrain = (tendonLength-tendonSlackLength)/tendonSlackLength
[5] The orientation of the muscle fiber is defined w.r.t. a fixed
orientation of the tendon. A pennation angle of 0 means that the fiber
is collinear to the tendon. It is normal for the pennation angle
to range between 0 and Pi/2 radians.
Fiber Tendon
|===================||-----------------| Pennation = 0
||-------------------| Pennation = SimTK::Pi/3
(60 degrees)
[6] The fiberPassiveForceLengthMultiplier represents the elastic force the fiber
generates normalized w.r.t. the maximum isometric force of the fiber.
Is typically specified by a passiveForceLengthCurve.
[7] The fiberActiveForceLengthMultiplier is the scaling of the maximum force a fiber
can generate as a function of its length. This term usually follows a
curve that is zero at a normalized fiber length of 0.5, is 1 at a
normalized fiber length of 1, and then zero again at a normalized fiber
length of 1.5. This curve is generally an interpolation of experimental
data.
[8] This vector is left for the muscle modeler to populate with any
computationally expensive quantities that are computed in
calcMuscleLengthInfo, and required for use in the user defined functions
calcFiberVelocityInfo and calcMuscleDynamicsInfo. None of the parent
classes make any assumptions about what is or isn't in this field
- use as necessary.