Knee load in medial and lateral condyles

Hi,

I would like to know if it is possible to modify the knee joint in the gait model so that we would be able to estimate knee joint loads in both the medial and lateral condyles.

I know that general muscles are useful for such problematic. If I switch all the reactions of the knee revolute joint to “Off”, would it be possible to use general muscles to create to contact location on the distal femur instead of one ?

Also, does the FDK coupled with the AnyForceSurfaceContact could do the job ? My experience with such algorithm is that you must use pretty stiff material properties in order to stabilize the joint. We want to simulate the normal joint, which is not as stiff as a prosthesis. Also, we would need to pair of contact, since the femur-tibia contact would only give us one set of contact force, area and penetration.

Thank you.

Pierre

Hi Pierre,

I would like to know if it is possible to modify the knee joint in the gait model so that we would be able to estimate knee joint loads in both the medial and lateral condyles.

Yes this is possible

I know that general muscles are useful for such problematic. If I switch all the reactions of the knee revolute joint to “Off”, would it be possible to use general muscles to create to contact location on the distal femur instead of one ?

yes this is a feasible solution, if you create a medial and lateral node on the knee axis and create AnyGeneral muscles using these nodes

Also, does the FDK coupled with the AnyForceSurfaceContact could do the job ? My experience with such algorithm is that you must use pretty stiff material properties in order to stabilize the joint. We want to simulate the normal joint, which is not as stiff as a prosthesis. Also, we would need to pair of contact, since the femur-tibia contact would only give us one set of contact force, area and penetration.

This is also a posibility, but it increases the complexity since this would alter kinematics also, there is an example of such a model in the Beta section of the repository.

Best regards
Søren

Hi Soren,

When you say that I must create a medial and lateral nodes, do you mean two pairs of “AnyRefNodes” on the femur and the tibia ? If this is the case, how do I create the “AnyGeneralMuscle” ? I guess I must create one for each DOF (XYZ) of each condyle ?

Also, do you think that the estimations that I will get will be realistic ? If I do the summation of both medial and lateral condyles forces, will I get the same result as I would measure in the former knee revolute joint ?

I just had a quick look at the knee prosthesis model. It seems much more exhaustive than mine. Like I though, you divided the prosthesis into two parts, in order to have two sets of reaction forces, right? In the first simulation step, the system shows multiple muscle overload warnings. However, when I look at the activity enveloppe, there is no such overload. What is the explanation ?

Thank you.

Pierre

Hi Pierre,

When you say that I must create a medial and lateral nodes, do you mean two pairs of “AnyRefNodes” on the femur and the tibia ? If this is the case, how do I create the “AnyGeneralMuscle” ? I guess I must create one for each DOF (XYZ) of each condyle ?

Yes

Also, do you think that the estimations that I will get will be realistic ? If I do the summation of both medial and lateral condyles forces, will I get the same result as I would measure in the former knee revolute joint ?

If you make the muscles strong enough and you end up supporting the same dof as the revolute joint, the results should not be too different.

I just had a quick look at the knee prosthesis model. It seems much more exhaustive than mine. Like I though, you divided the prosthesis into two parts, in order to have two sets of reaction forces, right? In the first simulation step, the system shows multiple muscle overload warnings. However, when I look at the activity enveloppe, there is no such overload. What is the explanation ?

This warning comes while it is try to resolve the FDK steps and try out some “strange position” once the FDK has converged there is no overload.

Best regards
Søren

Hi Soren,

Does 5000 N is strong enough ? I guess yes, since the maximum load in the Y direction is 2300 N.

In order to make it work, I had to create one set of pushing and pulling muscles per DOF, which makes 12 general muscles for the 6 DOF of the medial and lateral condyles.

Do you think that adding ligaments would improve the simulation ? I was thinking of using the ligaments from the knee prosthesis model.

I have 2 other questions:

  1. the “GaitLowerExtremity” of the rep 1.5 seems to be different from that of the rep 1.4.1. I guess that the rep 1.5 has some improvements and should be used instead of the rep 1.4.1, right ?

  2. How do you found/estimated the knee joint rotation centre ? Visually, it does not seem to be located at the right place (ie. too low compared to the curvature of the condyles).

Thank you.

Pierre

Hi again,

My question about the knee joint centre has not been answered yet. For us, this issue is of particular interest since the location of the knee joint centre is likely to influence gait kinematics and dynamics.

Thank you.

Pierre

Hi Pierre,

Sorry for this,

The strength of these muscles should be high enough not close to the muscle activation envelope, if the strength becomes too low the muscles would try to some extend to avoid using these muscles.

Kinematically the model is still the same right? so adding the ligaments would not change much because the joint is still in terms of kinematics a revolute joint ?

In general i would always use the newest repository, the release notes in the repository should list the main changes between the two versions.

The knee joint center comes from the data set used to create the model, there are references to this is the model see also

http://wiki.anyscript.org/index.php/AnyBody_Body_Model#LegTD_TLEM

There can be inconsistencies between the bone and the data set, the bone do not originate from the same subject as the data, but has been scaled to macth the dataset, so this can explain this.

Best regards
Søren

Hi Soren,

Thank you for your answers. I saw that it is possible to morph the generic bone to a patient’s specific bone in AnyBody 5.2 (newsletter October 2, 2012: Subject-specific models in AnyBody).

I’m particularly interested in the following idea:

“A non-linear transform (AnyFunTransform3DRBF) based on Radial Basis Function (RBF) and sets of corresponding source and target landmarks were added to the AnyBody Modeling System which partially resolved this problem, i.e. a generic AnyBody bone could be morphed into a subject’s bone using several landmarks (either manually defined or defined on imported surfaces derived from medical images in Mimics (Materialise, Leuven, Belgium) as well as corresponding muscle and ligament attachment points…”

If I understand it well, with the subject’s bone, you define a set of bony landmarks and muscle/ligament attachment points, so that the model geometry and the muscles would be adjusted to that bone, right ? This would be a full automatic process, or it would require some manual adjustments of muscles/ligaments origins and insertions ?

Also, do you have any references (excluding the tutorials) that details the RBF function and its usage for bone geometry scaling ?

Thank you

Pierre

Hi Pierre,

There might be a publication related to this technique (but not explaining it in much detail) in the closest future, but at the moment the tutorial is the best source of info. Especially should you be interested in the behaviour of such transforms, have a look at lesson 3 appendix. It has a visual explanation and may help to understand it better.

Yes, you understand it correct. The logic here is that you select some landmarks and if you know some insertions/origins - you would probably like to use them for better accuracy, but if you don’t - you could select some typical/recommended anatomical features/landmarks and let the method to do the job. And if you’re eventually unhappy you could always adjust the misbehaving nodes.

Regards,
Pavel

Hi,

I am also looking into the measurement of medial and lateral knee loads during gait cycle. I have some questions regarding the usage of AnyGeneralMuscle.

yes this is a feasible solution, if you create a medial and lateral node on the knee axis and create AnyGeneral muscles using these nodes

How do you use the nodes to define an AnyGeneralMuscle?So far I know this class only takes AnyKinMeasure as the input?

Also, I tried following the tutorial on General Muscles and came up with this code:


AnyKinLinear LateralPos =
{
Ref = 0;
AnyFixedRefFrame &Ground=Main.Studies.InverseDynamicStudy.EnvironmentModel.GlobalRef;
AnyRefNode &LT = Main.Studies.HumanModel.BodyModel.Right.Leg.Seg.Shank.LateralTibialEpicondyle;
};
AnyKinLinear MedialPos =
{
Ref =0;
AnyFixedRefFrame &Ground = Main.Studies.InverseDynamicStudy.EnvironmentModel.GlobalRef;
AnyRefNode &MT =Main.Studies.HumanModel.BodyModel.Right.Leg.Seg.Shank.MedialTibialEpicondyle ;
};

AnyMuscleModel Musc2 =
{
F0 = 5000;
};
AnyKinEqSimpleDriver LatPos={
AnyKinLinear &LP=.LateralPos;
MeasureOrganizer={0,1,2};
Reaction.Type={Off,Off,Off};
DriverPos={1.4,0.4,0.5};
DriverVel={-1,0,-0.1};
DriverAcc={-1.3,0.3,1.4};
};
AnyKinEqSimpleDriver MedPos={
AnyKinLinear &MP=.MedialPos;
MeasureOrganizer={0,1,2};
Reaction.Type={Off,Off,Off};
DriverPos={1.3,0.3,0.48};
DriverVel={-1.2,0,-0.1};
DriverAcc={-1.7,0.2,1.8};
};

/*AnyGeneralMuscle Lateral =
{
//ForceDirection = 1;
AnyKinMeasure &Angle=.LatPos;
AnyMuscleModel &Mus = .Musc2;
//AnyDrawMuscle DrwMus = {#include “…/DrawSettings/MusDrawSettings.any”
};

AnyGeneralMuscle Medial =
{
//ForceDirection = 1;
AnyKinMeasure &Angle=.MedPos;
AnyMuscleModel &Mus = .Musc2;
//AnyDrawMuscle DrwMus = {#include “…/DrawSettings/MusDrawSettings.any”

};


I keep getting an error message saying "ERROR(OBJ1) : F:/AMMRV1.4.1/Body/AAUHuman/LegTD/Mus.any : Lateral : Only a single 1-dimensional kinematic measure is allowed inside a muscle (YET)
"

Can anyone point out where my mistake is?

Thank you very much!

Asty

Asty,

let’s stick to your other post in the forum. Basically, a AnyKinLinear has an x, y and z component. By adding a [0] after Pos, you will onlyget the x component. I would however suggest to use the calsstemplate for conditional contact for your model.