Quaternion rotation problem

Posted on 2011-10-27
Medium Priority
Last Modified: 2013-12-26

I am trying to determine Eular angles [roll, yaw, pitch] from Quaternions [w, x, y, z] which are being streamed to me from a PS3 Move controller. If I don't rotate the controller and just move it then the eular angles I derive from the quaternions match the controller position. e.g If the quaternions I get back are [w = 0.89, x = 0.37, y = 0.23, z = -0.09] the Eular angles I derive are [roll = 0, yaw = 28, pitch = 46], which is what I expect. Now if I dont move the controller just rotate it around it's own axis then the Eular's I derive from the quaternions suggest that my pitch and yaw have changed. e.g. If I dont move the controller from the earlier mentioned position and just rotate it 35 degress then the quaternions I get back are [w = 0.83, x = 0.29, y = 0.33, z = -0.34] which map out to Eular angles [roll = -20, yaw = 50, pitch = 50]. The answer I am looking for is [roll = 35, yaw = 28, pitch = 46].

The formulas I have tried for conversion from Quaternion to Eular are

yaw = atan2(2*qy*qw-2*qx*qz , 1 - 2*qy2 - 2*qz2)
roll = asin(2*qx*qy + 2*qz*qw)
pitch = atan2(2*qx*qw-2*qy*qz , 1 - 2*qx2 - 2*qz2)

and the one's mentioned on wikipedia

but I have not had any luck.

Any ideas, suggestions or formula's will be highly appreciated.

Question by:rpotash
  • 3
  • 2
LVL 12

Expert Comment

ID: 37058092
I don't think there's anything wrong with the formula.  My guess is that the values are returned in the order, x-y-z-w rather than w-x-y-z as you have described them.
LVL 12

Expert Comment

ID: 37058161
Notice that what you have as the z-value changes most as you change the angle of the controller.

Accepted Solution

rpotash earned 0 total points
ID: 37059462
I think the values are fine because the yaw pitch numbers come back correct as long as I dont rotate the controller. I found a solution that works for me at http://noelhughes.net/uploads/quat_2_euler_paper_ver3.pdf. The guy takes the quternion and applies a transformation to a unit vector. The dot product between the transformed vector and the original give me angles I need.

Thanks for your help
LVL 12

Expert Comment

ID: 37060334
The yaw and pitch might be OK because the middle two of the values in x-y-z-w and w-x-y-z would be used correctly by the algorithm.  They may end up in the wrong axis, but that depends on the coordinate system in use.  Still, you have an answer that works, problem solved.

Author Closing Comment

ID: 37362765
The link works for me, but might not work for everyone. It was not easy to find the solution to this problem.

Featured Post

Important Lessons on Recovering from Petya

In their most recent webinar, Skyport Systems explores ways to isolate and protect critical databases to keep the core of your company safe from harm.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Artificial Intelligence comes in many forms, and for game developers, Path-Finding is an important ability for making an NPC (Non-Playable Character) maneuver through terrain.  A* is a particularly easy way to approach it.  I’ll start with the algor…
As game developers, we quickly learn that Artificial Intelligence (AI) doesn’t need to be so tough.  To reference Space Ghost: “Moltar, I have a giant brain that is able to reduce any complex machine into a simple yes or no answer. (http://www.youtu…
Integration Management Part 2
Exchange organizations may use the Journaling Agent of the Transport Service to archive messages going through Exchange. However, if the Transport Service is integrated with some email content management application (such as an anti-spam), the admin…
Suggested Courses

864 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question