269 lines (223 with data), 9.2 kB
/**This is the calibration1 file it will calibrate the lateral part of the deltoid muscles
10 deg abduction -35 flexion */
AnyFolder ArmCal1 ={
AnyComponentDefinition obj = {};
AnyFolder &ThoraxSegs = ...BodyModel.Trunk.SegmentsThorax;
AnyFolder &LumbarSegs = ...BodyModel.Trunk.SegmentsLumbar;
AnyFolder &CervicalSegs = ...BodyModel.Trunk.SegmentsCervicalSpine;
AnyFolder &LumbarSpineJoints = ...BodyModel.Trunk.JointsLumbar;
AnyFolder &LumbarCervicalJoints = ...BodyModel.Trunk.JointsCervicalSpine;
AnyFolder &SegSideCal = .SideHumanFolderRef.ShoulderArm.Seg;
AnyFolder &JointsSideCal = .SideHumanFolderRef.ShoulderArm.Jnt;
#if BM_ARM_DELTOID_WRAPPING == _DELTOID_WRAPPING_RAKE_
AnyFolder& DeltoidRakeRef = .SideHumanFolderRef.ShoulderArm.Mus.ArtificialRake;
#else
AnyFolder& DeltoidWrappingPosteriorRef = .SideHumanFolderRef.ShoulderArm.Mus.DeltoidWrappingPosterior;
AnyFolder& DeltoidWrappingLateralRef = .SideHumanFolderRef.ShoulderArm.Mus.DeltoidWrappingLateral;
AnyFolder& DeltoidWrappingAnteriorRef = .SideHumanFolderRef.ShoulderArm.Mus.DeltoidWrappingAnterior;
#endif
#if BM_ARM_DELTOID_WRAPPING == _DELTOID_WRAPPING_RAKE_
AnyMuscleShortestPath &del1 = .SideHumanFolderRef.ShoulderArm.Mus.deltoideus_scapular_part_1;
AnyMuscleShortestPath &del2 = .SideHumanFolderRef.ShoulderArm.Mus.deltoideus_scapular_part_2;
AnyMuscleShortestPath &del3 = .SideHumanFolderRef.ShoulderArm.Mus.deltoideus_scapular_part_3;
#else
AnyMuscleShortestPath &del1 = .SideHumanFolderRef.ShoulderArm.Mus.deltoideus_posterior_part_1;
AnyMuscleShortestPath &del2 = .SideHumanFolderRef.ShoulderArm.Mus.deltoideus_posterior_part_2;
AnyMuscleShortestPath &del3 = .SideHumanFolderRef.ShoulderArm.Mus.deltoideus_posterior_part_3;
AnyMuscleShortestPath &del4 = .SideHumanFolderRef.ShoulderArm.Mus.deltoideus_posterior_part_4;
#endif
AnyFolder &MusParCalSide = .SideHumanFolderRef.ShoulderArm.MuscleModels;
AnyFixedRefFrame ground = {
AnyRefNode node = {
ARel=.....BodyModel.Trunk.SegmentsThorax.ThoraxSeg.Axes0;
sRel=.....BodyModel.Trunk.SegmentsThorax.ThoraxSeg.r0;
};
};
AnySphericalJoint ThoraxGround={
AnyRefFrame &Ground = .ground.node;
AnyRefFrame &Sacrum= ....BodyModel.Trunk.SegmentsThorax.ThoraxSeg;
};
AnyKinEqSimpleDriver ThoraxGroundDriver = {
AnySphericalJoint &Jnt = .ThoraxGround;
DriverPos = {0,0,0};
DriverVel = {0,0,0};
Reaction.Type = {Off,Off,Off};
};
AnyKinEqSimpleDriver NeckJntDriver = {
AnyKinMeasure& lb = ....BodyModel.Interface.Trunk.SkullThoraxLateralBending;
AnyKinMeasure& ar = ....BodyModel.Interface.Trunk.SkullThoraxRotation;
AnyKinMeasure& fe = ....BodyModel.Interface.Trunk.SkullThoraxFlexion;
DriverPos = {0,0,0};
DriverVel = {0,0,0};
Reaction.Type = {On,On,On};
};
AnyKinEqSimpleDriver ThoraxDriver ={
AnyKinMeasure& Ref2 = ....BodyModel.Interface.Trunk.PelvisThoraxLateralBending;
AnyKinMeasure& Ref3 = ....BodyModel.Interface.Trunk.PelvisThoraxRotation;
AnyKinMeasure& Ref1 = ....BodyModel.Interface.Trunk.PelvisThoraxExtension;
DriverPos = pi/180*{0,0,0};
DriverVel = pi/180*{0,0,0};
Reaction.Type = {On,On,On};
};
#if !BM_ARM_SHOULDER_RHYTHM
AnyKinEqSimpleDriver SCDriver ={
AnyKinMeasureOrg SC_measure = {
AnyKinMeasure& ref = ...SideInterfaceFolderRef.SternoClavicularProtraction.SCRot;
MeasureOrganizer = {0,1};
};
DriverPos = {-0.3692286, 0.1123051};
DriverVel = {0.0,0.0};
Reaction.Type={Off,Off};
};
#endif
AnyKinEqSimpleDriver WristDriver ={
AnyKinMeasure& WF = ..SideInterfaceFolderRef.WristFlexion;
AnyKinMeasure& WA = ..SideInterfaceFolderRef.WristAbduction;
DriverPos = {0,0};
DriverVel = {0,0};
Reaction.Type={On,On};
};
AnyKinEqSimpleDriver FEDriver ={
AnyKinMeasure& FE = ..SideInterfaceFolderRef.ElbowFlexion;
DriverPos = {65*pi/180};
DriverVel = {0};
Reaction.Type = {Off};
};
AnyKinEqSimpleDriver PSDriver ={
AnyKinMeasure& PS = ..SideInterfaceFolderRef.ElbowPronation;
DriverPos = {0.50*pi};
DriverVel = pi/180*{ 0.0 };
Reaction.Type = {Off};
};
AnyKinEqSimpleDriver GHDriver ={
AnyKinRotational &GHRotR = ..SideInterfaceFolderRef.GlenohumeralFlexion.GHMeasure;
DriverPos = pi/180*{10.0,-35,0.0 };
DriverVel = {0,0,0};
Reaction.Type = {Off,Off,Off};
};
//---------------------------------------------------------------------
//Finger drivers
#if BM_ARM_DETAILED_HAND
//finger1
AnyKinEqSimpleDriver CMC1Flexion={
AnyRevoluteJoint &ref= ..SideHumanFolderRef.ShoulderArm.Seg.Hand.Finger1.Jnt.CMCFlexion;
DriverPos={0}*pi/180;
DriverVel={0};
};
AnyKinEqSimpleDriver CMC1Abduction={
AnyRevoluteJoint &ref= ..SideHumanFolderRef.ShoulderArm.Seg.Hand.Finger1.Jnt.CMCAbduction;
DriverPos={0}*pi/180;
DriverVel={0};
};
AnyKinEqSimpleDriver MCP1Flexion={
AnyRevoluteJoint &ref=..SideHumanFolderRef.ShoulderArm.Seg.Hand.Finger1.Jnt.MCPFlexion;
DriverPos={0}*pi/180;
DriverVel={0};
};
AnyKinEqSimpleDriver MCP1Abduction={
AnyRevoluteJoint &ref=..SideHumanFolderRef.ShoulderArm.Seg.Hand.Finger1.Jnt.MCPAbduction;
DriverPos={0}*pi/180;
DriverVel={0};
};
AnyKinEqSimpleDriver DIP1={
AnyRevoluteJoint &ref= ..SideHumanFolderRef.ShoulderArm.Seg.Hand.Finger1.Jnt.DIP;
DriverPos={0}*pi/180;
DriverVel={0};
};
// finger2
// AnyKinEqSimpleDriver CMC2={
// AnyUniversalJoint &ref= ..SideHumanFolderRef.ShoulderArm.Seg.Hand.Finger2.Jnt.CMC;
// DriverPos={0,0};
// DriverVel={0,0};
// };
AnyKinEqSimpleDriver MCP2={
AnyRevoluteJoint &ref= ..SideHumanFolderRef.ShoulderArm.Seg.Hand.Finger2.Jnt.MCP;
DriverPos={0}*pi/180;
DriverVel={0};
};
AnyKinEqSimpleDriver PIP2={
AnyRevoluteJoint &ref= ..SideHumanFolderRef.ShoulderArm.Seg.Hand.Finger2.Jnt.PIP;
DriverPos={0}*pi/180;
DriverVel={0};
};
AnyKinEqSimpleDriver DIP2={
AnyRevoluteJoint &ref= ..SideHumanFolderRef.ShoulderArm.Seg.Hand.Finger2.Jnt.DIP;
DriverPos={0};
DriverVel={0};
};
// finger3
// AnyKinEqSimpleDriver CMC3={
// AnyUniversalJoint &ref= ..SideHumanFolderRef.ShoulderArm.Seg.Hand.Finger3.Jnt.CMC;
// DriverPos={0,0};
// DriverVel={0,0};
// };
AnyKinEqSimpleDriver MCP3={
AnyRevoluteJoint &ref= ..SideHumanFolderRef.ShoulderArm.Seg.Hand.Finger3.Jnt.MCP;
DriverPos={0}*pi/180;
DriverVel={0};
};
AnyKinEqSimpleDriver PIP3={
AnyRevoluteJoint &ref= ..SideHumanFolderRef.ShoulderArm.Seg.Hand.Finger3.Jnt.PIP;
DriverPos={0}*pi/180;
DriverVel={0};
};
AnyKinEqSimpleDriver DIP3={
AnyRevoluteJoint &ref= ..SideHumanFolderRef.ShoulderArm.Seg.Hand.Finger3.Jnt.DIP;
DriverPos={0};
DriverVel={0};
};
//finger4
// AnyKinEqSimpleDriver CMC4={
// AnyUniversalJoint &ref= ..SideHumanFolderRef.ShoulderArm.Seg.Hand.Finger4.Jnt.CMC;
// DriverPos={0,0}*pi/180;
// DriverVel={0,0};
// };
AnyKinEqSimpleDriver MCP4={
AnyRevoluteJoint &ref= ..SideHumanFolderRef.ShoulderArm.Seg.Hand.Finger4.Jnt.MCP;
DriverPos={0}*pi/180;
DriverVel={0};
};
AnyKinEqSimpleDriver PIP4={
AnyRevoluteJoint &ref= ..SideHumanFolderRef.ShoulderArm.Seg.Hand.Finger4.Jnt.PIP;
DriverPos={0}*pi/180;
DriverVel={0};
};
AnyKinEqSimpleDriver DIP4={
AnyRevoluteJoint &ref= ..SideHumanFolderRef.ShoulderArm.Seg.Hand.Finger4.Jnt.DIP;
DriverPos={0}*pi/180;
DriverVel={0};
};
// finger5
// AnyKinEqSimpleDriver CMC5={
// AnyUniversalJoint &ref= ..SideHumanFolderRef.ShoulderArm.Seg.Hand.Finger5.Jnt.CMC;
// DriverPos={0,0};
// DriverVel={0,0};
// };
AnyKinEqSimpleDriver MCP5={
AnyRevoluteJoint &ref= ..SideHumanFolderRef.ShoulderArm.Seg.Hand.Finger5.Jnt.MCP;
DriverPos={0}*pi/180;
DriverVel={0};
};
AnyKinEqSimpleDriver PIP5={
AnyRevoluteJoint &ref= ..SideHumanFolderRef.ShoulderArm.Seg.Hand.Finger5.Jnt.PIP;
DriverPos={0}*pi/180;
DriverVel={0};
};
AnyKinEqSimpleDriver DIP5={
AnyRevoluteJoint &ref= ..SideHumanFolderRef.ShoulderArm.Seg.Hand.Finger5.Jnt.DIP;
DriverPos={0};
DriverVel={0};
};
#endif
};
// The study: Operations to be performed on the model
AnyBodyCalibrationStudy ArmCalibrationStudy1 = {
AnyFolder &ref=.ArmCal1;
AnyString MusPrefix = CompleteNameOf(&.SideHumanFolderRef.ShoulderArm.Mus);
MuscleArr = ObjSearch(MusPrefix+".deltoideus_posterior_*", "AnyMuscle");
nStep = 1;
Kinematics.KinematicTol = 1e-07;
Kinematics.SmallStepAssumptionOnOff = Off;
InitialConditions.PosAnalysisOnlyOnOff = On;
Kinematics.PosAnalysisOnlyOnOff = On;
};