Team Members

  • Apoorva Rajagopal
  • Jenny Yong


Project Goals

With this project, we are hoping to develop a new muscle model which will demonstrate fatigue and have some characteristics of orderly recruitment. The goal of our project is to identify how incorporating a time-history of activation and fiber composition affect a muscle's ability to generate force.

Our specific project goals are to generate a new muscle model in OpenSim which includes:

  • An altered force generation profile over time which represents fatigue,
  • An altered activation profile based on muscle fiber composition which represents orderly recruitment,
  • Maximum isometric force based on muscle fiber composition, and
  • Optimized muscle fatiguing parameters based on data from the literature.

Development Process

  1. Complete a thorough literature review on models of muscle fatigue.
    1. Identify the muscle parameters/model to focus on to represent muscle fatigue.
      1. Represent the muscle as having three groupings of motor units: Fatigued, Active and Resting.
      2. Incorporate a fatigue rate, a recovery rate, and a recruitment time constant which, together, move the motor units between the different groups.
    2. Identify other muscle properties to capture in our new muscle model.
      1. Incorporate orderly recruitment.
      2. Incorporate muscle fiber composition.
  2. Build a new muscle model incorporating our model of muscle fatigue.
    1. Begin working on the current fatigable muscle model found here.
      1. Add an additional state which is representative of active motor units.
    2. Adjust the model to allow maximum isometric force to be calculated using muscle fiber composition (percent of slow-twitch/fast-twitch).
    3. Allow the model to generate its own fatigue and recovery rates based on fiber composition.
    4. Adjust the model's activation curve to be calculated using muscle fiber composition.
      1. Generate an activation curve which is more representative of orderly recruitment.
  3. Run an optimization algorithm to match experimental data.
    1. Review the literature to find a force vs. time curve representative of fatigue.
    2. Optimize the fatigue and recovery rate using a forward simulation and comparing against the literature.
    3. Identify the fatigue rate for "trained" and "untrained" muscle fibers.
      1. "Trained" muscle fibers will represent 90% slow-twitch.
      2. "Untrained' muscle fibers will represent 70% slow-twitch.
    4. Extrapolate to predict fatigue rates for slow-twitch and fast-twitch muscles.
  4. Run a tug-of-war forward simulation against a muscle model without fatigue.
    1. Create a plugin so that we can visualize the fatigable muscle in the OpenSim GUI.

Muscle Model

This muscle model differs from the currently available muscles in OpenSim by altering its force generation equation. This model uses the following equation:


The new additions to previous models include making the maximum isometric force dependent on fiber composition and adding activation and fatigue factors.

Activation Factor

In previous models, the active force generation capacity scaled linearly with activation. However, to represent orderly recruitment, we created an activation factor whose shape is determined based on fiber composition and which is a function of the previous activation term. With the addition of our activation factor, at smaller activation levels, the muscle generates less force since it is only recruiting the slow-twitch muscles. Once the muscle's activation level reaches a threshold defined by its fiber composition, it will start recruiting fast-twitch muscles which are more capable of generating larger forces.

To generate the curves for the activation factor, we used two cubic splines with the following requirements:

  1. The activation curve must pass through the point (% Slow-twitch fibers, % Force generated by slow-twitch fibers). Note that this is the point where the two cubic splines meet.
  2. At the point (%ST, %Force), the cubic splines must have the same first and second derivative (making the activation curve C2-continuous).
  3. At zero activation (a = 0), the activation factor restricts the muscle to generating no force.
  4. At full activation (a = 1), the activation factor allows the muscle to generate its maximum isometric force.
  5. At zero activation and at full activation, the slope of the activation factor curve is zero.

An image representing the way the curve is generated and how it compares to a linear activation is shown below on the right. The effect of fiber composition on our activation factor curves is shown below on the left.

Fatigue Factor

To represent fatigue, we based our muscle on a model previously discussed by Xia and Frey Law [4], where the muscle motor units are sorted into three states:

  • Active Motor Units, which are actively generating force (muA)
  • Fatigued Motor Units, which are currently fatigued and incapable of generating force (muF)
  • Resting Motor Units, which are recovering after being fatigued and unnecessary for generating the desired force (muR)

The fatigue factor shown in our force generation equation is represented with our equation below. Very simply, it restricts the active force-generating capacity of the muscle to only be able to use motor units that are not fatigued.

The equations governing how the motor units move between the different states incorporate three parameters: fatigue rate (F), recovery rate (R) and a recruitment time constant (τ). These equations are roughly based on the work done by Xia and Frey Law, but have been slightly modified to include the relationship between excitation (u) and activation (a) for the purposes of how muscles are modeled in OpenSim and to keep the motor units within the limits of 0 and 1 within each state. The equations representing the movement of the motor units are shown below.

Currently, these parameters are found by using an optimization to match experimental data collected by Hainaut and Duchateau [1] for the adductor pollicis muscle, a primarily slow-twitch thumb muscle.


Matching Experimental Data

Using an optimization, we can identify the fatigue parameters of our muscle (fatigue rate, recovery rate and recruitment time constant) to match experimental data. Shown below is a plot demonstrating our ability to match experimental data.

The parameters identified were found when matching an 80% slow-twitch muscle fiber during a 60-second maximum isometric contraction to experimental data collected by Hainaut and Duchateau of the adductor pollicis muscle, a primarily slow-twitch muscle fiber. The parameters found are listed below.

  • F = 0.1778
  • R = 0.0041
  • τ = 0.3812

Fatigable Muscle State Behavior

To demonstrate that our model behaves as expected, we ran a forward simulation of a 60-second maximum isometric contraction with dummy parameters (F = 3.0, R = 0.3, τ = 10.0) to see how the different states of the model behaved. A representative plot of our states is shown below.

As expected, our target activation remains at 1.0 or 100% throughout the simulation, while the effective activation (ff * fa) decreases. To show that our model is performing as expected, the curve representing the percentage of active motor units has a similar shape to the effective activation, but is shifted. Most importantly, we can tell that our muscle demonstrates signs of fatigue since its percentage of active and resting motor units decrease during the contraction and the percentage of fatigued motor units increase.

Conclusions and Next Steps

We successfully created a new fatigable muscle model which we can validate and refine with experimental data.

We recognize that in order to implement our muscle model and trust its results, we need more experimental data for different muscles with a range of fiber compositions. Many experiments on fatigue do not focus on single muscles or are done with electrical stimulation which does not properly represent orderly recruitment.

We are also considering further modifying our methods governing how the motor units move between different states. We would like to potentially make these equations more physiological to better match the experimental data.

Finally, we have created a plugin that allows users to visualize our fatigable muscle in the GUI. However, we still have yet to validate that our muscle model would successfully be incorporated in the current tools in OpenSim such as Computed Muscle Control or Static Optimization.


We would like to extend our thanks to the ME 485 teaching team, our ME 485 cohort and the Neuromuscular Biomechanics Lab (NMBL) at Stanford for their constructive feedback and modeling/technical assistance!


  1. Hainaut, K., Duchateau, J., 1989. Muscle fatigue, effects of training and disuse. Muscle & Nerve 12, 660–669.
  2. Kukulka, C.G., Clamann, H.P., 1981. Comparison of the recruitment and discharge properties of motor units in human brachial biceps and adductor pollicis during isometric contractions. Brain Research 219, 45–55.
  3. Liu, J.Z., Brown, R.W., Yue, G.H., 2002. A dynamical model of muscle activation, fatigue and recovery. Biophysical Journal 82, 2344–2359.
  4. Xia, T., Frey Law, L.A., 2008. A theoretical approach for modeling peripheral muscle fatigue and recovery. Journal of Biomechanics 41(14), 3046–3052.