CAFE

[Vision이론]3D 복원

[Geometry]Rodrigues' formula - Rotation vector

작성자robobang|작성시간09.02.24|조회수1,877 목록 댓글 0

 http://en.wikipedia.org/wiki/Rodrigues%27_rotation_formula

Rodrigues' rotation formula

From Wikipedia, the free encyclopedia

Jump to: navigation, search

In geometry, Rodrigues' rotation formula (named after Olinde Rodrigues) is a vector formula for a rotation in space, given its axis and angle of rotation.

Say u,v \in R3 and we want to obtain a representation for the rotation vrot of the vector v around the vector u (which is assumed to have unit length) by an angle θ in the counterclockwise (i.e. positive) direction. Rodrigues' formula reads as follows:


\mathbf{v}_\mathrm{rot} = \mathbf{v} \cdot \cos\theta + \mathbf{u} \times \mathbf{v} \cdot \sin\theta
  + \langle \mathbf{u}, \mathbf{v} \rangle \mathbf{u} \cdot (1 - \cos\theta).

[edit] Proof of the formula

Take the vector w = v − <u,v>u, which is the projection of v on the plane orthogonal to u, and the cross product of the vectors u and v: z = u×v. Turn the vector w by the angle θ around the base of the vector u to obtain the projection of the rotated vector vrot:


\begin{align}
  \mathbf{w}_{\mathrm{rot}} &= \mathbf{w} \cdot \cos\theta + \mathbf{z} \cdot \sin\theta \\
  &= (\mathbf{v} - \langle \mathbf{u}, \mathbf{v} \rangle \mathbf{u}) \cdot \cos\theta
  + \mathbf{u} \times \mathbf{v} \cdot \sin\theta.
\end{align}

Notice that both the vectors w and z have the same length: |w|,|z| = |v - <u,v>u|, because the vector u is of unit length. To get the rotated vector v, we have to add back the adjustment <u,v>u. Hence


\begin{align}
  \mathbf{v}_{\mathrm{rot}} &= (\mathbf{v} - \langle \mathbf{u}, \mathbf{v} \rangle \mathbf{u}) \cdot \cos\theta
    + \mathbf{u} \times \mathbf{v} \cdot \sin\theta + \langle \mathbf{u}, \mathbf{v} \rangle \mathbf{u} \\
  &= \mathbf{v} \cdot \cos\theta + \mathbf{u} \times \mathbf{v} \cdot \sin\theta
    + \langle \mathbf{u}, \mathbf{v} \rangle \mathbf{u} \cdot (1 - \cos\theta),
\end{align}

which is exactly what we were looking for.

Using the notation \mathbf{u}^T \mathbf{v} for the scalar product, we get:


\begin{align}
  \mathbf{v}_{\mathrm{rot}} &= \cos\theta \cdot \mathbf{v} + \sin\theta \cdot \mathbf{u} \times \mathbf{v} 
    + (1 - \cos\theta) \cdot \mathbf{u} \cdot \mathbf{u}^T \mathbf{v}.
\end{align}

Denoting by \left[ \mathbf{u} \right]_\times the "cross-product" matrix for \mathbf{u}, i.e.


\begin{align}
 \left[ \mathbf{u} \right]_\times &=
\left(\begin{array}{ccc}
0 & -u_3 & u_2 \\
u_3 & 0 & -u_1 \\
-u_2 & u_1 & 0
\end{array}\right),
\end{align}

the cross-product \mathbf{u} \times \mathbf{v} can be represented with the matrix product \left[ \mathbf{u} \right]_\times \mathbf{v} and we have


\begin{align}
  \mathbf{v}_{\mathrm{rot}} &= \cos\theta \cdot I \mathbf{v} + \sin\theta \cdot \left[ \mathbf{u} \right]_\times \mathbf{v} 
    + (1 - \cos\theta) \cdot \mathbf{u} \cdot \mathbf{u}^T \mathbf{v} \\ &=
  \left( \cos\theta I + \sin\theta \left[ \mathbf{u} \right]_\times 
    + (1 - \cos\theta) \mathbf{u} \mathbf{u}^T \right) \mathbf{v}, 
\end{align}

where I is the 3x3 identity matrix. The expression‎ in the parenthesis can be identified as the rotation matrix R:


\begin{align}
  R = \cos\theta I + \sin\theta \left[ \mathbf{u} \right]_\times + (1 - \cos\theta) \mathbf{u} \mathbf{u}^T.
\end{align}

Considering that \mathbf{u} \mathbf{u}^T = \left[ \mathbf{u} \right]_\times^2 + I, the expression‎ for the rotation matrix R is sometimes written as


\begin{align}
  R = I + \sin\theta \left[ \mathbf{u} \right]_\times + (1 - \cos\theta) \left[ \mathbf{u} \right]_\times^2
\end{align}

or, equivalently,


\begin{align}
  R = I + \sin\theta \left[ \mathbf{u} \right]_\times + (1 - \cos\theta) (\mathbf{u} \mathbf{u}^T - I).
\end{align}

[edit] See also

[edit] External links

Retrieved from "http://en.wikipedia.org/wiki/Rodrigues%27_rotation_formula"

 

--------------------------------------------------------------------------------------------

 http://mathworld.wolfram.com/RodriguesRotationFormula.html


Rodrigues' Rotation Formula
DOWNLOAD Mathematica Notebook

Rodrigues' rotation formula gives an efficient method for computing the rotation matrix R in SO(3) corresponding to a rotation by an angle theta in R about a fixed axis specified by the unit vector omega^^=(omega_x,omega_y,omega_z) in R^3. Then R is given by

e^(omega^~theta) = I+omega^~sintheta+omega^~^2(1-costheta)
(1)
= [costheta+omega_x^2(1-costheta) omega_xomega_y(1-costheta)-omega_zsintheta omega_ysintheta+omega_xomega_z(1-costheta); omega_zsintheta+omega_xomega_y(1-costheta) costheta+omega_y^2(1-costheta) -omega_xsintheta+omega_yomega_z(1-costheta); -omega_ysintheta+omega_xomega_z(1-costheta) omega_xsintheta+omega_yomega_z(1-costheta) costheta+omega_z^2(1-costheta)],
(2)

where I is the 3×3 identity matrix

and omega^~ denotes the antisymmetric matrix with entries

 omega^~=[0 -omega_z omega_y; omega_z 0 -omega_x; -omega_y omega_x 0].
(3)

Note that the entries in this matrix are defined analogously to the differential matrix representation of the curl operator.

Note that

 omega^~omega=0,
(4)

so applying the rotation matrix given by Rodrigues' formula to any point on the rotation axis returns the same point.

SEE ALSO: Rotation Formula, Rotation Matrix

This entry contributed by Serge Belongie

REFERENCES:

Brockett, R. W. "Robotic Manipulators and the Product of Exponentials Formula." In Mathematical Theory of Networks and Systems. Proceedings of the International Symposium Held at the Ben Gurion University of the Negev, Beer Sheva, June 20-24, 1983 (Ed. P. A. Fuhrmann). Berlin: Springer-Verlag, pp. 120-127, 1984.

Murray, R. M.; Li, Z.; and Sastry, S. S. A Mathematical Introduction to Robotic Manipulation. Boca Raton, FL: CRC Press, 1994.




CITE THIS AS:

Belongie, Serge. "Rodrigues' Rotation Formula." From MathWorld--A Wolfram Web Resource, created by Eric W. Weisstein. http://mathworld.wolfram.com/RodriguesRotationFormula.html

 

다음검색
현재 게시글 추가 기능 열기

댓글

댓글 리스트
맨위로

카페 검색

카페 검색어 입력폼