Dear AnyBody Team,
we are currently working on a project where we aim to adapt the assistance level of a shoulder exoskeleton based on movement-dependent joint loading. In particular, we want to focus on the glenohumeral elevation moment (ISB convention) and extract it as accurately as possible from motion capture–driven models of overhead movements.
Since we did not find predefined joint moments expressed in ISB notation, we attempted to compute the elevation moment ourselves and would greatly appreciate your feedback, suggestions, or identification of potential errors.
Our current approach is to compute the net glenohumeral moment (including muscles and joint reactions) analogously to the FAR-based GHNetMoment using AnyForceMomentMeasure2, and then transform it into the humerus coordinate system. Based on our understanding, the elevation moment in ISB corresponds to rotation about the humeral X-axis.
Our implementation is shown below:
AnyForceMomentMeasure2 GHNetMoment = {
AnyRefNode &ref = ..Seg.Scapula.gh.RotNode;
AnyObjectPtr pArrSegments = arrcat(
ObjSearch("..Seg.Humerus","AnySeg"),
ObjSearch("..Seg.Ulna","AnySeg"),
ObjSearch("..Seg.Radius","AnySeg"),
ObjSearch("..Seg.WristJointSeg","AnySeg"),
ObjSearch("..Seg.Hand","AnySeg"),
ObjSearchRecursive("..Seg.Hand","\*","AnySeg")
);
IncludeSegments = pArrSegments;
AnyObjectPtr pArrReactions = arrcat(
ObjSearchRecursive("..Jnt","\*","AnyForceBase")
);
AnyObjectPtr pArrMuscles = arrcat(
ObjSearchRecursive("..Mus","\*","AnyMuscle"),
ObjSearchRecursive("..Jnt.GHReactions","\*","AnyMuscle"),
ObjSearchRecursive("..JointMuscles","\*","AnyMuscle")
);
IncludeForces = arrcat(pArrMuscles, pArrReactions);
// Transform to scapular coordinate system
AnyVec3 Mlocal = M * ref.Axes;
AnyVar GHAbduction = Mlocal[0];
AnyVar GHFlexion = Mlocal[2];
AnyVar GHExternalRotation = Mlocal[1];
// Transform to humerus coordinate system (ISB)
AnyVec3 Mh = M * ..Seg.Humerus.Axes;
// ISB: elevation axis assumed to be humeral X-axis
AnyVar GHElevationMoment_proj = Mh[0];
};
Our main questions are:
-
Is it correct to interpret the ISB elevation moment as the projection of the net GH moment onto the humeral X-axis?
-
Is this transformation approach (global → scapula → humerus) appropriate, or would you recommend a different reference or method?
Additionally, we would like to clarify whether our implementation at the GH joint is sufficient, or if relevant contributions might be missing due to the scapulohumeral rhythm. More specifically, we are wondering whether the net moment calculated at the GH joint already fully captures the mechanical loading, or if additional effects arising from scapular motion (e.g., via the scapulothoracic articulation) need to be considered when analyzing the elevation moment in ISB notation.
To undertsand/verify the implementation we used the standing model in 90° flexion and 90° abduction (see Pictures) with different weights. I attached pictures of the model and the calculated moments (the existing FAR moments and our implemented ISB Elevation) below.
We would be very grateful for any feedback or recommendations on how to obtain the most accurate representation of the elevation moment.
Thank you very much in advance!
Best regards,
Anna

