Spatial Dynamics and Transformations

Feb 12, 2024 | Tech Robotics

Motivation

Dynamics studies the relationship between actuation and motion trajectories of objects. Similar to Spatial Kinematics and Transformations, expressing dynamic quantities in spatial coordinates results in compact notations that are suitable for matrix computation and computer implementation. This post extends the discussion in Spatial Kinematics and Transformations and summarizes additional concepts and transformations commonly appear in spatial dynamics. For more details, please refer to 2017@Lynch , 2007@Featherstone , and 2007@Siciliano .

Spatial Cross Product and Lie Bracket

Spatial vector cross products are the generalization of 3-dimensional vector cross products. They can facilitate the computation of many quantities in rigid body system dynamics, for example, (1) computing the differentiation spatial vectors, and (2) computing the wrench of a rigid body given its spatial inertia, twist, and spatial acceleration. Just like in 3D vector cross product, the computation of angular velocity resulting from linear velocity is slightly different from moment resulting from force; spatial vector cross products differ when treating motion and force vectors.

The spatial cross product of two spatial motion vectors $\mathcal{V}_1, \mathcal{V}_1 \in \mathsf{M}^6$ can be written as $$ \mathcal{V}_1 \times \mathcal{V}_2 = \begin{bmatrix} \omega_1 \\ v_1 \end{bmatrix} \times \begin{bmatrix} \omega_2 \\ v_2 \end{bmatrix} = \begin{bmatrix} [\omega_1] & \mathbf{0} \\ [v_1] & [\omega_1] \end{bmatrix} \begin{bmatrix} \omega_2 \\ v_2 \end{bmatrix} = [\text{ad}\mathcal{V}_1]\mathcal{V}_2 = \text{ad}_{\mathcal{V}_1} (\mathcal{V}_2) = S(\mathcal{V}_1) \mathcal{V}_2 \label{eq:spatial-motion-cross-product} $$ where $[\text{ad}\mathcal{X}]$ and $S(\mathcal{X})$ are used in the literature to denote the 6D spatial vector cross product operator of a spatial motion vector $\mathcal{X}$ with either a spatial motion or force vector, similar to skew-symmetric matrices for that of 3D vector cross product. Spatial motion vector cross product in the form of \eqref{eq:spatial-motion-cross-product} is also the Lie Bracket of $\mathcal{V}_1$ and $\mathcal{V}_2$.

Where as the spatial cross product of a motion vector $\mathcal{V} \in \mathsf{M}^6$ and a force vector $\mathcal{F} \in \mathsf{F}^6$ can be written as $$ \mathcal{V} \times \mathcal{F} = \begin{bmatrix} \omega \\ v \end{bmatrix} \times \begin{bmatrix} m \\ f \end{bmatrix} = -\begin{bmatrix} [\omega] & \mathbf{0} \\ [v] & [\omega] \end{bmatrix}^T \begin{bmatrix} \omega \\ v \end{bmatrix} = -[\text{ad}\mathcal{V}]^T \mathcal{F} = -\text{ad}_{\mathcal{V}}^T (\mathcal{F}) = -S(\mathcal{V})^T \mathcal{F} \label{eq:spatial-force-cross-product} $$

Dynamics of a Single Rigid Body

Deriving the equation of motion (EOM) for a single rigid body often relies on the classic modeling assumption, that is, a single rigid body consists of a number of rigidly connected point masses. For each point mass, it is said to have an index $i$, a mass of $m_i$, a location from the single rigid body's center of mass $r_i = (x_i, y_i, z_i)$. The single body's total mass is $m = \sum_i m_i$, its center of mass (COM) is the unique point in the single rigid body such that $\sum_i m_i r_i =0$. The single body's body frame $\{b\}$ is fixed to the body, when driving the equation of a single rigid body, the origin of $\{b\}$ is typically defined to be at the body's center of mass.

That is, for a point mass with index $i$ in the single rigid body, it has:

  • $m_i$, mass,
  • $r_i$, location from the single body's center of mass, $r_i = (x_i, y_i, z_i)$.

For the entire single rigid body, it has:

  • $m$, total mass,
  • $\{b\}$, body frame,
  • $\mathcal{I}_b$, rotational inertia matrix with respect to $\{b\}$,
  • $\mathcal{F}_b = (m_b, f_b)$, body wrench, with moment and force,
  • $\mathcal{V}_b = (\omega_b, v_b)$, body twist, with angular and linear velocity;

where the derivation of $\mathcal{I}_b$ is given in Ch. 8.2.1 in 2017@Lynch .

With the above notation and derivation given in (8.22), (8.23), and (8.29), one gets the following equation governing the relationship between twist and wrench on a single rigid body as $$ \begin{bmatrix} m_b \\ f_b \end{bmatrix} = \begin{bmatrix} \mathcal{I}_b & 0 \\ 0 & mI \end{bmatrix} \begin{bmatrix} \dot{\omega}_b \\ \dot{v}_b \end{bmatrix} - \begin{bmatrix} [\omega_b] & \mathbf{0} \\ [v_b] & [\omega_b] \end{bmatrix}^T \begin{bmatrix} \mathcal{I}_b & 0 \\ 0 & mI \end{bmatrix} \begin{bmatrix} \omega_b \\ v_b \end{bmatrix} $$ or, in a more compact format $$ \mathcal{F}_b = \mathcal{G}_b \dot{\mathcal{V}}_b - S(\mathcal{V}_b)^T \mathcal{G}_b \mathcal{V}_b = \mathcal{G}_b \dot{\mathcal{V}}_b - S(\mathcal{V}_b)^T \mathcal{P}_b \label{eq:twist-wrench} $$

Note that $S(\mathcal{V})$ maps $\mathsf{M}^6$ to $\mathsf{M}^6$, whereas $-S(\mathcal{V})^T$ maps $\mathsf{F}^6$ to $\mathsf{F}^6$, and $\mathcal{P}_b \in \mathsf{F}^6$ is discussed below.

Spatial Dynamic Quantities

Originating from \eqref{eq:twist-wrench}, there are some additional dynamic quantities that can be expressed in the spatial form with dedicated notations.

Spatial inertia: $$ \mathcal{G}_b = \begin{bmatrix} \mathcal{I}_b & 0 \\ 0 & mI \end{bmatrix} \label{eq:spatial-inertia} $$

Spatial momentum, which is a spatial force vector, indicating its spatial cross product with a twist on the left follows the operation given in \eqref{eq:spatial-force-cross-product}: $$ \mathcal{P}_b = \mathcal{G}_b \mathcal{V}_b \in \mathsf{F}^6 \label{eq:spatial-momentum} $$

Kinetic energy: $$ \mathcal{E} = \frac{1}{2}\mathcal{V}_b^T \mathcal{G}_b \mathcal{V}_b = \frac{1}{2}\omega_b^T \mathcal{I}_b \omega_b + \frac{1}{2} v_b^T m v_b $$

The subscript $b$ in spatial inertia and momentum \eqref{eq:spatial-inertia} and \eqref{eq:spatial-momentum} indicates that these quantities are expressed in the body frame. Specifically, \eqref{eq:spatial-inertia} expressed the spatial inertia in the body frame with its origin at the body's center of mass.

Spatial Inertia and Momentum in Other Frames

When deriving the equation of motion for rigid body system dynamics, it is sometime necessary to express the inertia of a single body in another frame, $\{a\}$ for example, instead of its body frame $\{b\}$ with its origin at the center of mass. Observing the that the kinetic energy if frame independent, $$ \frac{1}{2}\mathcal{V}^T_a \mathcal{G}_a \mathcal{V}_a = \frac{1}{2}\mathcal{V}^T_b \mathcal{G}_b \mathcal{V}_b $$ and the plucker transformation of twist given in Spatial Kinematics and Transformations, $$\mathcal{V}_b = \sideset{^b}{}{X_a} \mathcal{V}_a$$ one gets the spatial inertia in frame $\{a\}$ to be $$ \mathcal{G}_a = \sideset{^b}{}{X_a^T} \mathcal{G}_b \sideset{^b}{}{X_a} \label{eq:inertia-in-a} $$ and the spatial momentum in frame $\{a\}$ to be $$\mathcal{P}_a = \mathcal{V}_a \mathcal{G}_a \in \mathsf{F}^6$$

In computer implementation though, one could further expand \eqref{eq:inertia-in-a} to simplify computation and employ $$ \mathcal{G}_a = \begin{bmatrix} \sideset{^a}{}{R^T_b} \mathcal{I}_b \sideset{^a}{}{R_b} + m S(\sideset{^a}{}{p_b}) S(\sideset{^a}{}{p_b})^T & m S(\sideset{^a}{}{p_b}) \\ S(\sideset{^a}{}{p_b})^T & mI \end{bmatrix} \label{eq:inertia-in-a-expand} $$

Note that in \eqref{eq:inertia-in-a-expand}, the rotational inertia matrix in frame $\{a\}$ given by $$ \mathcal{I}_a = \sideset{^a}{}{R^T_b} \mathcal{I}_b \sideset{^a}{}{R_b} + m S(\sideset{^a}{}{p_b}) S(\sideset{^a}{}{p_b})^T $$ is the generalization of parallel-axis theorem $$\mathcal{I}_d = \mathcal{I}_{\text{COM}}+ md^2$$ from the 1D translation case to the 6D spatial case with a 3D rotation $R$ and 3D translation $p$.

Spatial Inertia of a Composite Rigid Body

To compute the spatial inertia of a composite rigid body consists of rigidly connected single rigid bodies, expressed at a common frame $\{c\}$, one can simply apply $$ \mathcal{I}_{\text{total},\{c\}} = \sum_i \mathcal{I}_{i,\, \{c\}} \label{eq:composite-inertia} $$ where $\mathcal{I}_{i,\{c\}}$ is the $i$-th single rigid body's spatial inertia converted to the common frame.

Notice that when computing composite inertia in \eqref{eq:composite-inertia}, one has to first convert all single body spatial inertia to the common frame using \eqref{eq:inertia-in-a-expand}, then sum them together.

Concluding Remarks

The development in Spatial Kinematics and Transformations and this post provide some fundamental building blocks for efficiently computing kinematics and dynamics of robotic systems. Specifically, to obtain elements in governing equations $$M\ddot{q} + C\dot{q} + g = \tau$$ and $$\dot{x} = J(q) \dot{q}$$ These are some different topics and might be discussed in future posts.