Spatial Algebra

Axis-Angle Representation (Rotation Vector)

First introduction here through Steven M. Lavalle VR series. Read more into the modern robotics book, chapter 3.

Axis-Angle Representation are implemented with rotation vectors. This vector is parallel with the axis of rotation, and the length is equal to the angle of rotation.

For a rotation axis with unit-length vector and the angle , then the rotation vector is represented by

Euler's Rotation Theorem

All 3D rotations have an axis-angle representation.

At first, I thought these were the same as Euler Angles.

But NO! With Euler Angles, we have 3 rotation angles expressed relative to 3 fixed axes , , and -axis (pitch, roll and yaw).

On the other hand, angle-axis representation, expresses a rotation as a single rotation by an angle around a specific axis. Thus, only a 3D vector here is needed to describe the rotation.

Because of Euler’s Rotation Theorem, we know that the 3 rotations can simply collapse to 1 rotation around a given axis: any sequence of rotations in 3D space is equivalent to a pure rotation about a single fixed axis.

Rotation Vector to Rotation Matrix

Rodrigues' Formula

The conversion from rotation vector to rotation matrix is shown by Rodrigues’ formula. The result of the conversion is the follow

where

  • is the rotation matrix
  • the rotation axis has unit length vector and angle
  • is the Skew-symmetric operator

Since the rotation axis does not change after the rotation, we have Therefore, the axis is the eigenvector corresponding to the matrix ’s Eigenvalue 1.

I think you can learn more about the formalization with Lie Algebra.

Usage in Eigen

// AngleAxisd rotation_vector(angle, vector);
AngleAxisd rotation_vector(M_PI/4, Vector3d(0,0,1));