Coder Social home page Coder Social logo

Comments (6)

Ipuch avatar Ipuch commented on September 26, 2024

Procedure to renormalize a matrice.

image

from spartacus-shoulder-kinematic-dataset.

Ipuch avatar Ipuch commented on September 26, 2024

Could you check the supplementary material?
https://www.sciencedirect.com/science/article/abs/pii/S0966636220302617?via%3Dihub
@ANaaim and could you provide all the digits?

from spartacus-shoulder-kinematic-dataset.

ANaaim avatar ANaaim commented on September 26, 2024

All matrices available in the matfile if needed in two different format quaternion and rotation Matrices



%% Average Quaternions and Average Rotation Matrices to Convert Between All Combinations of the Three Coordinate Systems
% ---Comment the appropriate lines for 'avgQuat' to perform the conversion of interest.

% Average quaternions can be used to convert to average rotation matrices
% to avoid non-orthogonality due to rounding in average rotation matrices.
% The function, 'quat2rotm', requires the MATLAB 'Robotic Systems Toolbox'.
% If one does not have access to this toolbox, alternative methods (not
% provided) can be used to convert the quaternions below to rotation
% matrices. Otherwise, average r
[mmc8.txt](https://github.com/Ipuch/shoulder-kinematic-dataset/files/12080393/mmc8.txt)
otation matrices have been provided and can
% be used in lieu of the average quaternions.
% avgQuat = [0.980668756068305 0.193833137884344 0.0267824648371407 0.000452886961036754];        % average quaternion to convert from AC to GC
% avgQuat = [0.980668756068305 -0.193833137884344 -0.0267824648371407 -0.000452886961036754];     % average quaternion to convert from GC to AC
% avgQuat = [0.987157756687449 0.0888020551685385 -0.131707065141572 -0.0169412927913312];        % average quaternion to convert from AC to PA
% avgQuat = [0.987157756687449 -0.0888020551685385 0.131707065141572 0.0169412927913312];         % average quaternion to convert from PA to AC
% avgQuat = [0.981744551919504 -0.103866478092487 -0.158897068124725 0.0118790254819426];         % average quaternion to convert from GC to PA
avgQuat = [0.981744551919504 0.103866478092487 0.158897068124725 -0.0118790254819426];          % average quaternion to convert from PA to GC
                                                    
avgRotm = quat2rotm(avgQuat);   % convert average quaternion to average rotation matrix to avoid non-orthogonality due to rounding

% If the MATLAB 'Robotics System Toolbox' is not available, the average rotation matrices below can be used:
% avgRotm = [0.998564988941296 0.00949439421388125 0.0527050219540931; ...    % average rotation matrix to convert from AC to GC
%     0.0112709225847591 0.924857019102618 -0.380147945569494; ...
%     -0.0523538839510344 0.380196463285931 0.923422828470312];
% avgRotm = [0.998564988941296 0.0112709225847591 -0.0523538839510344; ...    % average rotation matrix to convert from GC to AC
%     0.00949439421388125 0.924857019102618 0.380196463285931; ...
%     0.0527050219540931 -0.380147945569494 0.923422828470312];
% avgRotm = [0.964732483180704 0.0100557410449752 -0.263040145164248; ...     % average rotation matrix to convert from AC to PA
%     -0.0568391733041278 0.983654375192805 -0.170860699232318; ...
%     0.257022458695919 0.17978585104532 0.949534887979275];
% avgRotm = [0.964732483180704 -0.0568391733041278 0.257022458695919; ...     % average rotation matrix to convert from PA to AC
%     0.0100557410449752 0.983654375192805 0.17978585104532; ...
%     -0.263040145164248 -0.170860699232318 0.949534887979275];
% avgRotm = [0.949221220989932 0.00968382059265423 -0.314460326974823; ...    % average rotation matrix to convert from GC to PA
%     0.0563324947886947 0.978141286964525 0.200165613346213; ...
%     0.309524996814902 -0.207715782631251 0.927926952940059];
% avgRotm = [0.949221220989932 0.0563324947886947 0.309524996814902; ...      % average rotation matrix to convert from PA to GC
%     0.00968382059265423 0.978141286964525 -0.207715782631251; ...
%     -0.314460326974823 0.200165613346213 0.927926952940059];

from spartacus-shoulder-kinematic-dataset.

Ipuch avatar Ipuch commented on September 26, 2024

I write the question for the authors.

from spartacus-shoulder-kinematic-dataset.

Ipuch avatar Ipuch commented on September 26, 2024

Email:

I hope this email finds you well. We recently delved into your article:

Kolz, C. W., Sulkar, H. J., Aliaj, K., Tashjian, R. Z., Chalmers, P. N., Qiu, Y., ... & Henninger, H. B. (2020). Reliable interpretation of scapular kinematics depends on coordinate system definition. Gait & posture, 81, 183-190.

We are writing to seek clarification regarding the use of rotation matrices to convert data between frames.

In particular, we are interested in using the rotation matrices mentioned in your article to convert vectors from one frame to another. However, we want to ensure that we employ the correct methodology and avoid any errors in our interpretation.

Let's briefly revisit some of the notations. If I consider a vector "a" expressed in the scapula frame GC (Glenoid centered, based on the definitions provided in your publication):

And the associated rotation matrix that convert the this vector from GC scapula frame to AC scapula frame (AC: acromioclavicular joint, still referring to your article):

According to our understanding we get the vector a expressed in AC frame by applying this formula:

Rotation matrix might be always confusing when we state from XX to YY, because they are actually written and read the opposite way when apply the transformation to a vector.

Before we proceed with our research, we would greatly appreciate if you could confirm that when you wrote in the code in the supplementary material and in the article "average rotation matrix to convert from GC to AC", It refers to exactly to what we described ?

We want to ensure that there is no confusion and that this is not the opposite rotation matrix when compared to what we have outlined.

Answers:

I agree on the notation causing some confusion. Based on your email below I believe we are saying the same thing, as summarized in Equation 5 of the paper. The quick way to check would be to apply the code provided to a known rotation in a given system and see if it expresses the other system appropriately. If you are working solely with skin marker data, I would think that an ACàPLA or PLAàAC conversion would be the easiest to troubleshoot considering they are such different characteristic curves as shown in Figure 4.

Perhaps I also need a bit more clarification on your intended purposes here. The ARMs were built to convert a known set of coordinate system rotations (e.g., a GC-origin based scapular rotation) into another set of rotations for a different scapular origin system (e.g. PLA-origin based scapular rotation). There is not currently a translation component associated with these operations because that is more dependent on the anatomic variation within each bone (as shown in Table S1). So my interpretation of your objectives may be flawed since I’m not sure simply rotating a vector without translating it correctly as well is useful for your application.

from spartacus-shoulder-kinematic-dataset.

Ipuch avatar Ipuch commented on September 26, 2024

image

After plotting rotation matrices, here are my conclusions:

R_ac_to_gc.T = R_gc_to_ac =math ^{AC}R_{GC}, such that a vector a in GC math ^{GC}\!\!a :

$$^{AC}\!\!a= ^{AC}\!\!R_{GC} \; ^{GC}\!\!a$$

from spartacus-shoulder-kinematic-dataset.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.