Inverse Dynamics - Static optimization relationship

Provide easy-to-use, extensible software for modeling, simulating, controlling, and analyzing the neuromusculoskeletal system.
POST REPLY
User avatar
ian williams
Posts: 4
Joined: Fri Feb 24, 2012 11:49 am

Inverse Dynamics - Static optimization relationship

Post by ian williams » Wed May 01, 2013 9:07 am

Hi,

I'm struggling to understand the relationship between the output of the inverse dynamics tool and the problem that static optimization solves.

My understanding is that inverse dynamics outputs the joint torques that would make a model follow a specified motion. Are these same torques the target values for the static optimization tool (i.e. does the tool vary muscle activations until the resultant joint torques match these target values)?

I'm getting confused for a number of reasons:

1) I can't seem to get the maths to work. For a given motion I plotted muscle moments, active and passive forces around a joint and ran the static optimizer to obtain muscle activations. I then calculated resultant joint torque by summing each muscles joint torque:
muscle joint torque = (activation * active fibre force + passive force) * moment

but this summed torque doesn't seem to match the torque that inverse dynamics has identified (even allowing some error because of not including velocity effects). I believe the static optimization process is working (no errors given), but it seems to be targeting different joint torques?

2) I can't work out how to verify whether the static optimization is working. I wanted to run the output through forward dynamics, but that seems to need muscle excitations rather than activations (is that correct?). I tried running static optimization with the osim model static (i.e. in a single pose for several seconds) on the assumption that it would mean that the activation /excitation thing would be negated but the resulting forward dynamics motion was nothing like the static motion input.
CMC seems to crash as well with no reason given.


Does anyone have any advice on what i'm doing wrong or a better way to approach validating muscle activations?
Thanks
Ian

User avatar
Ajay Seth
Posts: 136
Joined: Thu Mar 15, 2007 10:39 am

Re: Inverse Dynamics - Static optimization relationship

Post by Ajay Seth » Mon May 13, 2013 2:59 pm

Apologies for the confusion. OpenSim's StaticOptimization algorithm solves for muscle forces that generate the desired accelerations directly and doesn't solve for the necessary muscle joint moments as an intermediate step. If the kinematics (accelerations) are identical between inverse dynamics and static optimization then the generalized force (torque) must be equivalent to the net moment produced by muscles and other forces. You could always look at the muscle forces estimated by static optimization and CMC to compute the net joint moment.

1) Static optimization computes the max muscle force (activation of 1) based on the current state (angles, velocities) of the model and assuming an infinitely stiff tendon to then solve for an activation on (0,1) that scales this max muscle force. Prior to 3.0 this force included passive contributions so the applied muscle force was a*fiso(fl*fv+pfl)*cos(pennation). Scaling the passive force by a seemed wrong to us, so in 3.0 this was changed to exclude the passive force in the calculation of the instantaneous max muscle force. Now the solution for a uses the max muscle force as simply fiso*fl*fv*cos(pennation) (still assumes no tendon dynamics). In your equation you included additive passive force and neglected pennation. We take advantage of the activation scaling the muscle force in formulating the optimization problem.

Please let us know if you are able to compute equivalence now.

2) CMC failures are often due to lack of actuators to control degrees-of-freedom that are not actuated by muscles (like the pelvis in ground). CMC has a similar estimate of the max muscle force, but with the added steps of back-solving for excitations, including position and velocity error feedback in the target accelerations, and integrating the full model (including tendon) dynamics forward in time.

Please let us know if you have any other problems with CMC.

User avatar
Phillip Daniel
Posts: 2
Joined: Wed Nov 25, 2020 2:03 pm

Re: Inverse Dynamics - Static optimization relationship

Post by Phillip Daniel » Wed Jul 07, 2021 11:47 am

Thank you for the clarification. If the Static optimization (SO) tool ignores the passive force component, is the force that is computed incorrect? I assume that this is a valid approximation, but I can't find the justification anyplace. If the "a" resulting from SO is applied to

fm=a*fiso(fl*fv+pfl)*cos(pennation)

when computing the joint moment for forward dynamics, or comparing the estimated fm to measured muscle forces, wouldn't their be a discrepancy?


Also, it is not clear to my why the muscle force can't be computed as below in the Static optimization tool:
  • fm = fiso(a*fl*fv+pfl)*cos(pennation)

POST REPLY