SLAMflex SE  0.1.0
SLAMflex provides detection and tracking of dominant planes for smartphone devices. This plane can then be used to show AR content relative to the plane orientation. The detection of plane is performed in the field of view of the smartphone camera. In subsequent frames it is tracked. The interface returns the plane position and orientation.
Public Member Functions | Static Public Member Functions | Private Attributes | Related Functions | List of all members
TooN::SE2< Precision > Class Template Reference

#include <se2.h>

Public Member Functions

 SE2 ()
 Default constructor. Initialises the the rotation to zero (the identity) and the translation to zero. More...
 
template<class A >
 SE2 (const SO2< Precision > &R, const Vector< 2, Precision, A > &T)
 
template<int S, class P , class A >
 SE2 (const Vector< S, P, A > &v)
 
SO2< Precision > & get_rotation ()
 Returns the rotation part of the transformation as a SO2. More...
 
const SO2< Precision > & get_rotation () const
 
Vector< 2, Precision > & get_translation ()
 Returns the translation part of the transformation as a Vector. More...
 
const Vector< 2, Precision > & get_translation () const
 
Vector< 3, Precision > ln () const
 
SE2 inverse () const
 compute the inverse of the transformation More...
 
template<typename P >
SE2< typename Internal::MultiplyType< Precision, P >::type > operator* (const SE2< P > &rhs) const
 
SE2operator*= (const SE2 &rhs)
 
template<typename Accessor >
Vector< 3, Precision > adjoint (const Vector< 3, Precision, Accessor > &vect) const
 
template<typename Accessor >
Matrix< 3, 3, Precision > adjoint (const Matrix< 3, 3, Precision, Accessor > &M) const
 
template<int S, typename PV , typename Accessor >
SE2< Precision > exp (const Vector< S, PV, Accessor > &mu)
 

Static Public Member Functions

template<int S, typename P , typename A >
static SE2 exp (const Vector< S, P, A > &vect)
 
static Vector< 3, Precision > ln (const SE2 &se2)
 
static Matrix< 3, 3, Precision > generator (int i)
 

Private Attributes

SO2< Precision > my_rotation
 
Vector< 2, Precision > my_translation
 

Related Functions

(Note that these are not member functions.)

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

Detailed Description

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

Represent a two-dimensional Euclidean transformation (a rotation and a translation). This can be represented by a $2\times 3$ 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'\end{bmatrix} &= \begin{pmatrix}r_{11} & r_{12} & t_1\\r_{21} & r_{22} & t_2\end{pmatrix}\begin{bmatrix}x\\y\\1\end{bmatrix}\end{aligned}\]

This transformation is a member of the Special Euclidean Lie group SE2. These can be parameterised with three numbers (in the space of the Lie Algebra). In this class, the first two parameters are a translation vector while the third is the amount of rotation in the plane as for SO2.

Definition at line 52 of file se2.h.

Constructor & Destructor Documentation

template<typename Precision = double>
TooN::SE2< Precision >::SE2 ( )
inline

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

Definition at line 55 of file se2.h.

template<typename Precision = double>
template<class A >
TooN::SE2< Precision >::SE2 ( const SO2< Precision > &  R,
const Vector< 2, Precision, A > &  T 
)
inline

Definition at line 56 of file se2.h.

template<typename Precision = double>
template<int S, class P , class A >
TooN::SE2< Precision >::SE2 ( const Vector< S, P, A > &  v)
inline

Definition at line 57 of file se2.h.

Member Function Documentation

template<typename Precision = double>
template<typename Accessor >
Vector<3, Precision> TooN::SE2< Precision >::adjoint ( const Vector< 3, Precision, Accessor > &  vect) const
inline

transfers a vector in the Lie algebra, from one coord frame to another so that exp(adjoint(vect)) = (*this) * exp(vect) * (this->inverse())

Definition at line 119 of file se2.h.

template<typename Precision = double>
template<typename Accessor >
Matrix<3,3,Precision> TooN::SE2< Precision >::adjoint ( const Matrix< 3, 3, Precision, Accessor > &  M) const
inline

Definition at line 129 of file se2.h.

template<typename Precision = double>
template<int S, typename P , typename A >
static SE2 TooN::SE2< Precision >::exp ( const Vector< S, P, A > &  vect)
inlinestatic

Exponentiate a Vector in the Lie Algebra to generate a new SE2. See the Detailed Description for details of this vector.

Parameters
vectThe Vector to exponentiate
template<typename Precision = double>
template<int S, typename PV , typename Accessor >
SE2<Precision> TooN::SE2< Precision >::exp ( const Vector< S, PV, Accessor > &  mu)
inline

Definition at line 313 of file se2.h.

template<typename Precision = double>
static Matrix<3,3, Precision> TooN::SE2< Precision >::generator ( int  i)
inlinestatic

returns the generators for the Lie group. These are a set of matrices that form a basis for the vector space of the Lie algebra.

  • 0 is translation in x
  • 1 is translation in y
  • 2 is rotation in the plane

Definition at line 105 of file se2.h.

template<typename Precision = double>
SO2<Precision>& TooN::SE2< Precision >::get_rotation ( )
inline

Returns the rotation part of the transformation as a SO2.

Definition at line 60 of file se2.h.

template<typename Precision = double>
const SO2<Precision>& TooN::SE2< Precision >::get_rotation ( ) const
inline

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

Definition at line 62 of file se2.h.

template<typename Precision = double>
Vector<2, Precision>& TooN::SE2< Precision >::get_translation ( )
inline

Returns the translation part of the transformation as a Vector.

Definition at line 64 of file se2.h.

template<typename Precision = double>
const Vector<2, Precision>& TooN::SE2< Precision >::get_translation ( ) const
inline

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

Definition at line 66 of file se2.h.

template<typename Precision = double>
SE2 TooN::SE2< Precision >::inverse ( ) const
inline

compute the inverse of the transformation

Definition at line 81 of file se2.h.

template<typename Precision >
Vector< 3, Precision > TooN::SE2< Precision >::ln ( const SE2< Precision > &  se2)
inlinestatic

Take the logarithm of the matrix, generating the corresponding vector in the Lie Algebra. See the Detailed Description for details of this vector.

Definition at line 348 of file se2.h.

template<typename Precision = double>
Vector<3, Precision> TooN::SE2< Precision >::ln ( ) const
inline

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

Definition at line 78 of file se2.h.

template<typename Precision = double>
template<typename P >
SE2<typename Internal::MultiplyType<Precision,P>::type> TooN::SE2< Precision >::operator* ( const SE2< P > &  rhs) const
inline

Right-multiply by another SE2 (concatenate the two transformations)

Parameters
rhsThe multipier

Definition at line 89 of file se2.h.

template<typename Precision = double>
SE2& TooN::SE2< Precision >::operator*= ( const SE2< Precision > &  rhs)
inline

Self right-multiply by another SE2 (concatenate the two transformations)

Parameters
rhsThe multipier

Definition at line 95 of file se2.h.

Friends And Related Function Documentation

template<int S, typename P , typename PV , typename A >
Vector< 3, typename Internal::MultiplyType< P, PV >::type > operator* ( const SE2< P > &  lhs,
const Vector< S, PV, A > &  rhs 
)
related

Right-multiply with a Vector<3>

Definition at line 198 of file se2.h.

template<typename P , typename PV , typename A >
Vector< 2, typename Internal::MultiplyType< P, PV >::type > operator* ( const SE2< P > &  lhs,
const Vector< 2, PV, A > &  rhs 
)
related

Right-multiply with a Vector<2> (special case, extended to be a homogeneous vector)

Definition at line 205 of file se2.h.

template<int S, typename P , typename PV , typename A >
Vector< 3, typename Internal::MultiplyType< PV, P >::type > operator* ( const Vector< S, PV, A > &  lhs,
const SE2< P > &  rhs 
)
related

Left-multiply with a Vector<3>

Definition at line 239 of file se2.h.

template<int R, int Cols, typename PM , typename A , typename P >
Matrix< 3, Cols, typename Internal::MultiplyType< P, PM >::type > operator* ( const SE2< P > &  lhs,
const Matrix< R, Cols, PM, A > &  rhs 
)
related

Right-multiply with a Matrix<3>

Definition at line 273 of file se2.h.

template<int Rows, int C, typename PM , typename A , typename P >
Matrix< Rows, 3, typename Internal::MultiplyType< PM, P >::type > operator* ( const Matrix< Rows, C, PM, A > &  lhs,
const SE2< P > &  rhs 
)
related

Left-multiply with a Matrix<3>

Definition at line 307 of file se2.h.

template<class Precision >
std::ostream & operator<< ( std::ostream &  os,
const SE2< Precision > &  rhs 
)
related

Write an SE2 to a stream

Definition at line 146 of file se2.h.

template<class Precision >
std::istream & operator>> ( std::istream &  is,
SE2< Precision > &  rhs 
)
related

Read an SE2 from a stream

Definition at line 160 of file se2.h.

Member Data Documentation

template<typename Precision = double>
SO2<Precision> TooN::SE2< Precision >::my_rotation
private

Definition at line 139 of file se2.h.

template<typename Precision = double>
Vector<2, Precision> TooN::SE2< Precision >::my_translation
private

Definition at line 140 of file se2.h.


The documentation for this class was generated from the following file: