Muscle Calibration with model indeterminate

Hi,

I am trying to calibrate my muscle tendon length in my model by just using the 3-element muscle calibration codes to fit my patient-specific model. However, I could not run my model while it has a warning of "The model may be statically indeterminate. There are 67 reactions and only 36 rigid body degrees of freedom." Is it related to the custom joints that I have defined? But I have no idea how to solve this problem and could you help me with it. The following is one of the angles of calibration. Thank you.

AnyFolder LegCal1 ={

AnyFolder &Pelvis = Main.Studies.HumanModel.BodyModel.Trunk.SegmentsLumbar.PelvisSeg;//This is a reference to the folder which holds the human part of the model

AnyFolder &LegSegSide = .SideHumanFolderRef.Leg.Seg; //This is a reference to the folder which holds the human part of the model

AnyFolder &JointsSideCal = Main.Studies.InverseDynamicStudy.NewJoints;

AnyFolder &OriginalJoint = .SideHumanFolderRef.Leg.Jnt;

AnyFolder &MusCalSide = .SideHumanFolderRef.Leg.Mus;

AnyFolder &MusParCalSide = .SideHumanFolderRef.Leg.MusPar;

AnyFixedRefFrame ground = {
AnyRefNode node = {
ARel=..Pelvis.Axes0;
sRel=..Pelvis.r0;
};
};

AnyRevoluteJoint PelvisGround={
AnyRefFrame &Ground = .ground.node;
AnyRefFrame &Sacrum= Main.Studies.HumanModel.BodyModel.Trunk.SegmentsLumbar.PelvisSeg;
Axis=z;
};

AnyKinEqSimpleDriver PelvisGroundRot = {
AnyRevoluteJoint &Jnt = .PelvisGround;
DriverPos = {0};
DriverVel = {0};
Reaction.Type = {Off};
};

AnyKinEqSimpleDriver Hip = {
AnySphericalJoint &Spherical = .JointsSideCal.RightHip;
MeasureOrganizer = {2,0,1}; // flexion/extension, abduction/adduction, internal/external rotation
DriverPos = {0,0,0}*pi/180;
DriverVel = {0,0,0}*pi/180;
Reaction.Type = {Off,Off,Off};
};

AnyKinEqSimpleDriver Knee = {
AnyRevoluteJoint &Hinge = .JointsSideCal.RightKnee;
DriverPos = {0pi/180};
DriverVel = {0
pi/180};
Reaction.Type = {Off};
};

AnyKinEqSimpleDriver Ankle = {
AnyRevoluteJoint &Hinge = Main.Studies.HumanModel.BodyModel.Right.Leg.Jnt.Ankle;
DriverPos = {0pi/180};
DriverVel = {0
pi/180};
Reaction.Type = {Off};
};

AnyKinEqSimpleDriver SubTalar = {
AnyRevoluteJoint &Hinge = Main.Studies.HumanModel.BodyModel.Right.Leg.Jnt.SubTalar;
DriverPos = {0pi/180};
DriverVel = {0
pi/180};
Reaction.Type = {Off};
};

};

// The study: Operations to be performed on the model
AnyBodyCalibrationStudy LegCalibrationStudy1 = {
AnyFolder &ref=.LegCal1;
nStep = 1;
InitialConditions.SolverType = KinSolOverDeterminate;

};

Regards,
Thomas

Hi Thomas,

The ligament calibration study requires that the model is kinematically determinate.

It's a little bit hard to understand the rest of your model. But my guess is that you have the original joints from the leg model and you have some new joints. Are the new joints supposed to replace the original joints of the leg model? You use the new joints for hip and knee and the original joints for ankle and subtalar.

In your study, you include all the joints. So, the knee and hip joints exist twice and are driven one time for the driver of the new joint. You may need to remove some of the joints or drivers from the study. You can do this using MechObjectExclude inside the study.

I hope this helps

Best regards
Dave