Knee Laxity Model: Inverse Dynamics with FDK

Hi,

I am using AnyBody to try and setup a knee laxity model where I can apply an external force to the tibia (shank) and measure the displacement (AP displacement).

I started with the Free Posture model in the repository and then I inserted a total knee replacement into the model. Next, I added ligaments to the model which have forces to restrict the knee movement. When I try to run an Inverse Dynamics Analysis with FDK on this model, it keeps giving me different errors (constraint errors mostly) and failing differently every time. The most troublesome thing is how inconsistent the model is. If I barely move the implant or ligament it completely fails a different way, which does not make sense. I was wondering if you could help me figure out what is causing it to constantly fail and be so inconsistent?

It has been suggested to me to exclude the normal knee joint in the model using MechObjectExclude and then creating my own joint using CType’s with ForceDep. I was wondering what your thoughts on this was, and what exactly is the purpose of doing this?

If you could please take a look at my model and let me know what you think about the model and why it is not working/ being so inconsistent that would be appreciated. If you could explain the purpose of removing the knee joint and making my own, and if you think that would be a good idea that would be wonderful.

Thanks,
Michael

Hi Michael,

I have taken a quick look at the model, there are a number of things missing before this model will work :wink:

In the model i see a freeposturemodel equipped with two ligaments and a surface, please correct if i am wrong i might have overlooked so items.

I suggest to do these things:

[ol]
[li]Do the FDK tutorial
[/li]
[li]Look at the TKR model in the beta folder
[/li]
[li]Replicate the exclusion of the knee joint
[/li]
[li]Replicate the definition of the ligaments
[/li]
[li]Replicate the definition of the surfaces (use you own geometries)
[/li]
[li]Replicate numeric settings
[/li]
[li]Replicate the definition of the FDK dof
[/li][/ol]

Running FDK models can be difficult, they rely on the stiffness of the joints to be well defined if there are dof in the joints which has no stiffness because ligaments are slack it may cause the model to fail.

There some guidelines listed on this page
http://wiki.anyscript.org/index.php/All_about_Force_Dependent_Kinematics

In general i would strongly recommend to start simple and get some experience on how the FDK works, before heading into a full blown knee FDK model.

Best regards
Søren

Hi Soren,

Thank you for your response.

I took a look at the tutorial and beta. I replicated the knee exclusion from the beta and it seems to be working.

I replicated the ACL and PCL drawings and forces from the Beta, but I did not include the other ligaments that they had. My study is focusing on the ACL and PCL, but do you think I need to include the other ligaments as well in order to get it to run my model properly?

By replicating the definition of the surfaces did you mean to just create a Surface contact like they did in the beta? I did that as well.

I replicated the definition of the FDK dof like the tutorial. In the tutorial they have the first two dof as ForceDep and the last three as hard. However, on the beta all 5 dof are ForceDep because they have all the ligaments included I believe.

I have also added a calibration study for my ligaments, but it does not seem to be making a difference in my model. I was wondering why this might be?

My model runs now; however, it translates anteriorly (forward) when running the inverse dynamic analysis. This is what I want as an end result but it is doing this without an external force applied. I was wondering what is causing this translation? My assumption is the ligaments which is why I created a calibration study but so far it is not making a different.

I have attached my updated model if you can take a quick look at it and see what your thoughts are.

Thanks,
Michael

Hi Michael,

The calibration study you have done will not impact the results this is correct.

The reason is that the force definition for this ligament is created in the script and the calibration study expect a standard ligament model to be used, which is not the case here. Secondly in case the ligament had been defined using the ligament model in AMS it should have been calibrated using AnyBodyLigamentLenCalOpr not the study you have used :wink: which is to calibrate 3 element muscles.

So in your case I would simply use drivers you have in the calibration study and run a kinematic study, where you have the leg in a straight postion. then dump the length of the ligaments and used these manually to adjust your ligament properties (like lr) as needed.

Hope it made sense

Best regards
Søren

Hi Soren,

Thank you for the suggestion. I ended up making a kinematic study like you suggested. When I ran the study I then opened up a Chart and plotted the position of the Pline for ACL and PCL vs time. This gave me lr (correct?) which I then inserted into my FDK model for the lr value. When I ran this the model ran like I expected it too and did not move at all.

For my next step I inserted an external force to try and displace the tibia. When I do this it does not cause any displacement. When I increase the force by 10x it then just fails. I was wondering if you could take a look at my model and see why the external force does not cause any displacement? I think it might have something to do with the ligament properties since I only calibrated the ligament length. I was just wondering if you had any other thoughts or suggestions? My model is attached below.

Thanks,
Michael

Hi Soren,

I have made a couple adjustments the last couple of days. I did some research and found stiffness values that were more accurate to what literature said. This allowed my knee to move now because originally the values for stiffness were to high.

My problem now, is that my tibia displaces forward when the external force is set to 0. This tells me that the external force is still not right, and it also tells me that there is something wrong with my ligaments. Should I go back to the stiffness values that the other AnyBody model had, even though that is not the same values as I found in literature?

Secondly, how do I get my force to work? It does not seem to effect my model at all, so I believe there is something wrong with how I created it.

My most recent model is attached below.

Thanks,
Michael

Hi Michael,

In the model there are only one dof with FDK enabled on, this is the x direction.

The forces on this direction need to be in equilibrium, the forces acting on this dof will be the external force which is zero and the ligament forces. Additionally you will also get a reaction from the surface contact which could create a force in the x-direction.

So in otherwords the results you see, that it moves forward with no load applied may be simply because this is the only way for it to create equilibrium, since the other directions in the joint are locked into a fixed position.

I suggest to do the following:

[ol]
[li]Enable the FDK dof again on five dof, only drive knee flexion to a fixed angle.
[/li]
[li]Add a virtual spring between the shank and thigh on all six dof… use a AnyForce on a AnyKinLinear and AnyKinRotational to do this. The artificial stiffness is needed because your ligament configuration is very simplified, and does not provide stiffness in all directions.
[/li]
[li]Ensure that model nows runs with zero load and make sure you like the position it ends up in. Note it will always move when you run it… unless the initial position provided in the joint, already make the FDK dof to be in equilibrium
[/li]
[li]Then apply the external force.
[/li][/ol]

Best regards
Søren

Hi Soren,

Thank you very much for your suggestion. With your help we have got our model to run now. There still needs to be some calibration and cleaning up of the properties of things to make it more accurate, but at least the model does what we want now.

I was wondering if there was a way to calibrate the springs? I know in the tutorials they just choose 1000Pos or 5000Pos, but is there a way to find the stiffness values at a more accurate number to control the stability of the knee more accurately? Is there something similar to the way we calibrate the ligaments?

I was also wondering if there was a way to turn off the contact force between the bones to ensure that the only contact force controlling the motion of the knee is between the two implants?

Thanks,
Michael

Dear Michael,

  1. There may be no references regarding the stiffness values for those artificial stiffness.
    The easiest way for you to calibrate those stiffness is to put some external forces on tibia and see the A-P distance or the I-E rotation.
    By changing your stiffness values, you may be able to reach the A-P distance which is close to some existing reference.
    But this process will take some time.

  2. If you want to turn off the contact, then you should recover at least one reaction at the knee joint.

Best regards,
Moonki

1 Like