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={};
};