Difference between revisions of "Rigid Body Motion"
Line 1: | Line 1: | ||
− | {{ | + | 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:
-
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>).