Difference between revisions of "Rigid Body Motion"

From MLSwiki
Jump to navigationJump to search
Line 1: Line 1:
{{chapter header|Introduction|Rigid Body Motion|Manipulator Kinematics}}
+
The following are the key concepts covered in this chapter:
 +
<ol>
 +
<li>
 +
Rotational motion of a rigid body is represented by an element of
 +
the special orthogonal group
 +
<center><amsmath>
 +
SO(3) = \{ R \in {\mathbb R}^{3 \times 3} \mid R^T R = I, \det R = 1 \}.
 +
</amsmath></center>
 +
<!--
 +
which is often parameterized  by the exponential map
 +
<center><amsmath>
 +
\exp: so(3) \longrightarrow SO(3): \widehat{\omega}\theta \mapsto
 +
e^{\widehat{\omega} \theta}.
 +
</amsmath></center>
 +
-->
 +
Other parameterizations of SO(3) include fixed and Euler angle sets,
 +
and unit quaternions.
 +
</li>
 +
 
 +
<li> The ''configuration'' of a rigid body is
 +
represented as an element <amsmath>g \in
 +
\text{SE}(3)</amsmath>.  An element <amsmath>g \in \text{SE}(3)</amsmath> may also be viewed as a mapping
 +
<amsmath>g:{\mathbb R}^3 \to {\mathbb R}^3</amsmath> which preserves distances and angles between
 +
points.  In homogeneous coordinates, we write
 +
<center><amsmath>
 +
  g = \begin{bmatrix} R & p \\ 0 & 1 \end{bmatrix} \qquad
 +
  \aligned
 +
    R &\in SO(3) \\
 +
    p &\in {\mathbb R}^3.
 +
  \endaligned
 +
</amsmath></center>
 +
The same representation can also be
 +
used for a rigid body transformation
 +
between two coordinate frames.
 +
</li>
 +
 
 +
<li> ''Rigid body transformations'' can be represented as the
 +
exponentials of twists:
 +
<center><amsmath>
 +
  g = \exp(\widehat{\xi} \theta) \qquad
 +
  \widehat{\xi} = \begin{bmatrix} \widehat{\omega} & v \\ 0 & 0 \end{bmatrix}, \quad
 +
  \aligned
 +
    \widehat{\omega} &\in so(3), \\
 +
    v &\in {\mathbb R}^3, \theta \in {\mathbb R}.
 +
  \endaligned
 +
</amsmath></center>
 +
 
 +
The twist coordinates of <amsmath>\widehat{\xi}</amsmath> are <amsmath>\xi = (v,\omega) \in
 +
{\mathbb R}^6</amsmath>.
 +
</li>
 +
 
 +
<li> A twist <amsmath>\xi = (v, \omega)</amsmath> is associated with a ''screw''
 +
motion having attributes
 +
<center><amsmath>
 +
  \alignedat 2
 +
    &\text{pitch:} &\qquad h &= \frac{\omega^T v}{\|\omega\|^2}; \\
 +
    &\text{axis:} &\qquad
 +
      l &= \begin{cases}
 +
        \{ \frac{\omega\times v}{\|\omega\|^2} + \lambda\omega:
 +
  \lambda \in{\mathbb R} \}, &\text{if $\omega\neq0$} \\
 +
\{ 0 + \lambda v:\lambda \in {\mathbb R} \}, &\text{if $\omega=0$};
 +
      \end{cases} \\
 +
    &\text{magnitude:} &\qquad
 +
      M &= \begin{cases}
 +
        \|\omega\|, &\text{if $\omega\neq0$} \\
 +
        \| v \|, &\text{if $\omega = 0$}.
 +
      \end{cases}
 +
  \endalignedat
 +
</amsmath></center>
 +
 
 +
Conversely, given a screw we can write the associated twist.  Two
 +
special cases are ''pure rotation'' about an axis <amsmath>l
 +
= \{q + \lambda \omega\}</amsmath> by an amount <amsmath>\theta</amsmath> and ''pure translation''
 +
along an axis <amsmath>l = \{0 + \lambda v\}</amsmath>:
 +
<center><amsmath>
 +
  \xi = \begin{bmatrix} -\omega\times q \\ \omega \end{bmatrix} \theta
 +
    \quad\!\text{(pure rotation)}
 +
  \qquad
 +
  \xi = \begin{bmatrix} v \\ 0 \end{bmatrix} \theta
 +
    \quad\!\text{(pure translation)}.
 +
</amsmath></center>
 +
 
 +
</li>
 +
 
 +
<li> The ''velocity'' of a rigid motion <amsmath>g(t) \in \text{SE}(3)</amsmath> can be
 +
specified in two ways.  The ''spatial velocity'',
 +
<center><amsmath>
 +
  \widehat{V}^s = \dot g g^{-1},
 +
</amsmath></center>
 +
 
 +
is a twist which gives the velocity of the rigid body as measured by
 +
an observer at the origin of the reference frame.  The ''body velocity'',
 +
<center><amsmath>
 +
  \widehat{V}^b = g^{-1} \dot g,
 +
</amsmath></center>
 +
 
 +
is the velocity of the object in the instantaneous body frame.  These
 +
velocities are related by the ''adjoint transformation''
 +
<center><amsmath>
 +
  V^s = \operatorname{Ad}_g V^b \qquad
 +
  \operatorname{Ad}_g = \begin{bmatrix} R & \widehat{p}R \\ 0 & R \end{bmatrix},
 +
</amsmath></center>
 +
 
 +
which maps <amsmath>{\mathbb R}^6 \to {\mathbb R}^6</amsmath>.  To transform velocities between
 +
coordinate frames, we use the relations
 +
<center><amsmath>
 +
  \aligned
 +
    V_{ac}^s &= V_{ab}^s + \operatorname{Ad}_{g_{ab}} V_{bc}^s \\
 +
    V_{ac}^b &= \operatorname{Ad}_{g_{bc}^{-1}} V_{ab}^b + V_{bc}^b,
 +
  \endaligned
 +
</amsmath></center>
 +
 
 +
where <amsmath>V_{ab}^s</amsmath> is the spatial velocity of coordinate frame <amsmath>B</amsmath>
 +
relative to frame <amsmath>A</amsmath> and <amsmath>V_{ab}^b</amsmath> is the body velocity.
 +
</li>
 +
 
 +
<li> ''Wrenches'' are represented as a force, moment pair
 +
<center><amsmath>
 +
  F = (f, \tau) \in {\mathbb R}^6.
 +
</amsmath></center>
 +
 
 +
If <amsmath>B</amsmath> is a coordinate frame attached to a rigid body, then we write
 +
<amsmath>F_b = (f_b, \tau_b)</amsmath> for a wrench applied at the origin of <amsmath>B</amsmath>, with
 +
<amsmath>f_b</amsmath> and <amsmath>\tau_b</amsmath> specified with respect to the <amsmath>B</amsmath> coordinate frame.
 +
If <amsmath>C</amsmath> is a second coordinate frame, then we can write <amsmath>F_b</amsmath> as an
 +
''equivalent wrench'' applied at <amsmath>C</amsmath>:
 +
<center><amsmath>
 +
  F_c = \operatorname{Ad}_{g_{bc}}^T F_b.
 +
</amsmath></center>
 +
 
 +
For a rigid body with configuration <amsmath>g_{ab}</amsmath>, <amsmath>F^s := F_a</amsmath> is called
 +
the ''spatial'' wrench and <amsmath>F^b := F_b</amsmath> is called the ''body''
 +
wrench.
 +
</li>
 +
 
 +
<li> A wrench <amsmath>F = (f, \tau)</amsmath> is associated with a screw having attributes
 +
<center><amsmath>
 +
  \alignedat 2
 +
    &\text{pitch:} &\qquad h &= \frac{f^T \tau}{\|f\|^2}; \\
 +
    &\text{axis:} &\qquad
 +
      l &= \begin{cases}
 +
        \{ \frac{f\times \tau}{\|f\|^2} + \lambda f:
 +
  \lambda \in{\mathbb R} \}, &\text{if $f\neq0$} \\
 +
\{ 0 + \lambda \tau:\lambda \in {\mathbb R} \}, &\text{if $f=0$};
 +
      \end{cases} \\
 +
    &\text{magnitude:} &\qquad
 +
      M &= \begin{cases}
 +
        \|f\|, &\text{if $f\neq0$} \\
 +
        \| \tau \|, &\text{if $f = 0$}.
 +
      \end{cases}
 +
  \endalignedat
 +
</amsmath></center>
 +
 
 +
Conversely, given a screw we can write  the associated wrench.
 +
</li>
 +
 
 +
<li> A wrench <amsmath>F</amsmath> and a twist <amsmath>V</amsmath> are ''reciprocal'' if <amsmath>F \cdot V = 0</amsmath>.
 +
Two screws <amsmath>S_1</amsmath> and <amsmath>S_2</amsmath> are reciprocal if the twist <amsmath>V_1</amsmath>
 +
about <amsmath>S_1</amsmath> and the wrench <amsmath>F_2</amsmath> along <amsmath>S_2</amsmath> are reciprocal.  The
 +
''reciprocal product'' between two screws is given by
 +
<center><amsmath>
 +
  S_1 \odot S_2 = V_1 \cdot F_2 = V_1 \odot V_2 = v_1 \cdot \omega_2
 +
  + v_2^T \omega_1
 +
</amsmath></center>
 +
 
 +
where <amsmath>V_i = (v_i, \omega_i)</amsmath> represents the twist associated with
 +
the screw <amsmath>S_i</amsmath>.  Two screws are reciprocal if the reciprocal product
 +
between the screws is zero.
 +
</li>
 +
 
 +
<li> A ''system of screws'' <amsmath>\{S_1, \dots, S_k\}</amsmath> describes the
 +
vector space of all linear combinations of the screws <amsmath>\{S_1,
 +
\dots, S_k\}</amsmath>.  A ''reciprocal screw system'' is the set of all
 +
screws which are reciprocal to <amsmath>S_i</amsmath>.  The dimensions of a screw
 +
system and its reciprocal system sum to 6 (in <amsmath>se(3)</amsmath>).</li>
 +
 
 +
<!--
 +
<li>
 +
A Lie subgroup of SE(3) is used to model constrained rigid motions.
 +
The three one dimensional Lie subgroups <amsmath>R, T</amsmath> and <amsmath>H_{\rho}</amsmath>
 +
are used to  model rigid motions generated by  primitive joints, and
 +
the  Lie subgroups <amsmath> T(3), SO(3)</amsmath>, <amsmath>SE(2), X </amsmath> and
 +
<amsmath>SE(3)</amsmath> are often
 +
used to model a manipulator's end-effector motions.</li>
 +
-->
 +
 
 +
<!--
 +
<li>
 +
Two special families of regular submanifolds of SE(3), category I
 +
and category II submanifolds, are used to model constrained rigid
 +
motions that lack a group structure.
 +
</li>
 +
-->
 +
</ol>

Revision as of 02:53, 22 July 2009

The following are the key concepts covered in this chapter:

  1. Rotational motion of a rigid body is represented by an element of the special orthogonal group
    <amsmath>

    SO(3) = \{ R \in {\mathbb R}^{3 \times 3} \mid R^T R = I, \det R = 1 \}.

    </amsmath>

    Other parameterizations of SO(3) include fixed and Euler angle sets, and unit quaternions.

  2. The configuration of a rigid body is represented as an element <amsmath>g \in \text{SE}(3)</amsmath>. An element <amsmath>g \in \text{SE}(3)</amsmath> may also be viewed as a mapping <amsmath>g:{\mathbb R}^3 \to {\mathbb R}^3</amsmath> which preserves distances and angles between points. In homogeneous coordinates, we write
    <amsmath>
     g = \begin{bmatrix} R & p \\ 0 & 1 \end{bmatrix} \qquad
     \aligned
       R &\in SO(3) \\
       p &\in {\mathbb R}^3.
     \endaligned
    
    </amsmath>

    The same representation can also be used for a rigid body transformation between two coordinate frames.

  3. Rigid body transformations can be represented as the exponentials of twists:
    <amsmath>
     g = \exp(\widehat{\xi} \theta) \qquad 
     \widehat{\xi} = \begin{bmatrix} \widehat{\omega} & v \\ 0 & 0 \end{bmatrix}, \quad
     \aligned
       \widehat{\omega} &\in so(3), \\
       v &\in {\mathbb R}^3, \theta \in {\mathbb R}.
     \endaligned
    
    </amsmath>

    The twist coordinates of <amsmath>\widehat{\xi}</amsmath> are <amsmath>\xi = (v,\omega) \in {\mathbb R}^6</amsmath>.

  4. A twist <amsmath>\xi = (v, \omega)</amsmath> is associated with a screw motion having attributes
    <amsmath>
     \alignedat 2 
       &\text{pitch:} &\qquad h &= \frac{\omega^T v}{\|\omega\|^2}; \\
       &\text{axis:} &\qquad
         l &= \begin{cases}
           \{ \frac{\omega\times v}{\|\omega\|^2} + \lambda\omega:
    

    \lambda \in{\mathbb R} \}, &\text{if $\omega\neq0$} \\ \{ 0 + \lambda v:\lambda \in {\mathbb R} \}, &\text{if $\omega=0$};

         \end{cases} \\
       &\text{magnitude:} &\qquad
         M &= \begin{cases}
           \|\omega\|, &\text{if $\omega\neq0$} \\
           \| v \|, &\text{if $\omega = 0$}.
         \end{cases}
     \endalignedat
    
    </amsmath>

    Conversely, given a screw we can write the associated twist. Two special cases are pure rotation about an axis <amsmath>l = \{q + \lambda \omega\}</amsmath> by an amount <amsmath>\theta</amsmath> and pure translation along an axis <amsmath>l = \{0 + \lambda v\}</amsmath>:

    <amsmath>
     \xi = \begin{bmatrix} -\omega\times q \\ \omega \end{bmatrix} \theta
       \quad\!\text{(pure rotation)} 
     \qquad
     \xi = \begin{bmatrix} v \\ 0 \end{bmatrix} \theta 
       \quad\!\text{(pure translation)}.
    
    </amsmath>
  5. The velocity of a rigid motion <amsmath>g(t) \in \text{SE}(3)</amsmath> can be specified in two ways. The spatial velocity,
    <amsmath>
     \widehat{V}^s = \dot g g^{-1},
    
    </amsmath>

    is a twist which gives the velocity of the rigid body as measured by an observer at the origin of the reference frame. The body velocity,

    <amsmath>
     \widehat{V}^b = g^{-1} \dot g,
    
    </amsmath>

    is the velocity of the object in the instantaneous body frame. These velocities are related by the adjoint transformation

    <amsmath>
     V^s = \operatorname{Ad}_g V^b \qquad 
     \operatorname{Ad}_g = \begin{bmatrix} R & \widehat{p}R \\ 0 & R \end{bmatrix},
    
    </amsmath>

    which maps <amsmath>{\mathbb R}^6 \to {\mathbb R}^6</amsmath>. To transform velocities between coordinate frames, we use the relations

    <amsmath>
     \aligned
       V_{ac}^s &= V_{ab}^s + \operatorname{Ad}_{g_{ab}} V_{bc}^s \\
       V_{ac}^b &= \operatorname{Ad}_{g_{bc}^{-1}} V_{ab}^b + V_{bc}^b,
     \endaligned
    
    </amsmath>

    where <amsmath>V_{ab}^s</amsmath> is the spatial velocity of coordinate frame <amsmath>B</amsmath> relative to frame <amsmath>A</amsmath> and <amsmath>V_{ab}^b</amsmath> is the body velocity.

  6. Wrenches are represented as a force, moment pair
    <amsmath>
     F = (f, \tau) \in {\mathbb R}^6.
    
    </amsmath>

    If <amsmath>B</amsmath> is a coordinate frame attached to a rigid body, then we write <amsmath>F_b = (f_b, \tau_b)</amsmath> for a wrench applied at the origin of <amsmath>B</amsmath>, with <amsmath>f_b</amsmath> and <amsmath>\tau_b</amsmath> specified with respect to the <amsmath>B</amsmath> coordinate frame. If <amsmath>C</amsmath> is a second coordinate frame, then we can write <amsmath>F_b</amsmath> as an equivalent wrench applied at <amsmath>C</amsmath>:

    <amsmath>
     F_c = \operatorname{Ad}_{g_{bc}}^T F_b.
    
    </amsmath>

    For a rigid body with configuration <amsmath>g_{ab}</amsmath>, <amsmath>F^s := F_a</amsmath> is called the spatial wrench and <amsmath>F^b := F_b</amsmath> is called the body wrench.

  7. A wrench <amsmath>F = (f, \tau)</amsmath> is associated with a screw having attributes
    <amsmath>
     \alignedat 2 
       &\text{pitch:} &\qquad h &= \frac{f^T \tau}{\|f\|^2}; \\
       &\text{axis:} &\qquad
         l &= \begin{cases}
           \{ \frac{f\times \tau}{\|f\|^2} + \lambda f:
    

    \lambda \in{\mathbb R} \}, &\text{if $f\neq0$} \\ \{ 0 + \lambda \tau:\lambda \in {\mathbb R} \}, &\text{if $f=0$};

         \end{cases} \\
       &\text{magnitude:} &\qquad
         M &= \begin{cases}
           \|f\|, &\text{if $f\neq0$} \\
           \| \tau \|, &\text{if $f = 0$}.
         \end{cases}
     \endalignedat
    
    </amsmath>

    Conversely, given a screw we can write the associated wrench.

  8. A wrench <amsmath>F</amsmath> and a twist <amsmath>V</amsmath> are reciprocal if <amsmath>F \cdot V = 0</amsmath>. Two screws <amsmath>S_1</amsmath> and <amsmath>S_2</amsmath> are reciprocal if the twist <amsmath>V_1</amsmath> about <amsmath>S_1</amsmath> and the wrench <amsmath>F_2</amsmath> along <amsmath>S_2</amsmath> are reciprocal. The reciprocal product between two screws is given by
    <amsmath>
     S_1 \odot S_2 = V_1 \cdot F_2 = V_1 \odot V_2 = v_1 \cdot \omega_2
     + v_2^T \omega_1
    
    </amsmath>

    where <amsmath>V_i = (v_i, \omega_i)</amsmath> represents the twist associated with the screw <amsmath>S_i</amsmath>. Two screws are reciprocal if the reciprocal product between the screws is zero.

  9. A system of screws <amsmath>\{S_1, \dots, S_k\}</amsmath> describes the vector space of all linear combinations of the screws <amsmath>\{S_1, \dots, S_k\}</amsmath>. A reciprocal screw system is the set of all screws which are reciprocal to <amsmath>S_i</amsmath>. The dimensions of a screw system and its reciprocal system sum to 6 (in <amsmath>se(3)</amsmath>).