242 lines (190 with data), 9.9 kB
/**
This is the root file for the shoulder-arm model
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"
#if RIGHT_DETAILLED_HAND*RIGHT_ARM + LEFT_DETAILLED_HAND*LEFT_ARM == 0
AnyRefNode &GloveInsertationNode=Seg.Hand.PalmJoint;
#include "Glove.any"
#include "GloveMuscle.any"
#endif
///Folder with segment for 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
};
///Joints for the arm
AnyFolder Jnt ={
#if RIGHT_SHOULDER_RHYTHM*RIGHT_ARM + LEFT_SHOULDER_RHYTHM*LEFT_ARM == 0
#include "Jnt.any"
#else
#include "JntSR.any"
#endif
}; //End Jnt
///Muscles for the arm
AnyFolder Mus ={
// #include "WristMuscle.any" //these are not used anymore because muscles around the wrist has been added.
#include "Muscle.any"
}; //End Mus
///Muscle strength paramters
AnyFolder MuscleModels={
AnyFolder ConstParam ={
AnyVar MusStress =..StrengthRef.SpecificMuscleTensionShoulderArm*0.01; //0.9; // N/mm^2
AnyVar MusStressForearm = ..StrengthRef.SpecificMuscleTensionShoulderArm*0.01*10^6;//0.9*10^6; // N/m^2
AnyVar MusDensity =1060; //kg/m^3
};
//This the parameters if a simple muscle model are being used, contains only F0
#include "Muscle-parameters-shoulder-simple.any"
};//End MuscleModels
//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"
};