[770c98]: / Application / Examples / FreePosture / Model / MannequinInterpolation.any

Download this file

304 lines (236 with data), 13.9 kB

//This file can be used for controlling the mannequin to certain motions
//All drivers in the model is based on interpolation drivers (PiesewiseLine)
//
//In this mannequin file you may type a vetor of values for each joint or
//make a reference to a file containing the values as a column
//For each data vector there must be an equivalent time serie
//
//In this file there are examples of joints which are diven using two values, three values 
//(Hip and Glenohumeral) and finally there is a joint using an include file (PelvisThorax rotation)
 

Main.HumanModel.Mannequin ={
  
  // special functions to estimate initial conditions  
  #include "InterpolationFunctions.any" 
  
  Posture ={
    
    AnyVector  TimeSerie={0/4,1/4,2/4,3/4,4/4}; //This time serie should be used in general
  
    AnyVector PelvisPosTime=TimeSerie;
    AnyVector PelvisPos = .InterpolationFunctions.PelvisGroundFunction(Main.Study.tStart);  // uses Pelvis..Vec

    //This controls the position of the pelvi wrt. to the global reference frame
    PelvisPosX= PelvisPos[0];
    PelvisPosY= PelvisPos[1];
    PelvisPosZ= PelvisPos[2];
    
    //This controls the rotation of the pelvis wrt. to the global reference frame
    AnyVector PelvisRotTime=TimeSerie;
    PelvisRotX=(180/pi)*PelvisPos[3];
    PelvisRotY=(180/pi)*PelvisPos[4]; 
    PelvisRotZ=(180/pi)*PelvisPos[5];


    AnyVector PelvisPosXVec={0,0,0,0,0};
    AnyVector PelvisPosYVec={1,1,1,1,1};
    AnyVector PelvisPosZVec={0,0,0,0,0};
    AnyVector PelvisRotXVec={0,0,0,0,0};
    AnyVector PelvisRotYVec={0,0,0,0,0};
    AnyVector PelvisRotZVec={0,0,0,0,0};
    
    
    // These variables control the rotation of the thorax wrt the
    // pelvis    
    AnyVector PelvisThoraxTime=TimeSerie;
    AnyVector ThoraxRot = .InterpolationFunctions.PostureFunction(Main.Study.tStart);  // uses PelvisThorax..Vec
    PelvisThoraxExtension=(180/pi)*ThoraxRot[0]; 
    PelvisThoraxLateralBending=(180/pi)*ThoraxRot[1];
    PelvisThoraxRotation=(180/pi)*ThoraxRot[2]; 

    AnyVector PelvisThoraxExtensionVec={0,0,0,0,0}; 
    AnyVector PelvisThoraxLateralBendingVec={0,0,0,0,0};  
    AnyVector PelvisThoraxRotationVec={0,0,0,0,0};        

    AnyVector NeckTime=TimeSerie;
    NeckExtension =(180/pi)*.InterpolationFunctions.NeckFunction(Main.Study.tStart)[2]; // uses NeckExtensionVec
    NeckRotation =(180/pi)*.InterpolationFunctions.NeckFunction(Main.Study.tStart)[1]; // uses NeckAxialRotationVec
    NeckLateralBending =(180/pi)*.InterpolationFunctions.NeckFunction(Main.Study.tStart)[0]; // uses NeckLateralBendingVec
    
    
    AnyVector NeckExtensionVec={0,0,0,0,0}; 
    AnyVector NeckLateralBendingVec={0,0,0,0,0}; 
    AnyVector NeckAxialRotationVec={0,0,0,0,0}; 
    
    Right ={ 
      //Arm 
      AnyVector SternoClavicularTime=.TimeSerie;
      AnyVector SternoClavicularProtractionVec={-23,-23,-23,-23,-23};   //This value is not used for initial position
      AnyVector SternoClavicularElevationVec={11.5,11.5,11.5,11.5,11.5};    //This value is not used for initial position      
      
      AnyVector GlenohumeralTime=.TimeSerie;
      AnyVec3 GHInitPos = ..InterpolationFunctions.GHFunctionRight(Main.Study.tStart);  // uses Glenohumeral..Vec
      GlenohumeralFlexion = (180/pi)*GHInitPos[0];
      GlenohumeralAbduction = (180/pi)*GHInitPos[1]; 
      GlenohumeralExternalRotation = (180/pi)*GHInitPos[2]; 
      
      AnyVector GlenohumeralFlexionVec =0.5*{10,30,50,70,90} ;
      AnyVector GlenohumeralAbductionVec ={ 10,30,50,70,90}; 
      AnyVector GlenohumeralExternalRotationVec ={10,30,50,70,90}; 
      
      AnyVector ElbowFlexionTime=.TimeSerie;
      ElbowFlexion =(180/pi)*..InterpolationFunctions.ElbowFlexionFunctionRight(Main.Study.tStart)[0]; // uses ElbowFlexionVec
      AnyVector ElbowFlexionVec ={ 0,12,24,36,50}; 

      AnyVector ElbowPronationTime=.TimeSerie;
      ElbowPronation =(180/pi)*..InterpolationFunctions.ElbowPronationFunctionRight(Main.Study.tStart)[0];  // uses ElbowPronationVec
      AnyVector ElbowPronationVec ={ 0.0,-15,-30,-45,-60.0};
      
 
      AnyVector WristTime=.TimeSerie;
      AnyVector WristRot =(180/pi)*..InterpolationFunctions.WristFunctionLeft (Main.Study.tStart); // uses Wrist..Vec
      WristFlexion =(180/pi)*WristRot[0]; 
      WristAbduction =(180/pi)*WristRot[1]; 
      
      AnyVector WristFlexionVec ={0,2.5,5,7.5,10};
      AnyVector WristAbductionVec ={0,2.5,5,7.5,10};
      
       Finger1 ={
        AnyVector FingerTime=..TimeSerie;
        AnyVector CMCDeviationVec={0,-5,-10,-15,-20};
        AnyVector CMCFlexionVec={0,5,10,15,20};
        AnyVector MCPFlexionVec= {0,5,10,15,20};
        AnyVector MCPDeviationVec={0,0,0,0,0};
        AnyVector DIPFlexionVec={0,5,10,15,20};
         CMCFlexion=...InterpolationFunctions.Right.CMC1Flexion(Main.Study.tStart)[0];
         CMCDeviation=...InterpolationFunctions.Right.CMC1Abduction(Main.Study.tStart)[0];  
         MCPFlexion=...InterpolationFunctions.Right.MCP1Flexion(Main.Study.tStart)[0];
         MCPDeviation=...InterpolationFunctions.Right.MCP1Abduction(Main.Study.tStart)[0];
         DIPFlexion=...InterpolationFunctions.Right.DIP1(Main.Study.tStart)[0]; 
        
      };
      
      Finger2 ={
        AnyVector FingerTime=..TimeSerie;
        AnyVector MCPFlexionVec={50,60,70,80,90};
        AnyVector PIPFlexionVec={50,60,70,80,90};
        AnyVector DIPFlexionVec={50,60,70,80,90};
         MCPFlexion=...InterpolationFunctions.Right.MCP2(Main.Study.tStart)[0];  
         PIPFlexion=...InterpolationFunctions.Right.PIP2(Main.Study.tStart)[0]; 
         DIPFlexion=...InterpolationFunctions.Right.DIP2(Main.Study.tStart)[0]; 
      };
      
      Finger3 ={
        AnyVector FingerTime=..TimeSerie;
        AnyVector MCPFlexionVec={0,5,10,15,20};
        AnyVector PIPFlexionVec={0,5,10,15,20};
        AnyVector DIPFlexionVec={0,5,10,15,20};
         MCPFlexion=...InterpolationFunctions.Right.MCP3(Main.Study.tStart)[0];  
         PIPFlexion=...InterpolationFunctions.Right.PIP3(Main.Study.tStart)[0]; 
         DIPFlexion=...InterpolationFunctions.Right.DIP3(Main.Study.tStart)[0]; 
        
      };
      
      Finger4 ={
        AnyVector FingerTime=..TimeSerie;
        AnyVector MCPFlexionVec={0,5,10,15,20};
        AnyVector PIPFlexionVec={0,5,10,15,20};
        AnyVector DIPFlexionVec={0,5,10,15,20};
         MCPFlexion=...InterpolationFunctions.Right.MCP4(Main.Study.tStart)[0]; 
         PIPFlexion=...InterpolationFunctions.Right.PIP4(Main.Study.tStart)[0];  
         DIPFlexion=...InterpolationFunctions.Right.DIP4(Main.Study.tStart)[0];  
        
      };
      
      Finger5 ={
        AnyVector FingerTime=..TimeSerie;
        AnyVector MCPFlexionVec={0,5,10,15,20};
        AnyVector PIPFlexionVec={0,5,10,15,20};
        AnyVector DIPFlexionVec={0,5,10,15,20};
         MCPFlexion=...InterpolationFunctions.Right.MCP5(Main.Study.tStart)[0];  
         PIPFlexion=...InterpolationFunctions.Right.PIP5(Main.Study.tStart)[0]; 
         DIPFlexion=...InterpolationFunctions.Right.DIP5(Main.Study.tStart)[0];          
      };           
      
      
      AnyVector HipTime=.TimeSerie;
      
      AnyVector HipRot =..InterpolationFunctions.HipFunctionRight(Main.Study.tStart);  // uses Hip...Vec
      HipFlexion =(180/pi)*HipRot[0]; 
      HipAbduction =(180/pi)*HipRot[1];   
      HipExternalRotation =(180/pi)*HipRot[2];

      AnyVector HipFlexionVec ={ 20,55,90,45,0}; 
      AnyVector HipAbductionVec ={ 0,0.0,0,0,0}; 
      AnyVector HipExternalRotationVec ={ 10,5,0,-5,-10};
      
      AnyVector KneeTime=.TimeSerie;
      KneeFlexion =(180/pi)*..InterpolationFunctions.KneeFunctionRight(Main.Study.tStart)[0];   // uses KneeFlexionVec
      AnyVector KneeFlexionVec ={ 30.0,24,16,8,0}; 
      
      AnyVector AnkleTime=.TimeSerie;
      AnyVector AnkleRot = ..InterpolationFunctions.AnkleFunctionRight(Main.Study.tStart);
      AnklePlantarFlexion =(180/pi)*AnkleRot[0]; 
      SubTalarEversion =(180/pi)*AnkleRot[1]; // uses SubTalarEversionVec
      
      AnyVector AnklePlantarFlexionVec ={0,5,10,15,20}; 
      AnyVector SubTalarEversionVec ={0,5,10,15,20}; //used by Leg
    };
    
    Left ={ 
      //all values are set to be equal to the right side values 
      //feel free to change this!
      
      //Arm
      AnyVector SternoClavicularTime=.Right.SternoClavicularTime;
      AnyVector SternoClavicularProtractionVec=.Right.SternoClavicularProtractionVec;
      AnyVector SternoClavicularElevationVec=.Right.SternoClavicularElevationVec;
      
      AnyVector GlenohumeralTime=.Right.GlenohumeralTime;
      AnyVec3 GHInitPos = ..InterpolationFunctions.GHFunctionLeft(Main.Study.tStart);  // uses Glenohumeral..Vec
      GlenohumeralFlexion = (180/pi)*GHInitPos[0];
      GlenohumeralAbduction = (180/pi)*GHInitPos[1]; 
      GlenohumeralExternalRotation = (180/pi)*GHInitPos[2]; 
      AnyVector GlenohumeralFlexionVec = .Right.GlenohumeralFlexionVec ; 
      AnyVector GlenohumeralAbductionVec =.Right.GlenohumeralAbductionVec;      
      AnyVector GlenohumeralExternalRotationVec =.Right.GlenohumeralExternalRotationVec ;
      
      AnyVector ElbowFlexionTime=.Right.ElbowFlexionTime;
      ElbowFlexion =(180/pi)*..InterpolationFunctions.ElbowFEFunctionLeft(Main.Study.tStart)[0]; // uses ElbowFlexionVec
      AnyVector ElbowFlexionVec = .Right.ElbowFlexionVec; 
    
      AnyVector ElbowPronationTime=.Right.ElbowPronationTime;
      ElbowPronation =(180/pi)*..InterpolationFunctions.ElbowPSFunctionLeft(Main.Study.tStart)[0];  // uses ElbowPronationVec
      AnyVector ElbowPronationVec = .Right.ElbowPronationVec;       
      
      AnyVector WristTime=.Right.WristTime;
      AnyVector WristRot =(180/pi)*..InterpolationFunctions.WristFunctionLeft(Main.Study.tStart); // uses Wrist..Vec
      WristFlexion =(180/pi)*WristRot[0];       
      WristAbduction =(180/pi)*WristRot[1]; 
      AnyVector WristFlexionVec =.Right.WristFlexionVec;
      AnyVector WristAbductionVec =.Right.WristAbductionVec;

      
      
      
      
        Finger1 ={
        AnyVector FingerTime=..TimeSerie;
        AnyVector CMCDeviationVec={0,-5,-10,-15,-20};
        AnyVector CMCFlexionVec={0,5,10,15,20};
        AnyVector MCPFlexionVec= {0,5,10,15,20};
        AnyVector MCPDeviationVec={0,0,0,0,0};
        AnyVector DIPFlexionVec={0,5,10,15,20};
         CMCFlexion=...InterpolationFunctions.Left.CMC1Flexion(Main.Study.tStart)[0];
         CMCDeviation=...InterpolationFunctions.Left.CMC1Abduction(Main.Study.tStart)[0];  
         MCPFlexion=...InterpolationFunctions.Left.MCP1Flexion(Main.Study.tStart)[0];
         MCPDeviation=...InterpolationFunctions.Left.MCP1Abduction(Main.Study.tStart)[0];
         DIPFlexion=...InterpolationFunctions.Left.DIP1(Main.Study.tStart)[0]; 
        
      };
      
      Finger2 ={
        AnyVector FingerTime=..TimeSerie;
        AnyVector MCPFlexionVec={50,60,70,80,90};
        AnyVector PIPFlexionVec={50,60,70,80,90};
        AnyVector DIPFlexionVec={50,60,70,80,90};
         MCPFlexion=...InterpolationFunctions.Left.MCP2(Main.Study.tStart)[0];  
         PIPFlexion=...InterpolationFunctions.Left.PIP2(Main.Study.tStart)[0]; 
         DIPFlexion=...InterpolationFunctions.Left.DIP2(Main.Study.tStart)[0]; 
      };
      
      Finger3 ={
        AnyVector FingerTime=..TimeSerie;
        AnyVector MCPFlexionVec={0,5,10,15,20};
        AnyVector PIPFlexionVec={0,5,10,15,20};
        AnyVector DIPFlexionVec={0,5,10,15,20};
         MCPFlexion=...InterpolationFunctions.Left.MCP3(Main.Study.tStart)[0];  
         PIPFlexion=...InterpolationFunctions.Left.PIP3(Main.Study.tStart)[0]; 
         DIPFlexion=...InterpolationFunctions.Left.DIP3(Main.Study.tStart)[0]; 
        
      };
      
      Finger4 ={
        AnyVector FingerTime=..TimeSerie;
        AnyVector MCPFlexionVec={0,5,10,15,20};
        AnyVector PIPFlexionVec={0,5,10,15,20};
        AnyVector DIPFlexionVec={0,5,10,15,20};
         MCPFlexion=...InterpolationFunctions.Left.MCP4(Main.Study.tStart)[0]; 
         PIPFlexion=...InterpolationFunctions.Left.PIP4(Main.Study.tStart)[0];  
         DIPFlexion=...InterpolationFunctions.Left.DIP4(Main.Study.tStart)[0];  
        
      };
      
      Finger5 ={
        AnyVector FingerTime=..TimeSerie;
        AnyVector MCPFlexionVec={0,5,10,15,20};
        AnyVector PIPFlexionVec={0,5,10,15,20};
        AnyVector DIPFlexionVec={0,5,10,15,20};
         MCPFlexion=...InterpolationFunctions.Left.MCP5(Main.Study.tStart)[0];  
         PIPFlexion=...InterpolationFunctions.Left.PIP5(Main.Study.tStart)[0]; 
         DIPFlexion=...InterpolationFunctions.Left.DIP5(Main.Study.tStart)[0];          
      };           
      
      
      
      
     
      //Leg     
      AnyVector HipTime=.Right.HipTime;
      HipFlexion =.Right.HipFlexion;  
      AnyVector HipFlexionVec =.Right.HipFlexionVec;  
      HipAbduction =.Right.HipAbduction;
      AnyVector HipAbductionVec =.Right.HipAbductionVec;
      HipExternalRotation = .Right.HipExternalRotation;
      AnyVector HipExternalRotationVec = .Right.HipExternalRotationVec;
      
      AnyVector KneeTime=.Right.KneeTime;
      KneeFlexion = .Right.KneeFlexion;       
      AnyVector KneeFlexionVec = .Right.KneeFlexionVec;       
      
      AnyVector AnkleTime=.Right.AnkleTime;
      AnklePlantarFlexion = .Right.AnklePlantarFlexion ;
      AnyVector AnklePlantarFlexionVec = .Right.AnklePlantarFlexionVec ;
      SubTalarEversion =.Right.SubTalarEversion; 
      AnyVector SubTalarEversionVec =.Right.SubTalarEversionVec; 
    };
  };
  PostureVel={};  
};