User:BenFrantzDale/SE(3)
The Euclidean group in 3-dimensional space is known as SE(3)—the group of rigid-body motions in 3D. This has applications in kinematics, computer vision, robotics, etc. SE(3) is a Lie group, and has a corresponding Lie algebra representing the tangent space at the identity—the space of rigid-body velocities.
This group is generally represented as a homogeneous transformation matrix: a 4×4 matrix with the top-left 3×3 block a rotation matrix—an element of SO(3), the top-right 3×1 block a translation vector, and the bottom row being [0 0 0 1].
Exponential map
The exponential map on SE(3) is given by the matrix exponential and matrix logarithm. The logarithm turns the rotation part into a cross product matrix corresponding to the axis-angle representation of the rotation.
= Exp =
To compute
::
let
:
if , there is no rotation and the result is . Otherwise, the result is:
:.
In practice the full equation breaks down numerically near and so terms should be replaced by a polynomial expansion.
Alternately, we can replace the S expressions with more-basic identities{{citation}}:
From Rodrigues' rotation formula we have:
: where .
And then compute t:
:
which simplifies to
:.
Note that
:
:
and so
:
:
= Log =
To compute
:
First,
:
according to the Rodrigues' rotation formula. Note that there are numerical issues around zero and around .
If (no rotation) then and we are done. Otherwise, it's complicated:
We first find the screw representation of the transformation. We have the part, so we need to find a point, u, on the screw axis. The action of the transformation, of course, will move points in a screw motion about that axis...
We'll transform a point, p, and take the perpendicular bisector to the segment between and where is p transformed projected back onto the plane through x that intersects p.
Let:
: p be any point
:
:
Let
: , the distance from p to the middle of the line to
: , the height of the trangle formed by the center of rotation, p, and .
:
: where is on the screw axis, not necessarily perpendicular to .
So in general,
:
and
:
so if we enforce that u is perpendicular to , we have
:.
Since p is arbitrary, we can let it be the zero vector. Then we have
:.
Now, the v component of the 6-vector we are looking for is not u, it is:
: (why?)
We can substitute to expand this out:
:
since is the vector in the direction of the unit vector with magnitude . So we can plug in the u from above. Also, note that:
:
and:
:
so we have
:
:
:
So including the full expression for v, we get:
:
:
:
:
:.
Finally, if you want to rearrange that into a form shown in other papers, you can apply the half angle formula for tangent:
:
so
:
:::
:::
which is found in various references such as http://www.kramirez.net/Robotica/Material/Libros/A%20mathematical%20Introduction%20to%20Robotic%20manipulation.pdf p. 414.
Note: In practice the full equation breaks down numerically near and so terms should be replaced by a polynomial expansion.
See also
External links
- [http://tom-itx.dyndns.org:81/~webpage/pdf/robot-kinematics.pdf Introduction to Intelligent Robotics] by Herman Bruyninckx and Joris De Schutter
- [http://www.prometheus-inc.com/asi/algebra2003/papers/selig.pdf Lie Groups and Lie Algebras in Robotics] by J.M. Selig
- http://www.cds.caltech.edu/~murray/mlswiki/index.php/Rigid_Body_Motion
- [http://caltechcdstr.library.caltech.edu/19/00/95-010.pdf PD Control by Murray]