Comments (6)
Procedure to renormalize a matrice.
from spartacus-shoulder-kinematic-dataset.
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.
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.
I write the question for the authors.
from spartacus-shoulder-kinematic-dataset.
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.
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
:
from spartacus-shoulder-kinematic-dataset.
Related Issues (20)
- Clean original data storage
- Dal Maso et al data / Cereatti paper data HOT 7
- Kolz et al. 2020 - Reformat Kolz data to ISB format. HOT 2
- prb on data from cereatti ?
- Proposal for Evaluating and Ranking Data Risks HOT 5
- TODO IPUCH next week
- Standard of correction could be chosen when loading the database
- Some discrepancy when using load().import_confident_data() HOT 1
- Plot Data for article HOT 3
- Extract both original data and corrected dat for both plotly and article figure HOT 1
- TODO end of march : Where the calculation of the risk should be done : HOT 6
- issue with biorbrbd when using YxY HOT 1
- How to be sure that a segment has a wrong direction issue ? HOT 3
- Spartacus update
- List of the correct degree of freedom HOT 4
- Change everywhere risk by confidence
- refactor is_joint_euler_angle_ISB_with_adaptation_from_segment
- Investigate why it take time to create the dataset HOT 1
- Discrepancies in data abscissa labelling
- Original data of Kolz et al. data HOT 2
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
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.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from spartacus-shoulder-kinematic-dataset.