250 lines (211 with data), 8.2 kB
/**This is the calibration1 file it will calibrate all muscle in the arm 40 deg abduction */
AnyFolder ArmCal0 ={
AnyComponentDefinition obj = {};
AnyFolder &ThoraxSegs = ...BodyModel.Trunk.SegmentsThorax;
AnyFolder &CervicalSegs = ...BodyModel.Trunk.SegmentsCervicalSpine;
AnyFolder &LumbarSegs = ...BodyModel.Trunk.SegmentsLumbar;
AnyFolder &LumbarSpineJoints = ...BodyModel.Trunk.JointsLumbar;
AnyFolder &LumbarCervicalJoints = ...BodyModel.Trunk.JointsCervicalSpine;
AnyFolder &SegSideCal = .SideHumanFolderRef.ShoulderArm.Seg;
AnyFolder &JointsSideCal = .SideHumanFolderRef.ShoulderArm.Jnt;
AnyFolder &MusCalSide = .SideHumanFolderRef.ShoulderArm.Mus;
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};
};
//Neck driver
AnyKinEqSimpleDriver NeckJntDriver = {
AnyKinMeasure& lb = ....BodyModel.Interface.Trunk.SkullThoraxLateralBending;
AnyKinMeasure& ar = ....BodyModel.Interface.Trunk.SkullThoraxRotation;
AnyKinMeasure& fe = ....BodyModel.Interface.Trunk.SkullThoraxFlexion;
DriverPos = pi/180*{0,0,0};
DriverVel = pi/180*{0,0,0};
Reaction.Type = {Off, Off, Off};
};
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.4226357, 0.148608};
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.0};
DriverVel = pi/180*{ 0.0 };
Reaction.Type = {Off};
};
AnyKinEqSimpleDriver GHDriver ={
AnyKinRotational &GHRotR = ..SideInterfaceFolderRef.GlenohumeralFlexion.GHMeasure;
DriverPos = pi/180*{40.0,0,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
AnyObjectPtrArray all_arm_muscles = arrcat(
ObjSearch(CompleteNameOf(&.SideHumanFolderRef.ShoulderArm.Mus)+".*", "AnyMuscleViaPoint"),
ObjSearch(CompleteNameOf(&.SideHumanFolderRef.ShoulderArm.Mus)+".*", "AnyMuscleShortestPath")
);
};
// The study: Operations to be performed on the model
AnyBodyCalibrationStudy ArmCalibrationStudy0 = {
//MechObjectExclude = ObjSearch("...BodyModel.Trunk.SegmentsThorax.SkullSeg", "AnySeg");
AnyFolder &ref=.ArmCal0;
MuscleArr = ref.all_arm_muscles;
nStep = 1;
Kinematics.KinematicTol = 1e-07;
Kinematics.SmallStepAssumptionOnOff = Off;
InitialConditions.PosAnalysisOnlyOnOff = On;
Kinematics.PosAnalysisOnlyOnOff = On;
};