2.2 Kinematics of Rotation

The motion of a rigid body about a center of rotation (a bodyfixed reference point) is characterized at each point in time by an axis of rotation and a rate of rotation

According to Euler’s theorem of rotations, we can go from one orientation of a rigid body to another in a single rotation
 Rotations are not commutative in general, i.e., the order of rotations matter
 However the combination of any number of rotations in some order can be represented by a single rotation

Orientations are specified by the rotations it takes to reach that orientation from some reference orientation.
Let $q$ by the path describing the motion of the body and $M(q(t))$ be the rotation that takes the body from a reference orientation to the orientation specified by $q(t)$. Let $\vec{\xi_\alpha}(t)$ be some vector in the bodyframe (to some constituent particle) in orientation given by $q(t)$, and $\vec{\xi’_\alpha}$ be the same bodyframe vector in the reference orientation, then:
To find the kinetic energy, we need to combine the contributions of all the constituent particles, aka, the velocities of the particles.
where $M = \mathscr{M} \circ q$. Taking the time derivative:
By inverting Eq. 2.12, we can write $\vec{\xi’}_{\alpha}$ in terms of $\vec{\xi}_{\alpha}$,
Since $M(t)$ is a rotation represented by an orthogonal matrix $\mathbf{M}(t)$, with the property, $(\mathbf{M}(t))^{1}$ = $(\mathbf{M}(t))^{\intercal}$. Therefore, $\mathbf{M}(t)(\mathbf{M}(t))^{\intercal}$ = $\mathbf{I}$ and hence $D(\mathbf{M}\mathbf{M}^\intercal) = \mathbf{0}$.
Note: $(AB)^\intercal = B^\intercal A^\intercal => (D\mathbf{M}\mathbf{M}^\intercal)^\intercal = (\mathbf{M}^\intercal)^\intercal D\mathbf{M}^\intercal = \mathbf{M}D \mathbf{M}^\intercal$
This shows that $D(\mathbf{M})\mathbf{M}^\intercal$ is antisymmetric. If $\mathbf{u}$ has the components $(x, y, z) $, all antisymmetric 3x3 matrices have the following form:
Multuplying this matrix by a vector is equivalent to a crossproduct by the vector $\vec{u}$ (and $\mathbf{u}$ is the matrix representation of $\vec{u}$. The inverse of the function $\mathscr{A}$ is one that extracts the components of $\mathbf{u}$ from a given skewsymmetric matrix.
Note: $\mathscr{A}^{1}$ is not the inverse of the skewsymmetric matrix. Rather, this is a function that by definition, extracts the components of $\vec{u}$ from a skewsymmetric matrix.
So the matrix multiplication $D\mathbf{M}\mathbf{M}^\intercal$ can be interpreted as a crossproduct with a vector that we can call $\vec{\omega}$ which is the angular velocity vector. Therefore,
Therefore the differential equations of the constituent particles can be written as:
This shows that the velocity o the constituent particles are perpendicular to their position vectors and proportional to the rate of rotation and distance from the instantaneous center:
The components, $\boldsymbol{\omega}‘$ of the angular velocity vector in the body frame are $\boldsymbol{\omega}’ = \mathbf{M}^\intercal \boldsymbol{\omega}$, or
Note: Need to figure out why it is $\mathbf{M}^\intercal$ and not $\mathbf{M}$ in Eq. 2.21. Is this not a “rotation” of the vector? Question posted at: https://physics.stackexchange.com/questions/734684/angularvelocityinbodyframevsinertialframe
This is a kinematic relationship that is valid for any path and can be used to obtain the components of angular velocity given the configuration and velocity at any time.
Implementation of angular velocity functions
(defn Mofq>omegaoft [Mofq]
(fn [q]
(fn [t]
(let [Monpath (compose Mofq q)
omegacross t]
(* ((D Monpath) t)
(transpose (Monpath t)))
(rigid/antisymmetric>columnmatrix (omegacross t)))
)))
;; `omegacross` produces the matrix representation of cross product "omega x"
;; antisymmetric>columnmatrix corresponds to A^{1} and extracts vector components from
;; a skew symmetric matrix
;; This function gives components of omega in bodyfixed axes
(defn Mofq>omegabodyoft [Mofq]
(fn [q]
(fn [t]
(* (transpose (Mofq (q t)))
(((Mofq>omegaoft Mofq) q) t)))))
;; We use Gammabar to convert these functions of path to functions of local tuple
(defn M>omega [Mofq]
(Gammabar
(Mofq>omegaoft Mofq)))
(defn M>omegabody [Mofq]
(Gammabar
(Mofq>omegabodyoft Mofq)))
:ok
:ok
These procedures will return angular velocities as a function of state (aka local tuple)