Calculating max torque capacity about a joint

Provide easy-to-use, extensible software for modeling, simulating, controlling, and analyzing the neuromusculoskeletal system.
POST REPLY
User avatar
Marc Carmichael
Posts: 45
Joined: Thu Jul 16, 2009 2:50 am

Calculating max torque capacity about a joint

Post by Marc Carmichael » Tue May 18, 2010 9:53 pm

Hello everyone,

Firstly let me thank the developers of OpenSim for such a nice program! An also a big thanks to everyone who have already helped me on previous threads. I am new to OpenSim so excuse me if my questions seem simple.

I wish to perform an analysis using the Stanford upperlimb model in which I calculate the maximum possible joint torques that can be produced by the muscle's contraction. For example, I wish to calculate the maximum elbow flexion torque than can be produced by the model. I then want to repeat this over and over again for different elbow, shoulder, wrist positions to see the relationships between the arm pose and elbow joint strength.

The problem I am facing is that I am tackling this problem from a non-typical way (I.e not starting out with a *.mot consisting of motion capture data), and instead I think my approach is almost backwards and I am having trouble finding examples of what I am trying to achieve.

So this is what I am thinking of doing. Please let me know if there is a simpler way of going about this problem, or if my method will simply not work.

1 - Load the model from the *.osim file

2 - Initialize the state and set the joint angle coodrinate to the desired angles

3 - Set the state's joint angle speeds and accelerations to zero (since I want to calculate isometric strength)

4 - Initialise a "JointReaction" analysis about the elbow joint

5 - Create an optimizer which has the muscle activations as its optimization inputs. The objective function of the optimizer is to maximize the joint reaction torque about the axis of rotation (lets call it z-axis) and make all other reaction forces/torques equal to zero. Therefore the objective function would look something like this:

F = -Mz + Fx^2 + Fy^2 + Fz^2 + Mx^2 + My^2;

6 - Once the maximum joint torque has been calculated, repeat steps 2 to 5, reinitializing the state with a different arm pose.



Do you think this approach will work? Perhaps there is a much simpler method which I am not familiar with. I want to avoid any dynamic analysis since I am only interested in the static case at the moment, and I wish to keep the processing time down as much as possible.

If this approach does seem like it will work, are there any implementation steps I have missed?? For example do I need to create a "Manager" instance to manage this analysis? Do I need to run an integration within the optimization? Thanks in advance for your help :)

-Marc

User avatar
Marc Carmichael
Posts: 45
Joined: Thu Jul 16, 2009 2:50 am

RE: Calculating max torque capacity about a joint

Post by Marc Carmichael » Wed May 19, 2010 1:04 am

I have started to write my program, I am beginning with the OptimizerExample.cpp program which is one of the API examples that comes with OpenSim.

So what I want to do is remove the dynamic optimization which is done in the example to maximise the arm velocity, and instead replace it with an optimization based on the joint reaction force/torque in a specific state (which is static).

How do I go about performing a one-off JointReaction analysis for a single static state? Can I add the JointReaction to the model before the optimization, then once inside the optimization loop, run the JointReaction.begin(&state) function? Will that calculate the joint reaction for that current state? If so then is it possible to access the storage class where they are kept?

Sorry for all the questions :)

POST REPLY