Difference between revisions of "Rigid Body Motion"
(4 intermediate revisions by the same user not shown)  
Line 1:  Line 1:  
−  +  {{chapter headerIntroductionRigid Body MotionManipulator Kinematics}}  
+  A rigid motion of an object is a motion which preserves distance  
+  between points. The study of robot kinematics, dynamics, and control  
+  has at its heart the study of the motion of rigid objects. In this  
+  chapter, we provide a description of rigid body motion using the tools  
+  of linear algebra and screw theory.  
+  
+  == Chapter Summary ==  
The following are the key concepts covered in this chapter:  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>  
−  which is  +  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 endeffector 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>  
−  +  == Additional Information == 
Latest revision as of 03:01, 25 July 2009
Prev: Introduction  Chapter 2  Rigid Body Motion  Next: Manipulator Kinematics 
A rigid motion of an object is a motion which preserves distance between points. The study of robot kinematics, dynamics, and control has at its heart the study of the motion of rigid objects. In this chapter, we provide a description of rigid body motion using the tools of linear algebra and screw theory.
Chapter Summary
The following are the key concepts covered in this chapter:

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.
 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.
 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>.
 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>  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.
 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.
 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.
 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.
 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>).