ISC3d

Analyze Intersegmental Coordination directly from motion capture systems anatomical joint angles, avoiding the use of markers.

https://github.com/eladsimantov/ISC3d

現在この提出コンテンツをフォロー中です。

ISC3d
A toolbox to streamline the computation and analysis of Intersegmental Coordination in human gait studies. The core algorithm computes 3D elevation angles based solely on 3D anatomical joint angles. Intersegmental Coordination metrics can then be easily computed. Reference frames adhered to ISB recommendations.
Standard motion capture software and most biomechanics studies do not explicitly report elevation angles. In addition, intersegmental coordination metrics are traditionally found by computing elevation angles directly from raw surface marker data. This approach creates a computational bottleneck, bypassing established anatomical joint angle definitions, and limits cross-study meta-analyses. To bridge this gap, we developed an algorithm that transforms standard 3D anatomical joint angles into 3D elevation angles.
Moreover, to investigate whether coordination extends beyond sagittal plane kinematics, we derived the Elevation Angle Jacobian. This maps angular velocities from anatomical to elevation spaces and allows for the computation of Elevation Space Moments (ESM). These moments are the net contributions of joint torques to each elevation coordinate.
These methods are all available in this ISC3d toolbox.
Designed in the Neurorobotics and Bionic Limbs Lab (eNaBLe) in the Mechanical Engineering faculty, Technion - IIT.
This work was funded by the Israel Science Foundation grant 2937/24.
ISB reference frames
In this toolbox we adhere to the ISB recommendations for the definition of the segment reference frames and joint angles.
see: Wu, Ge, and Peter R. Cavanagh. “ISB Recommendations for Standardization in the Reporting of Kinematic Data.” Journal of Biomechanics 28, no. 10 (1995): 1257–61. https://doi.org/10.1016/0021-9290(95)00017-C
Elevation Angles
This example demonstrates how to compute elevation angles from joint angles, and then compute intersegmental coordination metrics.
% Compute the orientations of the thigh, shank, and foot segments, given the pelvis, hip, knee, ankle joint angles and the side (left or right).
[R_thigh, R_shank, R_foot] = isc_joint2rotm(pelvis_deg, hip_deg, knee_deg, ankle_deg, side)
% Compute the elevation angles (alpha, beta) for each segment, given the rotation matrices array.
[alpha_thigh, beta_thigh] = isc_rotm2elev(R_thigh)
[alpha_shank, beta_shank] = isc_rotm2elev(R_shank)
[alpha_foot, beta_foot] = isc_rotm2elev(R_foot)
% Quantify the intersegmental coordination metrics
planarityIndex = isc_quantify(alpha_thigh,alpha_shank,alpha_foot,type="PI")
u3t = isc_quantify(alpha_thigh,alpha_shank,alpha_foot,type="u3t")
PVPC2 = isc_quantify(alpha_thigh,alpha_shank,alpha_foot,type="PVPC2")
To compute elevation angles in 3D with lateral corrections for left and right sides, and with a new definition for the foot segment, use the "3D" functions:
% Compute the 3D elevation angles (alpha, beta, gamma) for each segment, given the rotation matrices array.
[alpha_thigh, beta_thigh, gamma_thigh] = isc_rotm2elev3D(R_thigh,side='L',is_foot=false)
[alpha_shank, beta_shank, gamma_shank] = isc_rotm2elev3D(R_shank,side='L',is_foot=false)
[alpha_foot, beta_foot, gamma_foot] = isc_rotm2elev3D(R_foot,side='L',is_foot=true)
The Elevation Jacobian
It is important to input the joint angles in their correct signs for left and right.
In addition, mind the ankle replacement of rotation with inversion as in ISB standards.
Assuming the angles are given in VICON format, the usage is as follows:
% Define the joint coordinate vector for single vector of the angles (q) (1 x 12 angles).
q_left = [ -pelvicTilt, pelvicObliquity, pelvicRotation, ...
hipFlexion, -hipAdduction, -hipRotation, ...
-kneeFlexion, -kneeAdduction, -kneeRotation, ...
ankleDorsiflexion + pi/2, ankleInversion, -ankleRotation];
q_right = [ -pelvicTilt, -pelvicObliquity, pelvicRotation, ...
hipFlexion, hipAdduction, hipRotation, ...
-kneeFlexion, kneeAdduction, kneeRotation, ...
ankleDorsiflexion + pi/2, -ankleInversion, ankleRotation];
% Alternatively, use the lateral_corrections function for matrix of angles (Q) (Nsamples x 12 angles)
Q_left = isc_lateralCorrections([pelvis,hip,knee,ankle], 'L');
Q_right = isc_lateralCorrections([pelvis,hip,knee,ankle], 'R');
% Compute the elevation Jacobian - (3,12) matrix, at a given configuration (q), defined as the mapping from pelvis, hip, knee, ankle angular velocities to the angular velocities of the elevation angles in the sagittal plane (alpha_dot).
J_alpha_left = isc_elevationJacobian(q_left)
J_alpha_right = isc_elevationJacobian(q_right)
% Compute the full elevation Jacobian - (12,12) matrix, at a given configuration (q), defined as the mapping from pelvis, hip, knee, ankle angular velocities to the angular velocities of the pelvis, thigh, shank, and foot segments in the elevation space (alpha_dot,beta_dot,gamma_dot).
J_full_left = isc_fullJacobian(q_left)
J_full_right = isc_fullJacobian(q_right)
Elevation Space Moments (ESM)
This example demonstrates how to compute the elevation space moments (ESM) given the joint torques and angles.
% Compute ESM for an array of angles (Q) and torques (Tau).
% Note that "Malpha" is the moment in the sagittal plane, and is the one relevant for traditional intersegmental coordination analysis. The "elevationMoments3D" (Malpha; Mbeta; Mgamma) are in the frontal and transverse planes, respectively, and may be used to extend the analysis of intersegmental coordination to 3D.
[elevationMoments_left,Malpha_left] = isc_jointTorque2ElevationMoments(Q_left,Tau_left,'L');
[elevationMoments_right,Malpha_right] = isc_jointTorque2ElevationMoments(Q_right,Tau_right,'R');
% size(Q) = [Ntimesteps, 12, Mtrials] ;
% size(Tau) = [Ntimesteps, 9, Mtrials] ;
% size(Malpha_left) = [Mtrials,Ntimesteps,3]
% size(elevationMoments_left) = [Mtrials,Ntimesteps,12]
```
Citation
If you use this toolbox in your research, you may cite this toolbox, or our preprint:
Extending the Law of Intersegmental Coordination: Implications for Powered Prosthetic Controls Elad Siman Tov & Nili E. Krausz (2026).
```bibtex
@misc{tov2026extendinglawintersegmentalcoordination,
title = {Extending the Law of Intersegmental Coordination: Implications for Powered Prosthetic Controls},
author = {Elad Siman Tov and Nili E. Krausz},
year = {2026},
eprint = {2602.02181},
archivePrefix= {arXiv},
primaryClass = {cs.RO},
url = {https://arxiv.org/abs/2602.02181}
}

引用

Elad Siman Tov (2026). ISC3d (https://github.com/eladsimantov/ISC3d/releases/tag/1.0.5), GitHub. に取得済み.

Add the first tag.

MATLAB リリースの互換性

  • R2015a 以降 R2025a 以前と互換性あり

プラットフォームの互換性

  • Windows
  • macOS
  • Linux
バージョン 公開済み リリース ノート Action
1.0.5

See release notes for this release on GitHub: https://github.com/eladsimantov/ISC3d/releases/tag/1.0.5

1.0.4

Added a lateral corrections function and elevation space moments (ESM) function.

1.0.3

include elevation Jacobian and angular velocity so(3) matrices function

1.0.2

Include funding grand disclaimer

1.0.1

Fixed citation confusion.

1.0.0

この GitHub アドオンでの問題を表示または報告するには、GitHub リポジトリにアクセスしてください。
この GitHub アドオンでの問題を表示または報告するには、GitHub リポジトリにアクセスしてください。