Page 1 of 1

Behaviour of JointReaction analysis with zero muscle forces

Posted: Thu Mar 12, 2015 6:53 pm
by backdrifts
Hi everyone,

I am trying to calculate the intersegmental forces[1] at the ankle joint. I would expect that to work fine by using JointReaction analysis and setting all the muscle forces equal to zero. However it does not seem the case.

As test data I have used this example from Matt DeMers and the only modification I've done was setting to zero all the muscle forces.

Looking at the results there is something not fully convincing, as I would expect the intersegmental forces at the ankle to resemble the ground reaction forces. I am aware of the fact that they are in two different reference systems, but the norm of the two vector is quite different anyway.

Given this difference, I have tried to calculate the intersegmental forces adding translational joint at the ankle and using ID. In this way I should get the external forces that are applied at the ankle joint to satisfy the system dynamics. My understanding is that this will be reported to the reference system of the parent, but I am not totally sure. However, this should correspond, apart from the sign, to the intersegmental forces at the ankle reported in the tibia reference system, and they look like this, pretty different from the result of the joint reaction.

As a final test I tried to verify the equation Fr = Fi + sum(Fm), where Fr is the contact force (i.e. considering the effect of muscles), Fi is the intersegmental force, and sum(Fm) is the vectorial sum of muscle forces applied to the bodies that are children of the ankle joint. For this analysis I have used muscle forces calculated through static optimisation for both Fr and sum(Fm). The static optimisation setup was the same setup provided in the Matt's example. As a result, the equation was satisfied only with Fi calculated with ID.

So, now my question: what is going on here? Am I missing something critical or JointReaction does not work correctly when muscle forces are set to zero?

Cheers
Claudio

[1] - Zajac, F.E., Neptune, R.R., Kautz, S.A., 2002. Biomechanics and muscle coordination of human walking. Part I: introduction to concepts, power transfer, dynamics and simulations. Gait & posture 16, 215-232.

Re: Behaviour of JointReaction analysis with zero muscle for

Posted: Fri Mar 27, 2015 11:36 am
by mdemers
Hi Claudio,

Thanks for the great and very detailed question!

The short answer is this. It's not ok to just set all muscle forces to zero in the inputs to the JointReactionAnalysis. If you do, you no longer have a dynamically consistent system, and the joint reaction calculations will incur all the errors. You must performs static optimization and joint reaction with identical systems.

The long answer. When you performed static optimization, OpenSim ensured that the sum of all actuator forces (muscles, residuals, reserves, other CoordinateActuators), all external forces (GRFs), and constraint forces equals the desired inertial forces. In equation terms, where Mddq is the mass*acceleration (computed from the experimental kinematics)

Mddq = F_muscles + F_OtherActuators + F_constraints + F_GRF + F_gravity

StaticOptimization solved for the F_muscles and F_OtherActuators that balance this equation. When you zeroed the muscles forces, then fed them to JointReaction, you were asking JointReaction to recreate an infeasible system. You told it that

erroneous equation: Mddq = F_OtherActuators + F_constraints + F_GRF + F_gravity

which is not true. Therefore, JointReaction doesn't have all the information to compute correct joint loads, and all errors in the erroneous equation above are projected on to the internal joint loads. Bad news.

Here are two possible workflows that will work as you need.

1. The most similar to you current approach
a. Disable/Remove all muscles
b. ensure that every degree of freedom has a corresponding CoordinateActuator
c. run StaticOptimization, using no muscles. This is equivalent to the net, intersegmental actuation model you're interested in.
d. check results and ensure that there are no muscle forces, but that the CoordinateActuators are enough to drive the system
e. run JointReactions with these results, using the same input files and model as StaticOptimization, and the forces file output by StaticOptimization.

2. The easiest method, using RRA or CMC. The Forward, CMC, and RRA tools run forward simulations which can have JointReactions (and other analyses) attached to them. The JointReactions are computed while the simulation is performed, guaranteeing that the simulation and JointReaction results are consistent with each other.
a. Setup RRA or CMC
b. If using RRA, choose not to edit any segment mass properties or reduce residuals.
c. make sure that you replace all model actuators with an actuators file you provide. You want this actuators file to contain 6 pelvis residuals and CoordinateActuators for each model degree of freedom.
d. select the Analyses tab
e. add a JointReaction Analysis
f. highlight the JointReaction Analysis and select edit
g. here you can configure which joints you want to analyze, which forces you want to report, and which reference frame you want them reported in.
h. run

Hope this helps!

Matt

Re: Behaviour of JointReaction analysis with zero muscle for

Posted: Sat Mar 28, 2015 12:00 am
by backdrifts
Hi Matt,

thank you very much for replying with such detail. It was really helpful.

However, while I totally agree on the dynamic inconsistency of the full model when zeroing the muscle forces, there is still something that does not totally convince me.

I watched again this really cool tutorial about the computation of joint loads in OpenSim. In the video you explain the process really well, and you basically say that the joint reactions are calculated from the most distal body and going up the kinematic chain.

The following is the example for the tibia body diagram, screenshotted from the youtube video
Image

Where:
M_ia_i is known from the kinematics
Sum(F_external) is known
Sum(F_muscles) is know from StaticOpt, or it is known because I decide to set it to zero
F_constraint is know, even though we can just forget about it at the moment
R_i+1 has been calculated from the previous step (and it should degenerate to zero when considering the foot, or the most distal, segment)
R_i is our only unknown

Given this body diagram, I do not understand why the dynamic consistency is a requirement. Setting muscle forces to zero and subsequently solving the body diagrams one after the other would just lead to smaller reaction forces (i.e. intersegmental forces), since all the other terms are known.

Where am I getting this wrong? Are the reaction forces calculated with a different algorithm than the one explained in the video?

Sorry for the lengthy post.

Cheers
Claudio

Re: Behaviour of JointReaction analysis with zero muscle forces

Posted: Mon Mar 18, 2019 9:44 am
by mmoessner
I habe similar problems as Claudio.

For validation/checking purposes I want to swicth off the influence of the
muscle forces.

Looking at the figure above it should be sufficient to zero the muscle forces.
I do this by setting <forces_file /> in the joint reaction analysis input-xml-file.
The movement is a very slow squat movement, so Ma ~ 0.
As external forces I consider only weight and the ground reaction force Fy
equal to the weight of the person.

the force at the pelvis should be zero. The force at the ankle joint should
equal the ground reaction force. In upright standing postion (=start)
the knee force should equal the ground reaction force minus the weight of
the shank. ...
In this situation is easy to calculate the joint reaction forces by hand.

But opensim's results are different, unrealistic high. WHY
Without muscle forces the opensim's calculations does not rely on
any calculations done by the static optimization.
It does not read the results file of the static optimization.

Martin