Pennation angle and muscle length

Provide easy-to-use, extensible software for modeling, simulating, controlling, and analyzing the neuromusculoskeletal system.
POST REPLY
User avatar
michela gardi
Posts: 9
Joined: Wed Aug 25, 2021 5:14 am

Pennation angle and muscle length

Post by michela gardi » Sat Aug 28, 2021 8:29 am

Hello,
from the end paragraph of link https://simtk-confluence.stanford.edu/d ... cle+Models it is clear what happens when there is a rigid-tendon assumption in openSim since from IK geometry data MT length are determined and from there subtracting L(T)(tendon length): L(M)cos(alpha) can be found since there is an assumption L(M)sin(alpha)=h which allows it.
Is this last assumption always valid? How can the fiber length and pennation angle be univocally determined if tendon length is allowed to change (as in more realistic simulations as CMC)?

Tags:

User avatar
Thomas Uchida
Posts: 1777
Joined: Wed May 16, 2012 11:40 am

Re: Pennation angle and muscle length

Post by Thomas Uchida » Sat Aug 28, 2021 9:46 am

Muscle fiber length is a state. Please see the first reference listed at the bottom of that page.

User avatar
michela gardi
Posts: 9
Joined: Wed Aug 25, 2021 5:14 am

Re: Pennation angle and muscle length

Post by michela gardi » Wed Sep 01, 2021 9:14 am

Sorry, but it is not clear to me. What is the consequence of muscle are states? How is the penation angle calculated?

User avatar
Thomas Uchida
Posts: 1777
Joined: Wed May 16, 2012 11:40 am

Re: Pennation angle and muscle length

Post by Thomas Uchida » Wed Sep 01, 2021 5:13 pm

Please see the documentation and Millard 2013 paper regarding the "fixed-width pennation model" assumption. Pennation can be calculated once fiber length is known (https://github.com/opensim-org/opensim- ... l.cpp#L126):

Code: Select all

double MuscleFixedWidthPennationModel::
calcPennationAngle(double fiberLength) const
{
    double phi = 0;
    double optimalPennationAngle = get_pennation_angle_at_optimal();

    // This computation is only worth performing on pennated muscles.
    if(optimalPennationAngle > SimTK::Eps) {
        if(fiberLength > m_minimumFiberLength) {
            double sin_phi = m_parallelogramHeight/fiberLength;
            phi = (sin_phi < m_maximumSinPennation) ?
                  asin(sin_phi) : get_maximum_pennation_angle();
        } else {
            phi = get_maximum_pennation_angle();
        }
    }
    return phi;
}

POST REPLY