Content
    Linear and Angular (Spacial) Velocities

Twists

Linear and Angular (Spacial) Velocities

Given a transformation matrix that represents the configuration {b}\{b\} as seen from {s}\{s\}

T=T(t)=Tsb(t)=[R(t)p(t)01]T = T(t) = T_{sb}(t) = \begin{bmatrix} R(t) & p(t) \\ 0 & 1 \end{bmatrix}

the spacial velocity can be calculated analogous to the angular velocity.

T1T˙=[RTRTp01][R˙p˙00]=[RTR˙RTp˙00]=[[ωb]vb00]T^{-1}\dot{T} = \begin{bmatrix} R^T & -R^Tp \\ 0 & 1 \end{bmatrix} \begin{bmatrix} \dot{R} & \dot{p} \\ 0 & 0 \end{bmatrix} = \begin{bmatrix} R^T\dot{R} & R^T\dot{p} \\ 0 & 0 \end{bmatrix} = \begin{bmatrix} [\omega_b] & v_b \\ 0 & 0 \end{bmatrix}

with

  • RTR˙=[ωb]R^T\dot{R} = [\omega_b]: skew-symmetric representation of angular velocity (expressed in {b}\{b\} coordinates)
  • p˙\dot{p}: linear velocity of origin of {b}\{b\} expressed in {s}\{s\} coordinates
  • RTp˙=vbR^T\dot{p} = v_b: linear velocity (expressed in {b}\{b\} cooridnates)

A twist is the velocity of a screw motion.

Matrix Representation of a Twist (Spatial Velocity)

Body Twist

The spacial velocity in the body frame, or body twist is (in matrix representation):

[Vb]=Tsb1T˙sb=[[ωb]vb00]se(3)[V_b] = T_{sb}^{-1}\dot{T}_{sb} = \begin{bmatrix} [\omega_b] & v_b \\ 0 & 0 \end{bmatrix} \in se(3)

where:

  • [ωb]so(3)[\omega_b] \in so(3): Angular velocity (skew-symmetric matrix representation) expressed in {b}\{b\}
  • vbR3v_b \in \mathbb{R}^3: linear velocity of a point at the origin of {b}\{b\} expressed in {b}\{b\}

The set of all 4×44 \times 4 matrices of the form of [Vb][V_b] is called se(3)se(3) (Lie algebra for the Lie group SE(3)SE(3)).

se(3)se(3) is the set of the matrix representations of the twists associated with the rigid-body configuration SE(3)SE(3).

se(3)se(3) consists of all possible T˙\dot{T} (when T=IT= I).

Spacial Twist

The spacial twist (spacial velocity in the space frame) is analogous to the body twist

[Vs]=T˙sbTsb1=[[ωs]vs00]se(3)[V_s] = \dot{T}_{sb}T^{-1}_{sb} = \begin{bmatrix} [\omega_s] & v_s \\ 0 & 0 \end{bmatrix} \in se(3)

Where:

  • [ωs]so(3)[\omega_s] \in so(3): Angular velocity (skew-symmetric matrix representation) expressed in {s}\{s\}
  • vsR3v_s \in \mathbb{R}^3: linear velocity of a point at the origin of {s}\{s\} expressed in {s}\{s\}

Conversion between Body-Frame and Space-Frame (adjoint map)

From body frame {b}\{b\} to space frame {s}\{s\}:
Vs=[ωsvs]=[R0[p]RR][ωbvb]=[AdTsb]VbV_s = \begin{bmatrix} \omega_s \\ v_s \end{bmatrix} = \begin{bmatrix} R & 0 \\ [p]R & R \end{bmatrix} \begin{bmatrix} \omega_b \\ v_b \end{bmatrix} = [Ad_{T_{sb}}]V_b
From space frame {s}\{s\} to body frame {b}\{b\}:
Vb=[ωbvb]=[RT0RT[p]RT][ωsvs]=[AdTbs]VsV_b = \begin{bmatrix} \omega_b \\ v_b \end{bmatrix} = \begin{bmatrix} R^T & 0 \\ -R^T[p] & R^T \end{bmatrix} \begin{bmatrix} \omega_s \\ v_s \end{bmatrix} = [Ad_{T_{bs}}]V_s

Where [AdT]R6×6[Ad_T] \in \mathbb{R}^{6 \times 6} is the adjoint representation (adjoint map) of T=(R,p)SE(3)T = (R,p) \in SE(3).

[AdT]=[R0[p]RR]R6×6[Ad_T] = \begin{bmatrix} R & 0 \\ [p]R & R \end{bmatrix} \in \mathbb{R}^{6 \times 6}

The fixed-frame representation of a twist VsV_s does not depend on the choice of the body frame {b}\{b\}.

And the body-frame representation VbV_b of the same twist does not depend on the choice of the fixed frame {s}\{s\}.

Properties of the Adjoint Map
  • Composition:
    • AdT1(AdT2(V))=AdT1T2(V)Ad_{T_1}(Ad_{T_2}(V)) = Ad_{T_1T_2}(V)
    • or: [AdT1][AdT2]V=[AdT1T2]V[Ad_{T_1}][Ad_{T_2}]V = [Ad_{T_1T_2}]V
    • with:
      • T1,T2SE(3)T_1, T_2 \in SE(3)
      • V=(ω,v)V = (\omega, v)
  • Inverse:
    • [AdT]1=[AdT1][Ad_T]^{-1} = [Ad_{T^{-1}}] for any TSE(3)T \in SE(3):

Screw interpretation of a Twist

A twist VV can be viewed as a screw axis SS and a velocity θ˙\dot{\theta} (just like an angular velocity ω\omega can be combined as ω^θ˙\hat{\omega}\dot{\theta}).

V=[ωv]=Sθ˙V = \begin{bmatrix} \omega \\ v \end{bmatrix} = S\dot{\theta}

The screw axis SS is defined using a normalized version of any twist V=(ω,v)V = (\omega, v) corresponting to motion along the screw:

  1. if ω0\omega \neq 0:
    • Screw axis SS is just VV normalized by length of angular velocity vector: S=V/ω=(ω/ω,v/ω)S = V / \left\| \omega \right\| = (\omega/\left\| \omega \right\|, v/\left\| \omega \right\|)
    • Angular velocity about screw axis is θ˙=ω\dot{\theta} = \left\| \omega \right\| such that Sθ˙=VS\dot{\theta} = V
  2. if ω=0\omega = 0:
    • Screw axis SS is just VV normalized by length of linear velocity vector: S=V/v=(0,v/v)S = V / \left\| v \right\| = (0, v/\left\| v \right\|)
    • Linear velocity along screw axis is θ˙=v\dot{\theta} = \left\| v \right\| such that Sθ˙=VS\dot{\theta} = V

Normalized Screw Axis

A unit screw axis is a noramlized twist defined as:

S=[SωSv]=[angular velocity when: θ˙=1linear velocity of origin when: θ˙=1]R6S = \begin{bmatrix} S_{\omega} \\ S_v \end{bmatrix} = \begin{bmatrix} \textit{angular velocity when: } \dot{\theta} = 1 \\ \textit{linear velocity of origin when: } \dot{\theta} = 1 \end{bmatrix} \in \mathbb{R}^6

Where:

  • either pitch hh is finite
    • Sω=1\left\| S_{\omega} \right\| = 1 (equivalent: ω=1\left\| \omega \right\| = 1)
    • θ˙\dot{\theta}: rotational speed
    • then: v=ω×q+hωv = -\omega \times q + h\omega
      • qq: a point on the screw axis
      • hh: pitch of the screw (h=0h=0 for pure rotation)
  • or pitch hh is infinite (hh \to \infty)
    • Sω=0S_{\omega} = 0 (equivalent: ω=0\omega = 0)
    • Sv=1\left\| S_{v} \right\| = 1 (equivalent: v=1\left\| v \right\| = 1)
    • θ˙\dot{\theta}: linear speed
    • pure translation along the axis defined by vv

A screw axis SS is just a normalized twist. It can be represented as a 4×44 \times 4 matrix [S][S] of S=(ω,v)S = (\omega, v):

[S]=[[ω]v00]se(3)[S] = \begin{bmatrix} [\omega] & v \\ 0 & 0 \end{bmatrix} \in se(3)

with:

  • [ω]so(3)[\omega] \in so(3): the screw-symmetric representation of ω\omega
Conversion of Screw Axes

A screw axis represented in any frame {a}\{a\} can be represented in another frame {b}\{b\} (with a modified version of the subscript cancellation rule):

Sa=[AdTa]SS_a = [Ad_{T_{a\not{b}}}]S_{\not{b}}

With:

  • SaS_a: Screw axis represented in {a}\{a\} coordinates
  • SbS_b: Same screw axis represented in {b}\{b\} coordinates
  • [AdTab][Ad_{T_{ab}}]: Adjoint map (from bb to aa)

Literature

Notes taken from:

Modern Robotics: Mechanics, Planning, and Control by Kevin M. Lynch and Frank C. Park, Cambridge University Press, 2017



  • Category

  • Mechanics

  • Tags

  • Robotics

  • Created

  • 1. January 2021


  • Modified

  • 8. April 2022