Questions regarding arm joints, segments and muscles

hello
my name is Reza, I’m a student at Sahand University of Technology, Iran, and I am working on developing a robotic-based model for a 3 joints representation of human arm using Anybody geometry and modelling assumptions. my aim is to formulate anatomical DoFs in human arm (joint flexions, pronation and abductions etc) in order to caculate muscle forces. i will use Newton-Euler approach in order to formulate above mentioned moments and forces.

in order to do so i have a few question about modelling assumptions used in AnyBody and some of the outputs in chartFX.

starting from wrist joint and moving up to shoulder;
1.In Arm/segments.any directory, a guesstimate for center of mass of each segment is given using sCoM (please correct me if im wrong at any point). from what i understand thats the location of CoM, but in any dynamic movement coordinates of CoM will be changing during movement. seems the value of sCoM remains costant, so which coordinate system is used to define the coordinates of CoM for each segment? if its a local system then where is it located on each segment?

  1. in Wrist DoFs definitions, as mentioned below,

////Definition of wrist joint
AnyRevoluteJoint WristJointFlexion = {
Axis = y; //flexion extension
AnyRefNode &radius_wj = …Seg.Radius.wj;
AnyRefNode &hand_wj =…Seg.WristJointSeg.FlexionExtensionAxis;
};//End WristJoint

AnyRevoluteJoint WristJointDeviation = {
Axis = z; //radial ulnar deviation
AnyRefNode &radius_wj = …Seg.WristJointSeg.RadialUlnarDeviation;
AnyRefNode &hand_wj =…Seg.Hand.wj;
};//End WristJoint

there is one defined axis for each DoF. are they the axes of revolution for each DoF? and if yes which coordinate system is used for them? where are the center of these systems located?

3.in ChartFX output, there is a set of data presented for each defined node, for example …Seg.Humerus.Axes, am I correct to assume thats the transformation matrix required to obtain other data such as coordinates for other nodes in a local coordinate system centered at that given node (in this instance, Humerus)?

  1. in forearm, there are two segments (Ulna & Radius) connected to each other in two joints, what is the joint type considered for distal and proximal PS joints? and how can the definitions provided below (copied from source code in Arm directory) be interpreted as joint type and functionality ( revolute, prismatic, spherical etc)

//Next three definitions equal to spherical joint
//Definition of proximal forearm pronation supination joint
AnyKinRotational PSRotProximal = {
Axis1 = x;
Axis2 = y;
Axis3 = z;
Type = RotAxesAngles;

AnyRefNode &RadiusPs = …Seg.Radius.PointPS2;
AnyRefNode &UlnaPs = …Seg.Ulna.ps2;
};//End pronation supination joint proximal

//Definition of forearm pronation supination joint
AnyKinLinear PSLinProximal = {
Ref=0;

AnyRefNode &UlnaPs = …Seg.Ulna.ps2;
AnyRefNode &RadiusPs = …Seg.Radius.PointPS2;
};//End pronation supination joint proximal

AnyKinEq PSProximalConstraints = {
AnyKinLinear &Jnt = .PSLinProximal;
};

//This is measure which will be used by the applications
AnyKinMeasureOrg PS = {
AnyKinRotational &Jnt = .PSRotProximal;
MeasureOrganizer = {0};
};
//End definitions of spherical joint

AnyKinEq PSLinDistalConstraint = {

//Definition of distal forearm pronation supination joint
AnyKinLinear PSLinDistal = {
Ref = 0; //Uses coordinate system of the first defined segment

AnyRefNode &UlnaPs = ...Seg.Ulna.ps2.usRot;
AnyRefNode &RadiusPs = ...Seg.Radius.PS;

};//End pronation supination joint distal
MeasureOrganizer = {0,2};
};

i am also interested to know how the highlighted parts in above code integrate into joint type definition.
the comments in that code mention that the proximal PS joint is of spherical type, does that mean, when formulating the joint, i have to consider it to have 3 roational DoFs?

on a side note, how do these two joints integrate with each other as a whole and what kinds of DoFs do they provide if taken as one segment ?(one obviously being forearm pronation/supination)

  1. when modelling via points defined for each muscle on segments, can thye be considered as pulleys? can muscles be considered as strings, meaning muscle force is constant in the entire length of it including each side of the via point? if not then how and where can I obtain the forces imposed on a given via point from a muscle?

  2. how are the axes of anatomical DoFs defined? is there a convention for them? for example considering the axis of elbow and wrist flexion as Z in their respective local coordinate systems?

  3. about GH joint, in jnt.any file, AnyKinRoational and AnyKinLinear codes are used to define the joint. how are these codes interpreted as joint type and DoFs? I am not going to cosider other joints and DoFs in shoulder complex.

  4. GH reactions, how can I include GH pushing muscles into my formulations? ill need their origin and insertion points coordinates, also via points if defined. how can I obtain these data from Anybody output? can these pushing muscles be modeled as regular muscles with a specific strength formulation and activation coefficient?

  5. if too complicated ill have to remove these pushing muscles from my model. according to comments in GHReaction.any that will cause the GH reaction force to fall outside the spherical joint. does that impose any problems in using Newton-Euler approach for formulating the moments imposed on GH joint? and also how can I remove these pushing muscles from the joint definition and moment imposed on it?

thank you in advance for taking the time to read and answer all my questions
Reza

Hello Reza,

My general recommendation for you is to learn more by reading resources - unfortunately forum is not the place to teach you how to reimplement AnyBody. You are supposed to go through to the tutorials and read core papers that describe AnyBody approach to solve the Newton-Euler equations of motion.

For the arm dataset/anatomic definitions read this documentation

CoM, muscle attachments, etc. are defined in the local segmental ref. frames. Normally all the datasets are derived from a cadaveric or an anatomic study, where they are implemented in the local ref. frame, e.g. ISB or another one. The joint axes/centers are either fitted to the geometries or found through experiments, and sometimes corrected for more physiological behaviour.

For all highlighted items a comprehensive ref. manual is already written, that is available by pressing F1 on each keyword. Please refer to this one.

For core methods, including how the muscle recruitment is implemented, read publications - you can sort by methods and scroll down to the bottom. Have a look at this paper: “An efficient numerical algorithm for solving the muscle recruitment problem in inverse dynamics simulations”.

Regards,
Pavel