98 lines (81 with data), 3.4 kB
AnyFolder LegCal7 ={
AnyComponentDefinition obj = {};
AnyFolder &Pelvis = ...BodyModel.Trunk.SegmentsLumbar.PelvisSeg;
AnyFolder &Sacrum = ...BodyModel.Trunk.SegmentsLumbar.SacrumSeg;
AnyFolder &LegSegSide = .SideHumanFolderRef.Leg.Seg;
AnyFolder &LegJointsSide = .SideHumanFolderRef.Leg.Jnt;
AnyFolder &SacrumPelvisJnt = ...BodyModel.Trunk.JointsLumbar.SacrumPelvisJnt;
AnyFixedRefFrame ground = {
AnyRefNode node = {
ARel=..Pelvis.Axes0;
sRel=..Pelvis.r0;
};
};
AnyKinEq PelvisFix = {
AnyKinLinear PelvisSacrumLinFix = {
AnyRefFrame &ground = ..ground.node;
AnyRefFrame &Pelvis = .....BodyModel.Trunk.SegmentsLumbar.PelvisSeg;
};
AnyKinRotational PelvisSacrumRotFix = {
Type = RotAxesAngles;
AnyRefFrame &ground = ..ground.node;
AnyRefFrame &Pelvis = .....BodyModel.Trunk.SegmentsLumbar.PelvisSeg;
};
};
AnyKinEqSimpleDriver PelvisSacrumFix = {
AnyKinMeasure& Jnt = .SacrumPelvisJnt;
DriverPos = {0,0,0};
DriverVel = {0,0,0};
Reaction.Type = {Off,Off,Off};
};
AnyKinEqSimpleDriver Hip = {
AnyKinRotational &Spherical = ..SideInterfaceFolderRef.HipFlexion.HipMeasure;
DriverPos = {35,0,0}*pi/180; // Flexion - Abduction - external rotation
DriverVel = {0,0,0}*pi/180;
Reaction.Type = {Off,Off,Off};
};
AnyKinEqSimpleDriver Knee = {
AnyKinMeasure& Hinge = ..SideInterfaceFolderRef.KneeFlexion;
DriverPos = {0*pi/180};
DriverVel = {0*pi/180};
Reaction.Type = {Off};
};
#if BM_FOOT_MODEL == _FOOT_MODEL_DEFAULT_
AnyKinEqSimpleDriver Ankle = {
AnyKinMeasure& Hinge = ..SideInterfaceFolderRef.AnklePlantarFlexion;
DriverPos = {-10*pi/180}; //10 degrees dorsal flexion
DriverVel = {0*pi/180};
Reaction.Type = {Off};
};
AnyKinEqSimpleDriver SubTalar = {
AnyKinMeasure& Hinge = ..SideInterfaceFolderRef.SubTalarEversion;
DriverPos = {0*pi/180};
DriverVel = {0*pi/180};
Reaction.Type = {Off};
};
#endif
AnyString MusPrefix = CompleteNameOf(&.SideHumanFolderRef.Leg.Mus);
AnyObjectPtrArray SemiMuscles = ObjSearch(MusPrefix+".Semi*", "AnyMuscle");
AnyObjectPtrArray AdductorLongusMuscles = ObjSearch(MusPrefix+".AdductorLongus*", "AnyMuscle");
AnyObjectPtrArray AdductorMagnusMuscles = ObjSearch(MusPrefix+".AdductorMagnus*", "AnyMuscle");
AnyObjectPtrArray AdductorBrevisMuscles = ObjSearch(MusPrefix+".AdductorBrevis*", "AnyMuscle");
AnyObjectPtrArray GracilisMuscles = ObjSearch(MusPrefix+".Gracilis*", "AnyMuscle");
AnyObjectPtrArray PectineusMuscles = ObjSearch(MusPrefix+".Pectineus*", "AnyMuscle");
};
// The study: Operations to be performed on the model
AnyBodyCalibrationStudy LegCalibrationStudy7 = {
AnyFolder &ref=.LegCal7;
nStep = 1;
MuscleArr = arrcat(
ref.SemiMuscles,
ref.AdductorLongusMuscles,
ref.AdductorMagnusMuscles,
ref.AdductorBrevisMuscles,
ref.GracilisMuscles,
ref.PectineusMuscles
);
InitialConditions.SmallStepAssumptionOnOff = Off;
Kinematics.SmallStepAssumptionOnOff = Off;
Kinematics.PosAnalysisOnlyOnOff = On;
InitialConditions.PosAnalysisOnlyOnOff = On;
};