Math behind calculation of muscle input

SCONE is a software tool for predictive simulations of biomechanical movement. It uses OpenSim for modeling and simulation, and performs optimization using various control strategies, including feed-forward control, proprioceptic feedback control, and bal
POST REPLY
User avatar
D T
Posts: 24
Joined: Thu Nov 21, 2019 3:40 pm

Math behind calculation of muscle input

Post by D T » Sat Aug 29, 2020 5:35 pm

Hello all,
I am current doing a dive on the math behind muscle input calculations in SCONE's GitHub repository. Specifically, I am interested in the calculations performed in the MuscleReflex function. Here is the section I am referring to:

From MuscleReflex.cpp

Code: Select all

void MuscleReflex::ComputeControls( double timestamp )
	{
		// add stretch reflex
		u_l = GetValue( m_pLengthSensor, KL, L0, allow_neg_L );

		// add velocity reflex
		u_v = GetValue( m_pVelocitySensor, KV, V0, allow_neg_V );

		// add force reflex
		u_f = GetValue( m_pForceSensor, KF, F0, allow_neg_F );

		// add spindle reflex
		u_s = GetValue( m_pSpindleSensor, KS, S0, allow_neg_S );

		// add spindle reflex
		u_a = GetValue( m_pActivationSensor, KA, A0, allow_neg_A );

		// sum it up
		u_total = u_l + u_v + u_f + u_s + u_a + C0;
		AddTargetControlValue( u_total );
	}
I understand the parameters being fed into GetValue(), however I can not find reference to how those parameters are used to calculate individual components of the muscle input. Is there an equation, other script, or literature reference for how these inputs are formed? Thank you for any/all information, and apologies if I simply missed a reference when searching through files.

(As a side question, is there a reference or literature explaining spindle reflex? I am unfamiliar with this parameter.)

Sincerely,
Dylan

User avatar
Thomas Geijtenbeek
Posts: 432
Joined: Wed Mar 12, 2014 8:08 am

Re: Math behind calculation of muscle input

Post by Thomas Geijtenbeek » Mon Aug 31, 2020 4:08 am

The actual feedback gains and connections of the reflexes are defined inside the .scone scenario. An example can be found in Tutorial 4, which implements the control strategy developed by [Geyer & Herr 2010]. The reflexes depend on the current state of the leg, the transitions between the states are handled by the GaitStateController.

User avatar
D T
Posts: 24
Joined: Thu Nov 21, 2019 3:40 pm

Re: Math behind calculation of muscle input

Post by D T » Mon Aug 31, 2020 7:38 am

tgeijten wrote:
Mon Aug 31, 2020 4:08 am
The actual feedback gains and connections of the reflexes are defined inside the .scone scenario. An example can be found in Tutorial 4, which implements the control strategy developed by [Geyer & Herr 2010]. The reflexes depend on the current state of the leg, the transitions between the states are handled by the GaitStateController.
How is a numerical value for "input" calculated? I am clear with the organization of reflex trees depending on the gait state, however the actual calculation of input as a function of those determined values (feedback gain, feedback length) is what I am attempting to find. u_total seems to be a combination of the various reflexes, but I am unsure of how SCONE reaches its final answer for giving muscles their input value.

User avatar
Thomas Geijtenbeek
Posts: 432
Joined: Wed Mar 12, 2014 8:08 am

Re: Math behind calculation of muscle input

Post by Thomas Geijtenbeek » Mon Aug 31, 2020 7:47 am

Ah, ok :) The muscle length (L) corresponds to the normalized fiber length of a muscle, velocity (V) corresponds to normalized fiber velocity and force (F) is normalized force. The spindle (S) is an experimental sensor that combines length and velocity based on [Prochazka 1999].

Length and velocity are normalized by optimal fiber length (l_opt) and l_opt / s, while force is normalized by the maximum isometric force.

POST REPLY