SE3< Precision > Class Template Reference
[Transformation matrices]

Represent a three-dimensional Euclidean transformation (a rotation and a translation). More...

#include <se3.h>

List of all members.

Public Member Functions

 SE3 ()
template<int S, typename P , typename A >
 SE3 (const SO3< Precision > &R, const Vector< S, P, A > &T)
template<int S, typename P , typename A >
 SE3 (const Vector< S, P, A > &v)
template<class IP , int S, typename P , typename A >
 SE3 (const Operator< Internal::Identity< IP > > &, const Vector< S, P, A > &T)
SO3< Precision > & get_rotation ()
const SO3< Precision > & get_rotation () const
Vector< 3, Precision > & get_translation ()
const Vector< 3, Precision > & get_translation () const
Vector< 6, Precision > ln () const
SE3 inverse () const
SE3operator*= (const SE3 &rhs)
SE3 operator* (const SE3 &rhs) const
SE3left_multiply_by (const SE3 &left)
template<int S, typename Accessor >
Vector< 6, Precision > adjoint (const Vector< S, Precision, Accessor > &vect) const
template<int S, typename Accessor >
Vector< 6, Precision > trinvadjoint (const Vector< S, Precision, Accessor > &vect) const
template<int R, int C, typename Accessor >
Matrix< 6, 6, Precision > adjoint (const Matrix< R, C, Precision, Accessor > &M) const
template<int R, int C, typename Accessor >
Matrix< 6, 6, Precision > trinvadjoint (const Matrix< R, C, Precision, Accessor > &M) const
template<int S, typename P , typename VA >
SE3< Precision > exp (const Vector< S, P, VA > &mu)

Static Public Member Functions

template<int S, typename P , typename A >
static SE3 exp (const Vector< S, P, A > &vect)
static Vector< 6, Precision > ln (const SE3 &se3)
static Matrix< 4, 4, Precision > generator (int i)
template<typename Base >
static Vector< 4, Precision > generator_field (int i, const Vector< 4, Precision, Base > &pos)

Related Functions

(Note that these are not member functions.)

template<typename Precision >
std::ostream & operator<< (std::ostream &os, const SE3< Precision > &rhs)
template<int S, typename PV , typename A , typename P >
Vector< 4, typename
Internal::MultiplyType< P, PV >
::type > 
operator* (const SE3< P > &lhs, const Vector< S, PV, A > &rhs)
template<typename PV , typename A , typename P >
Vector< 3, typename
Internal::MultiplyType< P, PV >
::type > 
operator* (const SE3< P > &lhs, const Vector< 3, PV, A > &rhs)
template<int S, typename PV , typename A , typename P >
Vector< 4, typename
Internal::MultiplyType< P, PV >
::type > 
operator* (const Vector< S, PV, A > &lhs, const SE3< P > &rhs)
template<int R, int Cols, typename PM , typename A , typename P >
Matrix< 4, Cols, typename
Internal::MultiplyType< P, PM >
::type > 
operator* (const SE3< P > &lhs, const Matrix< R, Cols, PM, A > &rhs)
template<int Rows, int C, typename PM , typename A , typename P >
Matrix< Rows, 4, typename
Internal::MultiplyType< PM, P >
::type > 
operator* (const Matrix< Rows, C, PM, A > &lhs, const SE3< P > &rhs)


Detailed Description

template<typename Precision = double>
class TooN::SE3< Precision >

Represent a three-dimensional Euclidean transformation (a rotation and a translation).

This can be represented by a matrix operating on a homogeneous co-ordinate, so that a vector $\underline{x}$ is transformed to a new location $\underline{x}'$ by

\[\begin{aligned}\underline{x}' &= E\times\underline{x}\\ \begin{bmatrix}x'\\y'\\z'\end{bmatrix} &= \begin{pmatrix}r_{11} & r_{12} & r_{13} & t_1\\r_{21} & r_{22} & r_{23} & t_2\\r_{31} & r_{32} & r_{33} & t_3\end{pmatrix}\begin{bmatrix}x\\y\\z\\1\end{bmatrix}\end{aligned}\]

This transformation is a member of the Special Euclidean Lie group SE3. These can be parameterised six numbers (in the space of the Lie Algebra). In this class, the first three parameters are a translation vector while the second three are a rotation vector, whose direction is the axis of rotation and length the amount of rotation (in radians), as for SO3


Constructor & Destructor Documentation

SE3 (  ) 

Default constructor. Initialises the the rotation to zero (the identity) and the translation to zero.

Referenced by SE3< P >::operator*().


Member Function Documentation

SO3<Precision>& get_rotation (  ) 

const SO3<Precision>& get_rotation (  )  const

This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.

Vector<3, Precision>& get_translation (  ) 

const Vector<3, Precision>& get_translation (  )  const

This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.

static SE3 exp ( const Vector< S, P, A > &  vect  )  [static]

Exponentiate a Vector in the Lie Algebra to generate a new SE3.

See the Detailed Description for details of this vector.

Parameters:
vect The Vector to exponentiate

static Vector<6, Precision> ln ( const SE3< Precision > &  se3  )  [static]

Take the logarithm of the matrix, generating the corresponding vector in the Lie Algebra.

See the Detailed Description for details of this vector.

Vector<6, Precision> ln (  )  const

This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.

Referenced by SE3< P >::ln().

SE3& operator*= ( const SE3< Precision > &  rhs  ) 

Right-multiply by another SE3 (concatenate the two transformations).

Parameters:
rhs The multipier

SE3 operator* ( const SE3< Precision > &  rhs  )  const

Right-multiply by another SE3 (concatenate the two transformations).

Parameters:
rhs The multipier

static Vector<4,Precision> generator_field ( int  i,
const Vector< 4, Precision, Base > &  pos 
) [static]

Returns the i-th generator times pos.

Vector< 6, Precision > adjoint ( const Vector< S, Precision, Accessor > &  vect  )  const

Transfer a matrix in the Lie Algebra from one co-ordinate frame to another.

This is the operation such that for a matrix $ B $, $ e^{\text{Adj}(v)} = Be^{v}B^{-1} $

Parameters:
M The Matrix to transfer

References SE3< Precision >::get_rotation(), SE3< Precision >::get_translation(), and Vector< Size, Precision, Base >::size().

Referenced by SE3< Precision >::adjoint().

Vector< 6, Precision > trinvadjoint ( const Vector< S, Precision, Accessor > &  vect  )  const

Transfer covectors between frames (using the transpose of the inverse of the adjoint) so that trinvadjoint(vect1) * adjoint(vect2) = vect1 * vect2.

References SE3< Precision >::get_rotation(), SE3< Precision >::get_translation(), and Vector< Size, Precision, Base >::size().

Referenced by SE3< Precision >::trinvadjoint().

Matrix< 6, 6, Precision > adjoint ( const Matrix< R, C, Precision, Accessor > &  M  )  const

This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.

References SE3< Precision >::adjoint(), Matrix< Rows, Cols, Precision, Layout >::num_cols(), Matrix< Rows, Cols, Precision, Layout >::num_rows(), and Matrix< Rows, Cols, Precision, Layout >::T().

Matrix< 6, 6, Precision > trinvadjoint ( const Matrix< R, C, Precision, Accessor > &  M  )  const

This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.

References Matrix< Rows, Cols, Precision, Layout >::num_cols(), Matrix< Rows, Cols, Precision, Layout >::num_rows(), Matrix< Rows, Cols, Precision, Layout >::T(), and SE3< Precision >::trinvadjoint().


Friends And Related Function Documentation

std::ostream & operator<< ( std::ostream &  os,
const SE3< Precision > &  rhs 
) [related]

Write an SE3 to a stream.

Vector< 4, typename Internal::MultiplyType< P, PV >::type > operator* ( const SE3< P > &  lhs,
const Vector< S, PV, A > &  rhs 
) [related]

Right-multiply by a Vector.

Vector< 3, typename Internal::MultiplyType< P, PV >::type > operator* ( const SE3< P > &  lhs,
const Vector< 3, PV, A > &  rhs 
) [related]

Vector< 4, typename Internal::MultiplyType< P, PV >::type > operator* ( const Vector< S, PV, A > &  lhs,
const SE3< P > &  rhs 
) [related]

Left-multiply by a Vector.

Matrix< 4, Cols, typename Internal::MultiplyType< P, PM >::type > operator* ( const SE3< P > &  lhs,
const Matrix< R, Cols, PM, A > &  rhs 
) [related]

Right-multiply by a Matrix.

Matrix< Rows, 4, typename Internal::MultiplyType< PM, P >::type > operator* ( const Matrix< Rows, C, PM, A > &  lhs,
const SE3< P > &  rhs 
) [related]

Left-multiply by a Matrix.


Generated on Tue Oct 27 16:09:25 2009 for TooN by  doxygen 1.5.9