Muscle path length

I would like to put the arm model into various positions and then obtain the lengths of the muscles in each position. I am interested in the passive force in the muscles (i.e. just the force due to muscle stretching) so would like to know the muscle length for different postures in a non-activated state.

Is this possible without running inverse dynamics?

  1. Can you run a study that just determines the position of the model segments/muscles?
  2. How can you obtain muscle path length as an output?

Thanks for your time and sorry for the high number of questions.

Monique

Hi Monique,

Yes all that is possible. You can run the kinematic analysis alone (notice that you still have to run the calibration sequence first when using the 3_E muscles). Then the streching of the mucle and the tendon should be calculated according to their relative passive stiffness only.

You can find the length and passive force of the muscle unit under the menbers Lm and Fp of the muscle in the chart (for example Main.Study.Output.Model.HumanModel.Right.ShoulderArm.Mus.Triceps_LH_1.Fp).

Best regards, Sylvain.

Thanks for the help.

Can I just confirm that the length of the total muscle-tendon unit is Lmt and this equates to the minimum origin to insertion length including the distance over wrapping objects? And that the length of the muscle itself is Lm?

Monique

Yes, this is correct.

Best regards, Sylvain.

Hi Sylvain

When I run a kinematics analysis alone the model obtains a Lmt that changes as expected. However the passive force remains at zero even though Lmt > Lt0 + Lfbar i.e. a case where you would expect passive force.

When I run inverse dynamics the passive force changes but again there are situations where the force is zero but Lmt > Lt0 + Lfbar. The 3-element model has an algorithm to determine the relative lengths of the tendon and muscle (as quoted in the tutorial "The three-element model copes with this through a one-time correction: It recruits the muscle without taking the tendon elongation into account. Then it computes the tendon elongation. Finally, it computes the influence of the elongation on the muscle's strength and corrects the muscle activity to the level that provides the necessary force with the modified strength.") For the situation I am looking at there should be no activation of the muscles. Does this algorithm work in situations in which the activation of the muscle is zero?

Lt stays at Lt0 throughout and LmDot is equal to LmtDot - so all the change in length is occurring in the muscle which does not seem right (if there is some passive force there must be some change in tendon length such that the force in the tendon equates to the force in the muscle).

Any ideas what I might be doing wrong?

Thanks

Monique

After spending the day digging it seems the problem is caused by muscles which are overloaded at some point during the movement - the surprising thing is these muscles seem to work Ok when the muscle is at the longest length (i.e. at the point when it would be overloaded) and fail to work when the muscle gets shorter. See the attached graphs. Four of the muscle paths appear to work - it is just two for which the passive force suddenly drops to zero. The length at this point is still such that there should be passive force. Also for these two muscles the tendon length remains unchanged throughout compared to those that seem to work where the length changes.

Hi Monique,

Did you make sure to take the value of Lt0 after the calibration (that you will find in the model tree) and not the one written in the code? That could explain that in some cases you see Lmt > Lt0 + Lfbar while in reality it is not.

Regarding the fact that all the stretching seem to happen in the muscle, this is probably because the tendon stifness is much higher than the muscle stiffness. Therefore when only the passive force is taken into account most of the elongation happens in the muscle, there is also some elongation in the tendon but it is quite small and sometimes it is hard to detect from the graph.

Best regards, Sylvain.

Thanks for the response.

Yes the lt0 was after calibration - as you can see from the graphs 4 of the 6 muscle paths work as expected - Lt changes just slightly as the muscle length changes and the passive force changes with the length. However for the other two muscle paths Lt does not change at all and Fp drops suddenly to zero.

Any ideas what might be causing this strange behavior of the two muscle paths? These two paths might be overloaded at the start of the movement but the problem seems to occur at the end of the movement.

Thanks

Hi,

I’m not sure that the muscles being overloded have anything to do with this, it might be just a coincidence. Anyway it is a bit difficult to know what is happening there, so if you have a model you can upload then we can try to look at it and maybe get a better idea.

Best regards, Sylvain.

Hi Sylvain

Having looked again I had removed the calibration step as this lead to unrealistic tendon lengths (see the spreadsheet where AnyBody is without calibration and AnyBody_TC is with calibration). The calibrated tendon lengths were about 10 times the original values and while the original values seem small i.e. 3.7mm for supraspinatus the calibrated lengths are much higher than literature values - i.e. for the supraspinatus the calibrated lengths were 70-90mm compared with the value in Langenderfer (2004) of 29.5mm. Further a tendon length of 70-90mm is at least half of the muscle path length which is unrealistic for the supraspinatus muscle.

So I am running the model with probably too small tendon lengths but regardless the model should still calculate passive force throughout the movement - i.e. the error that is happening at the end of the range of movement is still unexplained.

I have attached the model so you can see if you get the same error. The spreadsheet I refer to is in the same zip file called parameters.

Many thanks

Monique

Hi Monique,

I suppose the graphs you have posted earlier are for the model with the calibration. Because the model you have uploaded and i tried (without calibration) gives different results for the Supraspinatus Fp (see graph attached).
Now this one i get makes sense. All 6 muscles are over-stretched at the begining so they have no strength, and therefore no Fp is calculated (equal to 0). When the muscles get back their strength the Fp is calculated, but the supraspinatus 1 and 3 are over-streched for the entire simulation.

Try to upload the version of the model that creates the graphs you have uploaded earlier.

Best regards, Sylvain.

Hi Sylvain

That is very surprising. I just extracted the zip file that I attached, opened the main file and ran the Inverse Dynamics with no calibration and I got different results to you i.e. the same results I posted the graphs of earlier (see attached graph). Any idea what I might be doing to have this strange behavior?

Many thanks for your help

Monique

Ok, i was running the RunApplication that runs the kinematic only. I thought you was doing the same. Running the inverse dynamic gives me the same results as you. So that point is solved…

Regarding the Fp the comment i made previously about the muscle strength is still valid: number 1 and 3 (the one having the Fp drop) have zero strength during the whole simulation. That means the calculated Fp for those two is not valid. If you look at Ft for those two (Ft = Fm + Fp) you will see that it is equal to Fm and much lower than Fp. Actually the Fm itself is just numeric noise (the max is 1e-8), as the strength is zero anyway.

So at the end it seems that the only problem is that for some reason the system display some values for the Fp of those two muscles while it is in fact zero (but you can see that Fp is still considered a zero in the sum Ft = Fm + Fp as it rightly should).
And that is a bug i guess. We will try to fix it.

Sorry for the inconvenience.

Best regards, Sylvain.

Hi Sylvain

Thanks for the quick reply. I agree the Fp should be zero throughout so the values it was giving were just causing confusion.

Can you please explain how it is decided that a muscle is without strength? The error message states that the muscle has been stretched too much - how much stretch is considered too much?

Thanks again

Monique