muscle singularity problem

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

muscle singularity problem

Post by Marc Carmichael » Mon Oct 11, 2010 2:32 am

Hi,

I am using the upper extremity model to calculate the muscle Jacobian (muscle moment arms) and kinematic Jacobian (hand velocity/joint velocity relationship) for given poses via the API. I have problems when I set the "shoulder_elv" coordinate to zero, since this puts the arm into a singular position (the elv_angle does not produce any model movement).

In this position, the muscle moment arms are returned as being tiny or zero. Interestingly, when calculating the kinematic Jacobian, the singularity does not appear to effect its values (although it should!). Is there a way around this? I am using the computeMomentArm() function to find moment arms.

FYI I am using the SimbodyEngine's getVelocity() and getAngularVelocity() functions to construct the kinematic Jacobian.

Thanks

Marc

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

RE: muscle singularity problem

Post by Marc Carmichael » Fri Jan 21, 2011 12:28 am

Hey all, I want to re bump this thread because I previously created a work around for the problem, but it has come back to bite me :)

The problem is I calculate a models kinematic Jacobian (the relationship between the Cartesian linear/angular velocity of a point in a body against the angular velocity of the generalized coordinates). The problem is that I get incorrect results when I put the model into a singular position, and I am not sure if it's a bug or my approach.

What I do is through the API I set all joint speeds to zero. I then cycle through each joint setting its speed to 1rad/s. Once set I then calculate the linear/angular velocity of the point in a body using the osimModel.getSimbodyEngine().getVelocity() and osimModel.getSimbodyEngine().getAngularVelocity() functions. It returns a result but It is incorrect in certain positions.

I am using the upper limb model by Katherine Holzbaur. When I set the "shoulder_elv" coordinate to zero the "elv_angle" produces no model movement since the two axes of rotation align, and a constraint counteracts the movement. However when I used the pre mentioned simbodyengine function the results show that the model does indeed move (since the points are shown to have some velocity).

Is this a bug with the simbodyengine? Does it not take into account coordinate constraints?

Cheers

Marc

POST REPLY