Geometry – Euler Angles and Gimbal Lock Explained

euclidean-geometrygeometryquaternionstrigonometry

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?

Best Answer

"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$.

Are 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:

Pitch/Roll/Yaw

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$.