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

Download this file

236 lines (192 with data), 7.9 kB

AnyFolder Drivers = {
  
  AnyFolder &JntPos=..Mannequin.Posture;
  AnyFolder &JntVel=..Mannequin.PostureVel;
  
  
  AnyFolder &Thorax = ..BodyModel.Trunk.SegmentsThorax.ThoraxSeg;
  
  
  // ************************************
  // Drivers for attaching the pelvis to the global reference system
  // ************************************  
  
  AnyKinEqSimpleDriver PelvisGroundDriver ={
    AnyKinLinear lin ={
      AnyFixedRefFrame &ref1 =....EnvironmentModel.GlobalRef;
      AnyRefFrame &ref2 =....BodyModel.Trunk.SegmentsLumbar.PelvisSeg.CompatibilityFrameAMMR24;
    };
    AnyKinRotational rot ={
      AnyFixedRefFrame &ref1 =....EnvironmentModel.GlobalRef;
      AnyRefFrame &ref2 =....BodyModel.Trunk.SegmentsLumbar.PelvisSeg.CompatibilityFrameAMMR24;
      Type=RotAxesAngles;
    };
    DriverPos={
      .JntPos.PelvisPosX,
      .JntPos.PelvisPosY,
      .JntPos.PelvisPosZ,
      pi/180*.JntPos.PelvisRotZ,
      pi/180*.JntPos.PelvisRotY,
      pi/180*.JntPos.PelvisRotX
    };
    DriverVel={
      .JntVel.PelvisPosX,
      .JntVel.PelvisPosY,
      .JntVel.PelvisPosZ,
      pi/180*.JntVel.PelvisRotX,
      pi/180*.JntVel.PelvisRotY,
      pi/180*.JntVel.PelvisRotZ
    };
    Reaction.Type={On,On,On,On,On,On};
  };
  
  AnyFolder &RefHM = Main.Model.BodyModel;
  
  
  AnyFolder &ref=Main.Model.BodyModel.Trunk;
  
  
  // ************************************
  // Drivers for the spine
  // ************************************
  
  //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*{.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 = ...BodyModel.Interface.Trunk.PelvisThoraxLateralBending;        
    AnyKinMeasure& Ref3 = ...BodyModel.Interface.Trunk.PelvisThoraxRotation;   
    AnyKinMeasure& Ref1 = ...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};  
  };  
  
  
  // ************************************
  // Drivers for the right arm
  // ************************************
  
  
  //Sterno clavicular joint driver
  AnyKinEqSimpleDriver SCDriverRight ={
    AnyKinMeasure& ref1 =...BodyModel.Interface.Right.SternoClavicularProtraction;
    AnyKinMeasure& ref2 =...BodyModel.Interface.Right.SternoClavicularElevation;
    DriverPos = pi/180*{
      .JntPos.Right.SternoClavicularProtraction,
      .JntPos.Right.SternoClavicularElevation
    };
    DriverVel = {
      .JntVel.Right.SternoClavicularProtraction,
      .JntVel.Right.SternoClavicularElevation
    };
    Reaction.Type={Off,Off};
  };
  
  //Wrist driver 
  AnyKinEqSimpleDriver WristDriverRight ={
    AnyKinMeasure& ref1 =...BodyModel.Interface.Right.WristFlexion;
    AnyKinMeasure& ref2 =...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};
  };
  
  
  //Elbow pronation driver 
  AnyKinEqSimpleDriver ElbowPSDriverRight={
    AnyKinMeasure& Elbow =...BodyModel.Interface.Right.ElbowPronation;
    DriverPos= pi/180*{.JntPos.Right.ElbowPronation };  
    DriverVel = pi/180*{.JntVel.Right.ElbowPronation };  
    Reaction.Type={Off};
  };
  //Glenohumeral joint driver
  AnyKinEqSimpleDriver GHDriverRight={
    // AnyKinMeasure& ref1 =...BodyModel.Interface.Right.GlenohumeralAbduction;
    // AnyKinMeasure& ref2 =...BodyModel.Interface.Right.GlenohumeralFlexion;
    AnyKinMeasure& ref3 =...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};
  };
  
  
  
  // ************************************
  // Drivers for the left arm
  // ************************************
  
  
  //Sterno clavicular joint driver
  AnyKinEqSimpleDriver SCDriverLeft ={
    AnyKinMeasure& ref1 =...BodyModel.Interface.Left.SternoClavicularProtraction;
    AnyKinMeasure& ref2 =...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};
  };
  
  //Wrist driver
  AnyKinEqSimpleDriver WristDriverLeft ={
    AnyKinMeasure& ref1 =...BodyModel.Interface.Left.WristFlexion;
    AnyKinMeasure& ref2 =...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};
  };
  
  
  
  
  //Elbow pronation driver 
  AnyKinEqSimpleDriver ElbowPSDriverLeft={
    AnyKinMeasure& Elbow =...BodyModel.Interface.Left.ElbowPronation;
    DriverPos= pi/180*{.JntPos.Left.ElbowPronation };  
    DriverVel = pi/180*{.JntVel.Left.ElbowPronation };  
    Reaction.Type={Off};
  };
  //Glenohumeral joint driver
  AnyKinEqSimpleDriver GHDriverLeft={
    // AnyKinMeasure& ref1 =...BodyModel.Interface.Left.GlenohumeralAbduction;
    // AnyKinMeasure& ref2 =...BodyModel.Interface.Left.GlenohumeralFlexion;
    AnyKinMeasure& ref3 =...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};
  };
  
  
}; //Drivers

// Joints between the human model and the environment


Main.Model.BodyModel.Right.ShoulderArm.Seg.Hand.Carpals = {
   AnyRefNode GripCenter = {sRel=.Scale({0.020, -0.065, ....Sign*0.0}); };
};

AnyFolder Joints = {
  AnySphericalJoint HandHandle = {
    AnyRefFrame &Palm = Main.Model.BodyModel.Right.ShoulderArm.Seg.Hand.Carpals.GripCenter;
    AnyRefNode &Rim = Main.Model.EnvironmentModel.Wheel.Handle;
  };
  
  AnySphericalJoint HandRest = {
    AnyRefFrame &Palm = Main.Model.BodyModel.Left.ShoulderArm.Seg.Hand.Carpals.PalmJoint;
    AnyRefNode &Ground = Main.Model.EnvironmentModel.GlobalRef.HandRest;
  };  
};