[38ba34]: / Body / AAUHuman / Arm / ShoulderArmNoMuscles.root.any

Download this file

249 lines (190 with data), 9.9 kB

/**
This is the root file for the shoulder-arm model in the version with joint muscles  

This model contains data from two different persons. Most of the data that has been used in this model comes from the Dutch
Shoulder Group and can be found on the following webpage http://www.fbw.vu.nl/research/Lijn_A4/shoulder/overview.htm
The model is built using data from subject 2 from the VU study and subject 2 from the 
MAYO study.

The files, which contains the name "forearm", are built on data from the MAYO study
The model contains the following files:
"Seg.any" Inertia properties of all segments and definitions of surfaces used for wrapping
"ClavicleMuscleGeometry.any" nodes for muscle attacments VU sub2
"HumerusMuscleGeometry".any" nodes for muscle attacments VU sub2
"RadiusMuscleGeometry.any" nodes for muscle attacments MAYO sub2
"ScapulaMuscleGeometry.any" nodes for muscle attacments VU sub2
"UlnaMuscleGeometry.any"nodes for muscle attacments VU sub2
"jnt.any" joint definitions for the shoulder and arm
"jnt.nomuscles.any" special joint file for the shoulder and arm to be used when no muscles is used, all joints has reaction forces applied 
"ArtificialRakeForDeltoidMuscle.any" this the file which contains an artificial segment used for controlling the wrapping of the deltoid muscle
"AddOnOutsideBlockForKinematics.any" adding stuff for the scapulo-thoracic gliding plane to the thorax segment
"AddOnOutsideBlockForMuscles.any" adding wrapping geometries to segments which are not part of the block
"Glove.any" model of a glove which simulates the strength capabilities of the hand
"GloveMuscle.any" muscles for the glove here the strength of the glove can be adjusted
"muscle.any" muscle definitons for the shoulder and upper arm
"muscle-parameters-shoulder.any" muscle strength parameters for the arm
"muscle-parameters-shoulder-const.any" muscle strength parameters for the arm
"muscle-parameters-shoulder-const_simple.any" muscle strength parameters for the arm
"WristMuscle.any" this files adds artificial muscles to the wrist 
"PosDumperRight.any"  this file is used for dumping the coordinates and orientations of the segments in a right shoulder
"PosDumperLeft.any"   this file is used for dumping the coordinates and orientations of the segments in a left shoulder

The raw data from http://www.fbw.vu.nl/research/Lijn_A4/shoulder/overview.htm has been converted using a small Matlab program, 
which automatically transforms the global coordinates into local coordinates on the segments.

Related articles (The first line in each reference are the key used in the script)

Helm1991
F.C.T. van der Helm and R. Veenbaas
Modeling the mechanical efect of muscles with large attachment sites: aplication to the shoulder mechanism
Journal of Biomechanics, vol. 24, no. 12, pp. 1151-1163, 1991

Veeger1991
H.E.J. Veeger, F.C.T. van der Helm, L.H.V. van der Woude, G.M. Pronk and R.H. Rozendal
Inertia and muscle contraction parameters for musculoskeletal modelling of the shoulder mechanism
Journal of Biomechanics, vol. 24, no. 7, pp. 615-629, 1991

Helm1994
F.C.T. van der Helm
A finite element musculoskeletal model of the shoulder mechanism
Journal of Biomechanics, vol. 27, no. 5, pp. 551-569, 1994

Happee1995
The control of shoulder muscles during goal
directed movements, an inverse dynamic analysis
R. Happee and F.C.T. Van der Helm
J. Biomechanics, vol. 28, no. 10, pp. 1179-1191, 1995

Helm1992
Geometry parameters for musculoskeletal modeling of the shoulder system
Journal of biomechanics Vol. 25 no. 2, pp. 129-144, 1992
Note: this reference is used for the geometry used for the definition of many of the geometries
which are used for muscle wrapping

Veeger1997
DirkJan (H.E.J.) Veeger, Bing Yu, Kai Nan An
Orientation of axes in the elbow and forearm for biomechanical modeling
Proceedings of the first conference of the ISG

The segment coordinatesystem are according to the ISB proposal, please see  
http://www.fbw.vu.nl/research/Lijn_A4/shoulder/isg/proposal/protocol.htm

Muscles spanning the wrist has been added the data for these muscles originates from these articles
Jacobson
Jacobson, M. D., R. Raab, B. M. Fazeli, R. A. Abrams, M. J. Botte, and R. L. Lieber.
Architectural design of the human intrinsic hand muscles. 
J. Hand Surg. [Am.] 17:804809, 1992.

Lieber1
Lieber, R. L., M. D. Jacobson, B. M. Fazeli, R. A. Abrams, and M. J. Botte. 
Architecture of selected muscles of the arm and forearm: Anatomy and implications for tendon transfer.
J. Hand Surg. [Am.] 17:787-798, 1992.

Lieber2
Lieber, R. L., B. M. Fazeli, and M. J. Botte. 
Architecture of selected wrist flexor and extensor muscles. 
J. Hand Surg. [Am.] 15:244-250, 1990.

Murray
Muray, W.M.,T.S. Buchanan, and S.L. Delp. 
Scaling of peak moment arms with the elbow and forearm position
J. Biomech. Vol. 28, pp. 513-525, 1995


Known issues:

1: The model seems to be too weak for the load applied when doing pushups. This is a sign that the shoulder needs more 
adjustments before it becomes reliable
2: More work has to be done on muscle calibration. At present one posture is used for calibrating all muscles.
The file "shouldercalibration.any", which defines this, can be found in the applications in the Application directory

NOTE: 
The comment "Correction" generally means that numbers have been changed and do not follow the published data

http://www.fbw.vu.nl/research/Lijn_A4/shoulder/isg/proposal/protocol.htm

The arm has the following basic dof, which can be controlled by combinations joint drivers directly or indirectly through
connections to the environment

SternoClavicularProtraction
SternoClavicularElevation
SternoClavicularAxialRotation

GlenohumeralFlexion 
GlenohumeralAbduction
GlenohumeralExternalRotation

ElbowFlexion
ElbowPronation

WristFlexion 
WristAbduction

The model consist of the following joints:

SternoClavicularJoint: spherical joint 
AcromioClavicularJoint: spherical joint 
GlenoHumeralJoint: spherical (normal reactions of the spherical joint is not used unstead they are created so that they fall
within the glenoid cavity the file, please see the file GHReactions.any for details)

AI One dimensional constraint between the scapula and the thorax at the bonylandmark AI om scapula
AA One dimensional constraint between the scapula and the thorax at the bonylandmark AA om scapula

ConoideumLigament : the lenght of this segment is driven to a constant lenght

HumeroUlnarJoint:  Flexion extension of the elbow, revolute joint  

HumeroRadialJoint:  Constraint between radius and humerus, 1 constraint joint.  

Proximal/Distal-RadioUlnarJoint: Joint pronation supination joint or the forearm. combination of joints in distal and proximal end of the radius bone that leaves one dof
free which is pronation/supination of the forearm

Wrist joint: created as two revolute joints where the axis of rotations are not coincident

*/
AnyFolder ARM ={};

#include "AddOnOutsideBlockForKinematics.any"

//This the the artifical rake used for deltoid muscle wrapping
//it can be left out in this model but it is often an advantage
//to be able to run the same model with and without muscles
//this is the reason for including it here in the same folder structure as
//if the muscles had been there 
AnyFolder Mus={
 #include "ScapulaMuscleGeometry.any"
#include "ClavicleMuscleGeometry.any"

#include "HumerusMuscleGeometry.any"

#include "RadiusMuscleGeometry.any"
#include "UlnaMuscleGeometry.any"


#include "AddOnOutSideBlockForMuscles.any"
#include "ArtificialRakeForDeltoidMuscle.any"
};


#if RIGHT_DETAILLED_HAND*RIGHT_ARM + LEFT_DETAILLED_HAND*LEFT_ARM == 0
AnyRefNode &GloveInsertationNode=Seg.Hand.PalmJoint;
#include "Glove.any"
#endif


///This folder contains the segment in the arm
AnyFolder Seg={
  #include "Seg.any"
  
  #if RIGHT_DETAILLED_HAND*RIGHT_ARM + LEFT_DETAILLED_HAND*LEFT_ARM == 0
  #include "HandSeg.any"
  Hand={
    AnyRefFrame &CarpalsRef = Ref;
    AnyRefFrame &HandRef = Ref;
    AnyRefFrame &Finger1MetaRef = Ref;
    AnyRefFrame &Finger2MetaRef = Ref;
    AnyRefFrame &Finger3MetaRef = Ref;
    AnyRefFrame &Finger4MetaRef = Ref;
    AnyRefFrame &Finger5MetaRef = Ref;
  };
  
  #else
  
  AnyFolder Hand = {
    #include "../Hand/HandSeg.any"
    AnyRefFrame &CarpalsRef = Carpals.CarpalsRef;
    AnyRefFrame &HandRef = Carpals;
    AnyRefFrame &Finger1MetaRef = Finger1.Seg.Metacarpal;
    AnyRefFrame &Finger2MetaRef = Finger2.Seg.Metacarpal;
    AnyRefFrame &Finger3MetaRef = Finger3.Seg.Metacarpal;
    AnyRefFrame &Finger4MetaRef = Finger4.Seg.Metacarpal;
    AnyRefFrame &Finger5MetaRef = Finger5.Seg.Metacarpal;
  };
  #endif
};







#include "JointMuscles.any"

///This folder contaisn the joint in the arm
AnyFolder Jnt ={
  #if RIGHT_SHOULDER_RHYTHM*RIGHT_ARM + LEFT_SHOULDER_RHYTHM*LEFT_ARM == 0
    #include "Jnt.any"
    #else
    #include "JntSR.any"
  #endif
  #include "GHReactionsNoMuscles.any"  //This is needed when there is no muscles in the model
}; //End Jnt

///Summation of masses in the arm
AnyFolder MassSummation={
  AnyVar Mass=.Seg.Scapula.Mass+.Seg.Clavicula.Mass+.Seg.Ulna.Mass+.Seg.Humerus.Mass+.Seg.Radius.Mass+.Seg.Hand.Mass;
};

InterfaceFolder={
   #include "Interface.any"
   #if RIGHT_DETAILLED_HAND*RIGHT_ARM + LEFT_DETAILLED_HAND*LEFT_ARM == 0
   #else
   #include "../Hand/Interface.any"
   #endif
};

#ifdef DONT_USE_INITIAL_POSITION_FROM_MANNEQUIN
#else
#include "InitialPositions.any"
  #if RIGHT_DETAILLED_HAND*RIGHT_ARM + LEFT_DETAILLED_HAND*LEFT_ARM == 0
  #include "InitialPositionsHand.any"
  #else
  #include "../Hand/InitialPositionsHand.any"
  #endif
#endif

MannequinValuesFolder ={
  #include "MannequinValuesFromModel.any"
};