Angular Velocity



Table of Contents

The relationship between the spatial pose of the end-effector and joint configurations is introduced in Homogeneous Transformation Matrix. Here we derive the relationships between the end-effector velocities and the joint velocities. When discussing end-effector velocities in Cartesian space, there are both linear velocities (translation) and angular velocities (rotation). This post introduces the definition of angular velocity and the time derivative of rotation matrices.

Angular Velocities

Because the end-effector’s pose includes orientation, recall the definition of angular velocity $\omega = d\theta / dt \cdot \mathbf u$ when computing velocities. Angular velocity is a pseudovector as shown in the figure. Its direction depends on the unit vector $\mathbf u$ and is perpendicular to the plane swept by the position vector $\mathbf r$; it is parallel to the rotation axis with magnitude $d\theta / dt$ (radians per unit time).

allocation
From Wikipedia

To fix the direction of angular velocity, we use the right-hand rule. Point the index finger along the position vector $\mathbf r$, the middle finger along the instantaneous linear velocity $\mathbf v_{\omega}$, and the thumb then points in the direction of the angular velocity. Viewed from the tip of $\mathbf u$, the rotation appears counter-clockwise.

The Derivative of Rotation Matrix

The orientation of the end-effector is expressed as a rotation matrix $R$ in forward kinematics; therefore angular velocity can be related to the time derivative of $R$ via

$$ \frac{dR^n_0(\theta)}{dt} = \frac{dR^n_0(\theta)}{d\theta} \frac{d\theta}{dt} $$

To obtain angular velocity from a rotation matrix, consider the simple case of a rotation about the $x$-axis and derive the derivative of the rotation matrix with respect to time:

$$ \frac{d R(x, \theta)}{dt} = \frac{dR(x, \theta)}{d \theta}\frac{d\theta}{dt}. $$

Now consider how to compute $dR(x, \theta)/d\theta$. Some properties of skew-symmetric matrices are useful; if you are already familiar with them you can skip this section.

HINTS of Skew-Symmetric Matrices

Definition: A matrix $S$ is skew-symmetric if and only if $S + S^T = 0$, i.e. $s_{ij} = -s_{ji}$.

Properties:

  1. $S(a \mathbf a + b \mathbf b) = aS(\mathbf a) + bS(\mathbf b), \forall \mathbf a, \mathbf b \in \mathbb R^3$;
  2. $S(\mathbf a)\mathbf p = \mathbf a \times \mathbf p, \forall \mathbf p = [p_x, p_y, p_z]^T$, where $\times$ denotes the cross product;
  3. $R(\mathbf a \times \mathbf b) = R\mathbf a \times R\mathbf b$ for $R\in SO(3)$ (the 3D rotation group);
  4. $RS(\mathbf a)R^T\mathbf b = R(\mathbf a \times R^T \mathbf b) = (R\mathbf a) \times \mathbf b = S(R\mathbf a)\mathbf b$;

where $\mathbf a = [a_x, a_y, a_z]^T$ is a vector. The skew-symmetric matrix $S(\mathbf a)$ is defined as

$$ S(\mathbf a) = \begin{bmatrix}0& -a_z& a_y \\\ a_z& 0& -a_x\\ -a_y& a_x& 0\end{bmatrix}. $$

Because $R(x, \theta)$ belongs to the 3D rotation group $SO(3)$, it is orthogonal, so

$$ R(x, \theta)R^T(x, \theta) = I. $$

Using the product rule, the derivative of the above equation is

$$ \frac{dR(x, \theta)}{d\theta}R^T(x, \theta) + R(x, \theta)\frac{dR^T(x, \theta)}{d\theta} = 0 $$

According to the definition of a skew-symmetric matrix, let $S = R^T(x, \theta) \cdot dR(x, \theta) / d\theta$. It can be simplified using the derivative and transpose of $R(x, \theta)$ as shown in the homogeneous transformation matrix:

$$ \begin{aligned} S = \frac{dR(x, \theta)}{d\theta}R(x, \theta)^T &= \begin{bmatrix}0& 0& 0\\ 0& -\sin \theta& -\cos\theta\\ 0& \cos\theta& -\sin\theta\end{bmatrix} \begin{bmatrix}1& 0& 0\\ 0& \cos\theta& \sin\theta\\ 0& -\sin\theta& \cos\theta\end{bmatrix} \\\ &= \begin{bmatrix}0& 0& 0\\ 0& 0& -1\\ 0& 1& 0\end{bmatrix} \\\ &= S(\mathbf i) \end{aligned} $$

where $\mathbf i = [1, 0, 0]^T$ is the unit vector along the $x$-axis. Thus $dR(x, \theta)/d\theta = S(\mathbf i)R(x, \theta)$. The time derivative $dR(x, \theta)/dt$ can then be expressed as

$$ \begin{aligned} \frac{d R(x, \theta)}{dt} &= \frac{d R(x, \theta)}{d\theta}\frac{d\theta}{dt} \\\ &= \frac{d\theta}{dt} S(\mathbf i)R(x, \theta) \\\ &= S\Big(\frac{d\theta}{dt} \mathbf i\Big)R(x, \theta) \\\ &= S(\omega)R(x, \theta) \end{aligned} $$

where $\omega$ is the angular velocity. Similarly, derivatives of rotation matrices about the $y$- or $z$-axes satisfy $dR(y, \theta)/d\theta = S(\mathbf j)R(y, \theta)$ and $dR(z, \theta)/d\theta = S(\mathbf k)R(z, \theta)$, where $\mathbf j = [0,1,0]^T$ and $\mathbf k = [0,0,1]^T$. In this example the angular velocity vector points along the rotation axis with magnitude $d\theta/dt$.

More generally, the time derivative of a rotation matrix $R^2_0(\theta)$ for an end-effector with two intermediate frames is

$$ \begin{aligned} \dot{R}^2_0 &= \dot{R}^1_0 R^2_1 + R^1_0\dot{R}^2_1 \\\ &= S(\omega^1_0)R^1_0R^2_1 + R^1_0S(\omega^2_1)R^2_1 \\\ &= S(\omega^1_0)R^1_0R^2_1 + R^1_0 S(\omega^2_1) {R^1_0}^T R^1_0 R^2_1(t) \\\ &= S(\omega^1_0)R^1_0R^2_1 + S(R^1_0(t)\omega^2_1(t))R^1_0(t)R^2_1(t) \\\ &= S(\omega^1_0 + R^1_0 \omega^2_1) \cdot R^2_0 \\\ &= S(\omega^2_0) R^2_0 \end{aligned} $$

by using the first and fourth properties of skew-symmetric matrices. The combined angular velocity results from the individual frame rotations. Similarly, we obtain

$$ \begin{aligned} \dot R^n_0 &= S\big(\omega^n_0\big)R^n_0 \\\ \\ \omega^n_0 &= \omega^1_0 + R^1_0\omega^2_1 + R^2_0\omega^3_2 + \cdots + R^{n - 1}_0\omega^n_{n - 1} \end{aligned} $$

where $\omega^n_0$ is the desired angular velocity of the end-effector.

In conclusion, the time derivative of a rotation matrix can be expressed using skew-symmetric matrices and the angular velocities of individual frames. This relationship is commonly used when deriving the Jacobian matrix based on $\omega^n_0$.