### Euler Angles Definitions

Posted:

**Wed Nov 18, 2015 7:43 am**Hello,

I am familiar with Euler angles and quaternions. I am trying to make a script to post process the data from OptiTrack TrackingTools CSV file. Due to the lack of documentation on the manual I did a series of tests to reverse engineer how is the reference frame defined and how are the Euler angles calculated.

So far I have arrived at the following conclusions, could someone please confirm them:

1 - The reference frame X+ axis is defined by the short arm of the ground plane and the Z- axis is defined by the long arm of the ground plane. The vertical axis Y+ is defined upward. This is the opposite that was documented on the manual.

2 - From pure roll, yaw and pitch tests I noticed that roll is defined by rotation on X axis, pitch is rotation about the Z axis and yaw is rotation around the Y axis.

When trying to identify the rotation sequence for the Euler angles i came upon an inconsistency that I can't yet understand, I would value any feedback at all on this matter:

1 - I have applied a known +5 degrees pitch (according to the reference plane defined by the ground plane) but what I measured was -5 degrees.

2 - I've used a matlab script that converts Euler angles to quaternions and compared both with what I had on the exported CSV file, in an attempt to verify the rotation order. The issue is that using the reference frame definitions and angle definitions exposed on my conclusion number (2) I could not obtain an equivalent quaternion between matlab and csv, for any rotation order.

2.1 - If I change the angles definition by assuming pitch to be rotation around Y axis and Yaw rotation around Z axis, using the 'XYZ' rotation order I obtain a perfect match between the script output quaternion and the CSV file quaternion.

2.2 - The only theory i can come up with to justify this data is: There is a discrepancy between the translation reference frame (XZ horizontal and Y vertical) and the rotational reference frame (XY horizontal and Z up). There are actually two separate reference frames, one for rotation and another for translation. This would explain why I measured a negative pitch and why I can't convert the Euler angles to quaternion unless I change the rotation angles definition.

Sorry for the long post, I hope it was clear. If anyone has any feedback or has been through a similar situation, please provide me some feedback.

Thank you,

Thiago

I am familiar with Euler angles and quaternions. I am trying to make a script to post process the data from OptiTrack TrackingTools CSV file. Due to the lack of documentation on the manual I did a series of tests to reverse engineer how is the reference frame defined and how are the Euler angles calculated.

So far I have arrived at the following conclusions, could someone please confirm them:

1 - The reference frame X+ axis is defined by the short arm of the ground plane and the Z- axis is defined by the long arm of the ground plane. The vertical axis Y+ is defined upward. This is the opposite that was documented on the manual.

2 - From pure roll, yaw and pitch tests I noticed that roll is defined by rotation on X axis, pitch is rotation about the Z axis and yaw is rotation around the Y axis.

When trying to identify the rotation sequence for the Euler angles i came upon an inconsistency that I can't yet understand, I would value any feedback at all on this matter:

1 - I have applied a known +5 degrees pitch (according to the reference plane defined by the ground plane) but what I measured was -5 degrees.

2 - I've used a matlab script that converts Euler angles to quaternions and compared both with what I had on the exported CSV file, in an attempt to verify the rotation order. The issue is that using the reference frame definitions and angle definitions exposed on my conclusion number (2) I could not obtain an equivalent quaternion between matlab and csv, for any rotation order.

2.1 - If I change the angles definition by assuming pitch to be rotation around Y axis and Yaw rotation around Z axis, using the 'XYZ' rotation order I obtain a perfect match between the script output quaternion and the CSV file quaternion.

2.2 - The only theory i can come up with to justify this data is: There is a discrepancy between the translation reference frame (XZ horizontal and Y vertical) and the rotational reference frame (XY horizontal and Z up). There are actually two separate reference frames, one for rotation and another for translation. This would explain why I measured a negative pitch and why I can't convert the Euler angles to quaternion unless I change the rotation angles definition.

Sorry for the long post, I hope it was clear. If anyone has any feedback or has been through a similar situation, please provide me some feedback.

Thank you,

Thiago