# Euler angles and gimbal lock

Can someone show mathematically how gimbal lock happens when doing matrix rotation with Euler angles for yaw, pitch, roll? I'm having a hard time understanding what is going on even after reading several articles on Google.

Is the only work-around to use quaternions?

-

"Euler Angles" you can think of as a function $(S^1)^3 \to SO_3$ or $\mathbb R^3 \to SO_3$. The derivative of this function does not always have rank 3, so you have degenerate submanifolds where the function is many-to-one. In this special case that's called "gimbal lock".

One formalism that avoids this is quaternions. You can of course use other formalisms, and many other formalisms are naturally related to the quaternion version, so people tend to gravitate to the quaternion version. One version that's closely related to quaternions would be to use the exponential map for the unit quaternion group. But this also has "gymbal lock" but of a different kind. But it does have the rather appealing interpretation as rotations about arbitrary axis -- this is perhaps more useful if you're only interested in rotations that differ from the identity matrix (or some given matrix) by a small amount, they're very natural coordinates on "small scales" in $SO_3$.

Is there any special properties you'd like for coordinates on $SO_3$? That might give a sense for where you want to go with this.

Edit in response to 1st comment: There's various conventions for Euler angles. Let's use what Wikipedia calls "Proper Euler Angles" http://en.wikipedia.org/wiki/Euler_angles

Given a unit vector $\vec v \in \mathbb R^3$ and a number $\theta \in \mathbb R$, let $R_{\vec v, \theta}$ be the rotation matrix which fixes $\vec v$ and which rotates counter-clockwise by an angle $\theta$ in the plane orthogonal to $\vec v$. One version of "Proper Euler angles" would be:

$$R_{(1,0,0), \theta_1} R_{(0,1,0), \theta_2} R_{(1,0,0), \theta_3}$$

The "Tait-Bryan" variant would use the three distinct vectors, notice above we only used the standard vectors for the xy-plane. The Tait-Bryan variant is the one appropriate to pitch/roll/yaw of an aeroplane. Wikipedia has an excellent picture:

In this case you'd have

$$R_{(1,0,0),\theta_1} R_{(0,1,0), \theta_2} R_{(0,0,1),\theta_3}$$

$\theta_3$ would be the roll, $\theta_2$ the pitch and $\theta_1$ the yaw. To relate my coordinates to the picture, $(1,0,0)$ is the direction the plane is pointing. $(0,1,0)$ is the direction of the left wing. $(0,0,1)$ is the direction of the yellow axis sticking out of the top of the plane.

You can write out the matrices quite explicitly:

$$R_{(1,0,0), \theta} = \pmatrix{ 1 & 0 & 0 \cr 0 & \cos \theta & -\sin \theta \cr 0 & \sin \theta & \cos \theta }$$

So in this case, one occurance of "gimbal lock" is $\theta_2 = 0$. In the Tait-Bryan variant it would be when the aeroplane is either pointing straight up or down, which is $\theta_2 = \pm \pi/2$.

-
I would like to see mathematically where we fail to get the expected result through the use of matrix rotation. So if have the Rx(Pitch) Ry(yaw) Rz(roll) rotation matrices and multiply them, where does it fail to get the expected result. Is the problem that I can get an identity matrix and fail to rotate accordingly? Sorry I don't know which order the matrices are supposed to be multiplied in. – Xavier Nov 4 '10 at 23:28
I've posted a comment in separate answer. – Hans Lundmark Nov 5 '10 at 8:16

This refers to Ryan's answer, but was too long for a comment.

I was getting confused for a while too, but I think I understand now. To avoid misunderstandings, the Tait–Bryan angles should be called heading/elevation/bank instead of yaw/pitch/roll. The heading angle refers to rotations about the $z$ axis in space, not about the yaw axis which by definition is perpendicular to the "body-wing-plane" of the airplane, so that "excellent picture" is in fact a bit misleading in this context! The gimbal lock illustrated on Wikipedia occurs when the plane is pointing straight up or down (elevation = 90 degrees), so that changing the bank is the same thing as changing the heading. (That is, there is momentarily no way to change the yaw by manipulating the heading/elevation/bank angles!)

-
I'll use those names from now on, they appeal to my imagination better. :) – J. M. Nov 5 '10 at 11:21