Finger/PIP Model: inverse dynamics not working


I’ve created a model of the finger focusing really on the PIP joint. The model contains some STL geometries and motion from C3D data. See attached .zip

I’ve got the kinematic model working but I can’t get the inverse dynamics running: “Muscle recruitment solver : solver aborted due to singular KKT matrix”

I think it may be an issue with the reaction forces, but I’m not sure. :confused:

While I have some muscles in there, there are not enough (deliberately) to drive all DOFs of all joints, so I’ve set the reactions ‘On’ in the joints where I don’t have/want muscles to drive them. The main joint I am interested in is the PIP here I have set Reactions ‘On’.

I’d be very grateful for some help on this, I’ve spent a lot of time trying but seemingly in vain.

Thanks in advance,

P.S. I’m using AnyBody:
Version (64 bit)
Build 16954.42600

Hi Chris,

It is a nice model!

I have taken a look at your model and tried to run it, you are right it fails in the way describe.

I think you will need to shift the strategy sligthly, i suggest the following changes:

1 run the model kinemtically using the markers, extract the joint angles
2 Drive the FDK model using the xtracted joint angles

This approach will allow you to shift to the determined solver when solving FDK. I think what possible goes wrong now is that when the FDK solver tries different positions for the bone it fails to solve kinematics. This is the approach we normally use for such models.

Best regards

Good morning Søren,
Many thanks for your reply.
As if preempting your reply, I began adapting the model to do as you suggested.
the model is running now and there’s a ‘switch’ at the top of the main script that toggles between the C3D data and the recorded joint angles.

I’ve tried then running the inverse dynamics study using MyStudy2 but the simulation is really slow, but more significantly, the PIP surface geometries seem to penetrating much more than it should.

The surface is defined in the joint folders, I wonder if it’s some of the parameters associated with this?

As ever, very grateful for your help!
Kind regards,

Hi Chris,

Sorry for response time…

I have tweaked the model a bit to make it run i have found these issue:

[li]Artificial stiffness had wrong sign
[/li][li]The model started initially having a deep penetration this was the starting guess on the FDK, this meant that the FDK solver never managed to move the surfaces apart. To avoid this i have reformulated the rev joint to be consisting of a linear and rotational measure it is basically the same as before except it allows you to specify the position of each component separately in this case the Z component to be 5mm., which means that there is no/limited initial contact from the start of the FDK iteration. The problem of having initially a deep penetration is that the force eflectioncurve can be jagged and the FDK solver will be trapped in a local minimum.
[/li][li] I have also changed the setting of the study

The model now runs 8 time frames before it stops, it stops becuase it reaches almost 90 deg and the supplied stiffness is no longer sufficient i think…

I have attached the three files i have edited.

I hope it made sense

Best regards

One more thing please also see

it contains a troubleshooting guide on FDK models.

Hi Søren,
Thanks again for your help and the link too. I’m just back from holiday but will have a look as soon as I get a chance.
Thanks again,