[38ba34]: / Body / AAUHuman / Arm / Calibration / WristCal.any

Download this file

437 lines (371 with data), 18.3 kB

AnyFolder WristCal ={
  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};
  };
  
  #if BM_ARM_SHOULDER_RHYTHM == ON
  #include "ExcludeShoulderRhythm.any"
  #endif
      

  AnyFloat ElbowFlexPosData   = {150,150,150,150,  0,  0,  0,  0,  0,  0,  0,  0} * pi/180;
  AnyFloat ElbowProPosData    = {-90,-90,-90,-90,-90,-90,-90,-90, 90, 90, 90, 90} * pi/180;
  AnyFloat WristFlexPosData   = { 85,  0,-70,  0, 85,  0,-70,  0, 85,  0,-70,  0} * pi/180;
  AnyFloat WristAbductPosData = {  0, 20,  0,-35,  0, 20,  0,-35,  0, 20,  0,-35} * pi/180;
  
  
  //Neck driver
  AnyKinEqSimpleDriver NeckJntDriver = {
    AnyKinMeasure& fe = ....BodyModel.Interface.Trunk.SkullThoraxFlexion;
    AnyKinMeasure& ar = ....BodyModel.Interface.Trunk.SkullThoraxRotation;
    AnyKinMeasure& lb = ....BodyModel.Interface.Trunk.SkullThoraxLateralBending;
    DriverPos = pi/180*{0,0,0};
    DriverVel = pi/180*{0,0,0};
    Reaction.Type = {Off, Off, Off};
  };
  
  AnyKinEqSimpleDriver ThoraxDriver ={
    AnyKinMeasure& Ref3 = ....BodyModel.Interface.Trunk.PelvisThoraxRotation;
    AnyKinMeasure& Ref1 = ....BodyModel.Interface.Trunk.PelvisThoraxExtension;
    AnyKinMeasure& Ref2 = ....BodyModel.Interface.Trunk.PelvisThoraxLateralBending;
    DriverPos = pi/180*{0,0,0};
    DriverVel = pi/180*{0,0,0};
    Reaction.Type = {On,On,On};
  };
  
  AnyKinEqInterPolDriver WristFlexionDriver ={
      AnyKinMeasure& WF = ..SideInterfaceFolderRef.WristFlexion;
      Type = PiecewiseLinear;
      T    = linspace(0,1,SizesOf(Data)[1]);
      Data = {.WristFlexPosData};
      Reaction.Type={On};
    };
    
    AnyKinEqInterPolDriver WristAbductionDriver ={
      AnyKinMeasure& WA = ..SideInterfaceFolderRef.WristAbduction;
      Type = PiecewiseLinear;
      T    = linspace(0,1,SizesOf(Data)[1]);
      Data = {.WristAbductPosData};
      Reaction.Type={On};
    };
    
  AnyKinEqInterPolDriver FEDriver ={
    AnyKinMeasure& FE = ..SideInterfaceFolderRef.ElbowFlexion;
    Type = PiecewiseLinear;
    T    = linspace(0,1,SizesOf(Data)[1]);
    Data = {.ElbowFlexPosData};
    Reaction.Type = {Off};
  };

  AnyKinEqInterPolDriver PSDriver ={
    AnyKinMeasure& PS = ..SideInterfaceFolderRef.ElbowPronation;
    Type = PiecewiseLinear;
    T    = linspace(0,1,SizesOf(Data)[1]);
    Data = {.ElbowProPosData};
    Reaction.Type = {Off};
  };
    
  AnyKinEqInterPolDriver GHDriver ={
    AnyKinMeasure& GHAbduction = ..SideInterfaceFolderRef.GlenohumeralAbduction;
    AnyKinMeasure& GHFlexion = ..SideInterfaceFolderRef.GlenohumeralFlexion;
    AnyKinMeasure& GHExtRot = ..SideInterfaceFolderRef.GlenohumeralExternalRotation;
    AnyKinMeasure& SCProtraction = ..SideInterfaceFolderRef.SternoClavicularProtraction;
    AnyKinMeasure& SCElevation = ..SideInterfaceFolderRef.SternoClavicularElevation;
    Type = PiecewiseLinear;
    T = {0.0, 1.0};
    Data = {{0,  0},
            {0,  0},
            {0,  0},
            {-23,-23},
            {12, 12}
            }*pi/180;
    Reaction.Type = repmat(nDim,{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
  
  AnyString MusPrefix = CompleteNameOf(&.SideHumanFolderRef.ShoulderArm.Mus);

  AnyObjectPtrArray AbductorPollicisMuscles = ObjSearch(MusPrefix+".Abductor_Pollicis*", "AnyMuscle");
  AnyFloat  AbductorPollicisRmin = repmat(NumElemOf(AbductorPollicisMuscles), ..RMin);
  AnyFloat  AbductorPollicisRmax = repmat(NumElemOf(AbductorPollicisMuscles), ..RMax);
  
  AnyObjectPtrArray ExtensorCarpiRadialisMuscles = ObjSearch(MusPrefix+".Extensor_Carpi_Radi*", "AnyMuscle");
  AnyFloat  ExtensorCarpiRadialisRmin = repmat(NumElemOf(ExtensorCarpiRadialisMuscles), ..RMin);
  AnyFloat  ExtensorCarpiRadialisRmax = repmat(NumElemOf(ExtensorCarpiRadialisMuscles), ..RMax);
  
  AnyObjectPtrArray ExtensorCarpiUlnarisMuscles = ObjSearch(MusPrefix+".Extensor_Carpi_Ulna*", "AnyMuscle");
  AnyFloat  ExtensorCarpiUlnarisRmin = repmat(NumElemOf(ExtensorCarpiUlnarisMuscles), ..RMin);
  AnyFloat  ExtensorCarpiUlnarisRmax = repmat(NumElemOf(ExtensorCarpiUlnarisMuscles), ..RMax);
  
  AnyObjectPtrArray ExtensorDigitiMinimiMuscles = ObjSearch(MusPrefix+".Extensor_Digiti_Min*", "AnyMuscle");
  AnyFloat  ExtensorDigitiMinimiRmin = repmat(NumElemOf(ExtensorDigitiMinimiMuscles), ..RMin);
  AnyFloat  ExtensorDigitiMinimiRmax = repmat(NumElemOf(ExtensorDigitiMinimiMuscles), ..RMax);
  
  AnyObjectPtrArray ExtensorDigitorumMuscles = ObjSearch(MusPrefix+".Extensor_Digit*", "AnyMuscle");
  AnyFloat  ExtensorDigitorumRmin = repmat(NumElemOf(ExtensorDigitorumMuscles), ..RMin);
  AnyFloat  ExtensorDigitorumRmax = repmat(NumElemOf(ExtensorDigitorumMuscles), ..RMax);
  
  AnyObjectPtrArray ExtensorIndicisMuscles = ObjSearch(MusPrefix+".Extensor_Indi*", "AnyMuscle");
  AnyFloat  ExtensorIndicisRmin = repmat(NumElemOf(ExtensorIndicisMuscles), ..RMin);
  AnyFloat  ExtensorIndicisRmax = repmat(NumElemOf(ExtensorIndicisMuscles), ..RMax);
  
  AnyObjectPtrArray ExtensorPollicisMuscles = ObjSearch(MusPrefix+".Extensor_Pollicis*", "AnyMuscle");
  AnyFloat  ExtensorPollicisRmin = repmat(NumElemOf(ExtensorPollicisMuscles), ..RMin);
  AnyFloat  ExtensorPollicisRmax = repmat(NumElemOf(ExtensorPollicisMuscles), ..RMax);
  
  AnyObjectPtrArray FlexorCarpiRadialisMuscles = ObjSearch(MusPrefix+".Flexor_Carpi_Radi*", "AnyMuscle");
  AnyFloat  FlexorCarpiRadialisRmin = repmat(NumElemOf(FlexorCarpiRadialisMuscles), ..RMin);
  AnyFloat  FlexorCarpiRadialisRmax = repmat(NumElemOf(FlexorCarpiRadialisMuscles), ..RMax);
  
  AnyObjectPtrArray FlexorCarpiUlnarisMuscles = ObjSearch(MusPrefix+".Flexor_Carpi_Ulna*", "AnyMuscle");
  AnyFloat  FlexorCarpiUlnarisRmin = repmat(NumElemOf(FlexorCarpiUlnarisMuscles), ..RMin);
  AnyFloat  FlexorCarpiUlnarisRmax = repmat(NumElemOf(FlexorCarpiUlnarisMuscles), ..RMax);
  
  AnyObjectPtrArray FlexorDigitorumProfundusMuscles = ObjSearch(MusPrefix+".Flexor_Digitorum_Prof*", "AnyMuscle");
  AnyFloat  FlexorDigitorumProfundusRmin = repmat(NumElemOf(FlexorDigitorumProfundusMuscles), ..RMin);
  AnyFloat  FlexorDigitorumProfundusRmax = repmat(NumElemOf(FlexorDigitorumProfundusMuscles), ..RMax);
  
  AnyObjectPtrArray FlexorDigitorumSuperficialisMuscles = ObjSearch(MusPrefix+".Flexor_Digitorum_Superfic*", "AnyMuscle");
  AnyFloat  FlexorDigitorumSuperficialisRmin = repmat(NumElemOf(FlexorDigitorumSuperficialisMuscles), ..RMin);
  AnyFloat  FlexorDigitorumSuperficialisRmax = repmat(NumElemOf(FlexorDigitorumSuperficialisMuscles), ..RMax);
  
  AnyObjectPtrArray FlexorPollicisLongusMuscles = ObjSearch(MusPrefix+".Flexor_Pollicis_Long*", "AnyMuscle");
  AnyFloat  FlexorPollicisLongusRmin = repmat(NumElemOf(FlexorPollicisLongusMuscles), ..RMin);
  AnyFloat  FlexorPollicisLongusRmax = repmat(NumElemOf(FlexorPollicisLongusMuscles), ..RMax);
  
  AnyObjectPtrArray PalmarisLongusMuscles = ObjSearch(MusPrefix+".Palmaris_Long*", "AnyMuscle");
  AnyFloat  PalmarisLongusRmin = repmat(NumElemOf(PalmarisLongusMuscles), ..RMin);
  AnyFloat  PalmarisLongusRmax = repmat(NumElemOf(PalmarisLongusMuscles), ..RMax);
  
  AnyObjectPtrArray biceps_brachii_caput_breveMuscles = ObjSearch(MusPrefix+".biceps_brachii_caput_bre*", "AnyMuscle");
  AnyFloat  biceps_brachii_caput_breveRmin = repmat(NumElemOf(biceps_brachii_caput_breveMuscles), ..RMin);
  AnyFloat  biceps_brachii_caput_breveRmax = repmat(NumElemOf(biceps_brachii_caput_breveMuscles), ..RMax);

  AnyObjectPtrArray biceps_brachii_caput_longumMuscles = ObjSearch(MusPrefix+".biceps_brachii_caput_long*", "AnyMuscle");
  AnyFloat  biceps_brachii_caput_longumRmin = repmat(NumElemOf(biceps_brachii_caput_longumMuscles), ..RMin);
  AnyFloat  biceps_brachii_caput_longumRmax = repmat(NumElemOf(biceps_brachii_caput_longumMuscles), ..RMax);

  AnyObjectPtrArray BrachialisMuscles = ObjSearch(MusPrefix+".Brachialis*", "AnyMuscle");
  AnyFloat  BrachialisRmin = repmat(NumElemOf(BrachialisMuscles), ..RMin);
  AnyFloat  BrachialisRmax = repmat(NumElemOf(BrachialisMuscles), ..RMax);

  AnyObjectPtrArray TricepsMuscles = ObjSearch(MusPrefix+".Triceps*", "AnyMuscle");
  AnyFloat  TricepsRmin = repmat(NumElemOf(TricepsMuscles), ..RMin);
  AnyFloat  TricepsRmax = repmat(NumElemOf(TricepsMuscles), ..RMax);

  AnyObjectPtrArray Brach_radMuscles = ObjSearch(MusPrefix+".Brach_rad*", "AnyMuscle");
  AnyFloat  Brach_radRmin = repmat(NumElemOf(Brach_radMuscles), ..RMin);
  AnyFloat  Brach_radRmax = repmat(NumElemOf(Brach_radMuscles), ..RMax);

  AnyObjectPtrArray AnconeusMuscles = ObjSearch(MusPrefix+".Anconeus*", "AnyMuscle");
  AnyFloat  AnconeusRmin = repmat(NumElemOf(AnconeusMuscles), ..RMin);
  AnyFloat  AnconeusRmax = repmat(NumElemOf(AnconeusMuscles), ..RMax);

  AnyObjectPtrArray Pronator_teres_caput_humeralMuscles = ObjSearch(MusPrefix+".Pronator_teres_caput_humeral*", "AnyMuscle");
  AnyFloat  Pronator_teres_caput_humeralRmin = repmat(NumElemOf(Pronator_teres_caput_humeralMuscles), ..RMin);
  AnyFloat  Pronator_teres_caput_humeralRmax = repmat(NumElemOf(Pronator_teres_caput_humeralMuscles), ..RMax);

  AnyObjectPtrArray Pronator_teres_caput_ulnareMuscles = ObjSearch(MusPrefix+".Pronator_teres_caput_ulnare*", "AnyMuscle");
  AnyFloat  Pronator_teres_caput_ulnareRmin = repmat(NumElemOf(Pronator_teres_caput_ulnareMuscles), ..RMin);
  AnyFloat  Pronator_teres_caput_ulnareRmax = repmat(NumElemOf(Pronator_teres_caput_ulnareMuscles), ..RMax);

  AnyObjectPtrArray Supinator_humerusMuscles = ObjSearch(MusPrefix+".Supinator_humerus*", "AnyMuscle");
  AnyFloat  Supinator_humerusRmin = repmat(NumElemOf(Supinator_humerusMuscles), ..RMin);
  AnyFloat  Supinator_humerusRmax = repmat(NumElemOf(Supinator_humerusMuscles), ..RMax);

  AnyObjectPtrArray Supinator_ulnaMuscles = ObjSearch(MusPrefix+".Supinator_ulna*", "AnyMuscle");
  AnyFloat  Supinator_ulnaRmin = repmat(NumElemOf(Supinator_ulnaMuscles), ..RMin);
  AnyFloat  Supinator_ulnaRmax = repmat(NumElemOf(Supinator_ulnaMuscles), ..RMax);

  AnyObjectPtrArray Pron_quadrMuscles = ObjSearch(MusPrefix+".Pron_quadr*", "AnyMuscle");
  AnyFloat  Pron_quadrRmin = repmat(NumElemOf(Pron_quadrMuscles), ..RMin);
  AnyFloat  Pron_quadrRmax = repmat(NumElemOf(Pron_quadrMuscles), ..RMax);
  
};

// The study: Operations to be performed on the model
AnyBodyCalibrationStudy ArmCalibrationStudyWrist = {
  AnyFolder &ref=.WristCal;
  nStep = 12;
  
  Kinematics.SmallStepAssumptionOnOff = Off;
  Kinematics.PosAnalysisOnlyOnOff = On;
  InitialConditions.PosAnalysisOnlyOnOff = On;
  
  MuscleArr = arrcat(arrcat(arrcat(
    ref.AbductorPollicisMuscles,
    ref.ExtensorCarpiRadialisMuscles,
    ref.ExtensorCarpiUlnarisMuscles,
    ref.ExtensorDigitiMinimiMuscles,
    ref.ExtensorDigitorumMuscles,
    ref.ExtensorIndicisMuscles,
    ref.ExtensorPollicisMuscles,
    ref.FlexorCarpiRadialisMuscles,
    ref.FlexorCarpiUlnarisMuscles),
    ref.FlexorDigitorumProfundusMuscles,
    ref.FlexorDigitorumSuperficialisMuscles,
    ref.FlexorPollicisLongusMuscles,
    ref.PalmarisLongusMuscles,
    ref.biceps_brachii_caput_breveMuscles,
    ref.biceps_brachii_caput_longumMuscles,
    ref.BrachialisMuscles,
    ref.TricepsMuscles,
    ref.Brach_radMuscles),
    ref.AnconeusMuscles,
    ref.Pronator_teres_caput_humeralMuscles,
    ref.Pronator_teres_caput_ulnareMuscles,
    ref.Supinator_humerusMuscles,
    ref.Supinator_ulnaMuscles,
    ref.Pron_quadrMuscles
  );
  RminMuscleFiber = arrcat(arrcat(arrcat(
    ref.AbductorPollicisRmin,
    ref.ExtensorCarpiRadialisRmin,
    ref.ExtensorCarpiUlnarisRmin,
    ref.ExtensorDigitiMinimiRmin,
    ref.ExtensorDigitorumRmin,
    ref.ExtensorIndicisRmin,
    ref.ExtensorPollicisRmin,
    ref.FlexorCarpiRadialisRmin,
    ref.FlexorCarpiUlnarisRmin),
    ref.FlexorDigitorumProfundusRmin,
    ref.FlexorDigitorumSuperficialisRmin,
    ref.FlexorPollicisLongusRmin,
    ref.PalmarisLongusRmin,
    ref.biceps_brachii_caput_breveRmin,
    ref.biceps_brachii_caput_longumRmin,
    ref.BrachialisRmin,
    ref.TricepsRmin,
    ref.Brach_radRmin),
    ref.AnconeusRmin,
    ref.Pronator_teres_caput_humeralRmin,
    ref.Pronator_teres_caput_ulnareRmin,
    ref.Supinator_humerusRmin,
    ref.Supinator_ulnaRmin,
    ref.Pron_quadrRmin
  );
  RmaxMuscleFiber = arrcat(arrcat(arrcat(
    ref.AbductorPollicisRmax,
    ref.ExtensorCarpiRadialisRmax,
    ref.ExtensorCarpiUlnarisRmax,
    ref.ExtensorDigitiMinimiRmax,
    ref.ExtensorDigitorumRmax,
    ref.ExtensorIndicisRmax,
    ref.ExtensorPollicisRmax,
    ref.FlexorCarpiRadialisRmax,
    ref.FlexorCarpiUlnarisRmax),
    ref.FlexorDigitorumProfundusRmax,
    ref.FlexorDigitorumSuperficialisRmax,
    ref.FlexorPollicisLongusRmax,
    ref.PalmarisLongusRmax,
    ref.biceps_brachii_caput_breveRmax,
    ref.biceps_brachii_caput_longumRmax,
    ref.BrachialisRmax,
    ref.TricepsRmax,
    ref.Brach_radRmax),
    ref.AnconeusRmax,
    ref.Pronator_teres_caput_humeralRmax,
    ref.Pronator_teres_caput_ulnareRmax,
    ref.Supinator_humerusRmax,
    ref.Supinator_ulnaRmax,
    ref.Pron_quadrRmax
  );
  
  
  
};