[770c98]: / Application / Examples / LegPressMachine / Model / JointsAndDrivers.any

Download this file

278 lines (249 with data), 9.7 kB

AnyFolder Drivers = 
{
  // Aliases for convenient referencing
  AnyFolder &JntPos= ..Mannequin.Posture;  
  AnyFolder &JntVel= ..Mannequin.PostureVel;  

  AnyFolder &RefHM = Main.Model.BodyModel;
  AnyFolder &ref=Main.Model.BodyModel.Trunk;
  AnyFolder &Thorax = ..BodyModel.Trunk.SegmentsThorax.ThoraxSeg;
  AnyFolder &LegR = ..BodyModel.Right.Leg;
  AnyFolder &LegL = ..BodyModel.Left.Leg;

  AnyKinEqSimpleDriver PelvisDriver = 
  {
      AnyKinLinear lin = 
      {
        AnyRefFrame& base = Main.Model.EnvironmentModel.Segs.Back_Rest.Pelvis_node;
        AnyRefFrame& target = Main.Model.HumanRefNodes.PelvisSeg.CenterNode;
        Ref = 0;
      };
      AnyKinRotational rot = 
      {
        AnyRefFrame& base = Main.Model.EnvironmentModel.Segs.Back_Rest.Pelvis_node;
        AnyRefFrame& target = Main.Model.HumanRefNodes.PelvisSeg.CenterNode;
        Type = RotAxesAngles;
      };      
      MeasureOrganizer = {0, 1, 2, 3, 4, 5};
      DriverPos = {0, 0.0, 0, 0, 0, 0};
      DriverVel = {0, 0, 0, 0, 0, 0};
      Reaction.Type = {Off, Off, Off, Off, Off, Off};
  };

  // ************************************
  // Drivers for the spine
  // ************************************
  
  //Neck driver 
  AnyKinEqSimpleDriver NeckJntDriver = 
  {
    AnyKinMeasure& LatBending = ...BodyModel.Interface.Trunk.SkullThoraxLateralBending;
    AnyKinMeasure& Rotation = ...BodyModel.Interface.Trunk.SkullThoraxRotation;
    AnyKinMeasure& Flexion = ...BodyModel.Interface.Trunk.SkullThoraxFlexion;
    
    DriverPos = pi/180*{.JntPos.NeckLateralBending,.JntPos.NeckRotation,-1*.JntPos.NeckExtension};
    DriverVel = pi/180*{.JntVel.NeckLateralBending,.JntVel.NeckRotation,-1*.JntVel.NeckExtension};
    Reaction.Type = {Off,Off,Off};
  };
  
  //Thorax pelvis rotation driver
  AnyKinEqSimpleDriver PostureDriver =
  {
    AnyKinMeasure& Ref2 = Main.Model.BodyModel.Interface.Trunk.PelvisThoraxLateralBending;        
    AnyKinMeasure& Ref3 = Main.Model.BodyModel.Interface.Trunk.PelvisThoraxRotation;   
    AnyKinMeasure& Ref1 = Main.Model.BodyModel.Interface.Trunk.PelvisThoraxExtension;
    
    DriverPos = pi/180*{
      .JntPos.PelvisThoraxLateralBending,
      .JntPos.PelvisThoraxRotation,
      .JntPos.PelvisThoraxExtension
    };
    DriverVel = pi/180*{
      .JntVel.PelvisThoraxLateralBending,
      .JntVel.PelvisThoraxRotation,
      .JntVel.PelvisThoraxExtension
    };
    Reaction.Type = {
                      Off,
                      Off,
                      Off
                     };
  };    
  AnyStdJoint Left_Foot_Fix_Joint = 
  {
    AnyRefFrame& base = Main.Model.EnvironmentModel.Segs.Foot_Rest.left_toe_node;
    AnyRefFrame& target = Main.Model.HumanRefNodes.LeftFoot.ToeNode;
    Constraints.Reaction.Type = {Off, Off, Off, Off, Off, Off};
  };

  AnyStdJoint Right_Foot_Fix_Joint  = 
  {
    AnyRefFrame& base = Main.Model.EnvironmentModel.Segs.Foot_Rest.right_toe_node;
    AnyRefFrame& target = Main.Model.HumanRefNodes.RightFoot.ToeNode;
    Constraints.Reaction.Type = {Off, Off, Off, Off, Off, Off};
  }; 
  

  // ************************************
  // Drivers for the right leg
  // ************************************

  //Knee driver
  AnyKinEqInterPolDriver KneeDriverRight = 
  {
      AnyKinMeasureOrg  &Knee = ...BodyModel.Interface.Right.KneeFlexion;
      Type = Bspline;
      T = Main.Parameters.TrialSpecificData.TimeVector;
      Data = pi/180*{Main.Parameters.TrialSpecificData.KneeFlexionAngleVector};
      Reaction.Type = {Off};
  };

//  // ************************************
//  // Drivers for the left leg
//  // ************************************

    
  // ************************************
  // Drivers for the right arm
  // ************************************
  
  //Sterno clavicular joint driver
  #if BM_ARM_RIGHT & (BM_ARM_SHOULDER_RHYTHM == 0)
  AnyKinEqSimpleDriver SCDriverRight ={
    AnyKinMeasure& ref1 =Main.Model.BodyModel.Interface.Right.SternoClavicularProtraction;
    AnyKinMeasure& ref2 =Main.Model.BodyModel.Interface.Right.SternoClavicularElevation;
    DriverPos = pi/180*
    {
      .JntPos.Right.SternoClavicularProtraction,
      .JntPos.Right.SternoClavicularElevation
    };
    DriverVel = pi/180*
    {
      .JntVel.Right.SternoClavicularProtraction,
      .JntVel.Right.SternoClavicularElevation
    };
    Reaction.Type={Off,Off};
  };
  #endif
  
  
//  //Glenohumeral joint driver
//  AnyKinEqSimpleDriver GHDriverRight={
//    AnyKinMeasure& ref1 =Main.Model.BodyModel.Interface.Right.GlenohumeralAbduction;
//    AnyKinMeasure& ref2 =Main.Model.BodyModel.Interface.Right.GlenohumeralFlexion;
//    AnyKinMeasure& ref3 =Main.Model.BodyModel.Interface.Right.GlenohumeralExternalRotation;
//    DriverPos=pi/180*{
//      .JntPos.Right.GlenohumeralAbduction,  //GH joint
//      .JntPos.Right.GlenohumeralFlexion,  //GH joint
//      .JntPos.Right.GlenohumeralExternalRotation  //GH joint
//    };    
//    DriverVel = pi/180*{
//      .JntVel.Right.GlenohumeralAbduction,  //GH joint
//      .JntVel.Right.GlenohumeralFlexion,  //GH joint
//      .JntVel.Right.GlenohumeralExternalRotation  //GH joint
//    };    
//    Reaction.Type = {
//                      Off,
//                      Off,
//                      Off
//                     };
//  };
//
  //Elbow pronation driver 
  AnyKinEqSimpleDriver ElbowDriverRight={
    AnyKinMeasure& ref1 =Main.Model.BodyModel.Interface.Right.ElbowPronation;
    //AnyKinMeasure& ref2 =Main.Model.BodyModel.Interface.Right.ElbowFlexion;
    
    DriverPos= pi/180*
                {
                 .JntPos.Right.ElbowPronation
                 //.JntPos.Right.ElbowFlexion
                };  
    DriverVel = pi/180*
                {.JntVel.Right.ElbowPronation
                 //.JntVel.Right.ElbowFlexion
                };  
    Reaction.Type={Off};
  };
  
//  //Wrist driver 
//  AnyKinEqSimpleDriver WristDriverRight ={
//    AnyKinMeasure& ref1 =Main.Model.BodyModel.Interface.Right.WristFlexion;
//    AnyKinMeasure& ref2 =Main.Model.BodyModel.Interface.Right.WristAbduction;
//    DriverPos = pi/180*{
//      .JntPos.Right.WristFlexion,
//      .JntPos.Right.WristAbduction
//    };
//    
//    DriverVel = pi/180*{
//      .JntVel.Right.WristFlexion,
//      .JntVel.Right.WristAbduction
//    };
//    Reaction.Type={Off, Off};
//  };
  
  // ************************************
  // Drivers for the left arm
  // ************************************
  
  //Sterno clavicular joint driver
  #if BM_ARM_LEFT & (BM_ARM_SHOULDER_RHYTHM == OFF)
  AnyKinEqSimpleDriver SCDriverLeft ={
    AnyKinMeasure& ref1 =Main.Model.BodyModel.Interface.Left.SternoClavicularProtraction;
    AnyKinMeasure& ref2 =Main.Model.BodyModel.Interface.Left.SternoClavicularElevation;
    
    DriverPos = pi/180*{
      .JntPos.Left.SternoClavicularProtraction,
      .JntPos.Left.SternoClavicularElevation
    };
    
    DriverVel = pi/180*{
      .JntVel.Left.SternoClavicularProtraction,
      .JntVel.Left.SternoClavicularElevation
    };
    
    Reaction.Type={Off,Off};
  };
  #endif
  
//  //Glenohumeral joint driver
//  AnyKinEqSimpleDriver GHDriverLeft={
//    AnyKinMeasure& ref1 =Main.Model.BodyModel.Interface.Left.GlenohumeralAbduction;
//    AnyKinMeasure& ref2 =Main.Model.BodyModel.Interface.Left.GlenohumeralFlexion;
//    AnyKinMeasure& ref3 =Main.Model.BodyModel.Interface.Left.GlenohumeralExternalRotation;
//    DriverPos=pi/180*{
//      .JntPos.Left.GlenohumeralAbduction,  //GH joint
//      .JntPos.Left.GlenohumeralFlexion,  //GH joint
//      .JntPos.Left.GlenohumeralExternalRotation  //GH joint
//    };    
//    DriverVel = pi/180*{
//      .JntVel.Left.GlenohumeralAbduction,  //GH joint
//      .JntVel.Left.GlenohumeralFlexion,  //GH joint
//      .JntVel.Left.GlenohumeralExternalRotation  //GH joint
//    };    
//    Reaction.Type = {
//                      Off,
//                      Off,
//                      Off
//                     };
//  };
//  
  //Elbow pronation driver 
  AnyKinEqSimpleDriver ElbowDriverLeft={
    AnyKinMeasure& ref1 =Main.Model.BodyModel.Interface.Left.ElbowPronation;
    //AnyKinMeasure& reg2 = Main.Model.BodyModel.Interface.Left.ElbowFlexion;
    DriverPos= pi/180*
              {
               .JntPos.Left.ElbowPronation
               //.JntPos.Left.ElbowFlexion 
              };  
    DriverVel = pi/180*
                {
                 .JntVel.Left.ElbowPronation
                // .JntVel.Left.ElbowFlexion
                };  
    Reaction.Type={Off};
  };
//  
//  //Wrist driver
//  AnyKinEqSimpleDriver WristDriverLeft =
//  {
//    AnyKinMeasure& ref1 =Main.Model.BodyModel.Interface.Left.WristFlexion;
//    AnyKinMeasure& ref2 =Main.Model.BodyModel.Interface.Left.WristAbduction;
//    DriverPos = pi/180*{
//      .JntPos.Left.WristFlexion,
//      .JntPos.Left.WristAbduction};
//    
//    DriverVel = pi/180*{
//      .JntVel.Left.WristFlexion,
//      .JntVel.Left.WristAbduction};
//    Reaction.Type={Off, Off};
//  };
  
  AnyStdJoint Left_Hand_Fix = 
  {
    AnyRefFrame& base = Main.Model.EnvironmentModel.Segs.Handle_Left.Hand_Node;
    AnyRefFrame& target = Main.Model.HumanRefNodes.LeftGlove.PalmNode;
    //Axis = y;
  };
  AnyStdJoint Right_Hand_Fix = 
  {
    AnyRefFrame& base = Main.Model.EnvironmentModel.Segs.Handle_Right.Hand_Node;
    AnyRefFrame& target = Main.Model.HumanRefNodes.RightGlove.PalmNode;    
    //Axis = y;
  };  

};//Drivers