MROB
Public Member Functions | Protected Attributes | List of all members
mrob::SE3 Class Reference
Inheritance diagram for mrob::SE3:
Inheritance graph
[legend]

Public Member Functions

 SE3 (const Mat4 &T=Mat4::Identity())
 
 SE3 (const Mat61 &xi)
 
 SE3 (const SE3 &T)
 
 SE3 (const SO3 &R, const Mat31 &t)
 
 SE3 (const Mat3 &R, const Mat31 &t)
 
template<typename OtherDerived >
 SE3 (const Eigen::MatrixBase< OtherDerived > &rhs)
 
SE3operator= (const SE3 &rhs)
 
SE3 operator* (const SE3 &rhs) const
 
SE3 mul (const SE3 &rhs) const
 
void update_lhs (const Mat61 &dxi)
 
void update_rhs (const Mat61 &dxi)
 
void exp (const Mat4 &xi_hat)
 
Mat4 ln (void) const
 
Mat61 ln_vee () const
 
Mat31 transform (const Mat31 &p) const
 
MatX transform_array (const MatX &P) const
 
SE3 inv (void) const
 
Mat6 adj () const
 
const Eigen::Ref< const Mat4 > T () const
 
Mat4 & ref2T ()
 
Mat3 R () const
 
Mat31 t () const
 
double distance (const SE3 &rhs=SE3()) const
 
double distance_rotation (const SE3 &rhs=SE3()) const
 
double distance_trans (const SE3 &rhs=SE3()) const
 
void regenerate ()
 
Mat41 transform_plane (const Mat41 &pi)
 
void print (void) const
 
void print_lie (void) const
 
std::string toString () const
 Generates string representation of the object. More...
 

Protected Attributes

Mat4 T_
 

Constructor & Destructor Documentation

◆ SE3() [1/6]

SE3::SE3 ( const Mat4 &  T = Mat4::Identity())

Constructor, requires the Transformation matrix 4x4

◆ SE3() [2/6]

SE3::SE3 ( const Mat61 &  xi)

Constructor, requires the Lie algebra xi^ se3 representing the rigid body transformation around the identity, by default generates T = exp(0^) = I

◆ SE3() [3/6]

SE3::SE3 ( const SE3 T)

Constructor, requires the Transformation in Se3

◆ SE3() [4/6]

SE3::SE3 ( const SO3 R,
const Mat31 &  t 
)

Constructor, requires the Rotation in SO3 and translation

◆ SE3() [5/6]

SE3::SE3 ( const Mat3 &  R,
const Mat31 &  t 
)

Constructor, requires the Rotation as a 3x3 matrix and translation

◆ SE3() [6/6]

template<typename OtherDerived >
SE3::SE3 ( const Eigen::MatrixBase< OtherDerived > &  rhs)

This constructor allows to construct from Eigen expressions Eigen suggestion: TopicCustomizingEigen.html

Member Function Documentation

◆ adj()

Mat6 SE3::adj ( ) const

Adjoint: T Exp(x) = Exp ( Adj_T x) T Adj_T = [R , 0] [t^R, R]

◆ distance()

double SE3::distance ( const SE3 rhs = SE3()) const

Provide the distance as a norm on the tangent space of the ln(T * T_rhs^{-1})

◆ distance_rotation()

double SE3::distance_rotation ( const SE3 rhs = SE3()) const

Provide the distance on the rotation in the tangent space of the ln(R * R_rhs^{-1})

◆ distance_trans()

double SE3::distance_trans ( const SE3 rhs = SE3()) const

Provide the distance of the translation part ||t - t'||

◆ exp()

void SE3::exp ( const Mat4 &  xi_hat)

Exponential mapping of a skew symetric matrix in se3. exp(xi^) = [exp(w^) Vv], where exp(w^) is the so3_exp and V = I + c2*(w^) + c3*(w^)^2 , where o = norm(w), c2 = (1 - cos(o))/o^2, c3 = (o- sin(o) / o^3 t= Vv Exponential mapping of a skew symetric matrix in so3. The Rodrigues formula provides an exact solution to the Taylor expansion of exp(A) = I + A + c2*A^2 + ... exp(A) = I + c1*w^ + c2*(w^)^2, where o = norm(w), c1 =sin(o)/o and c2 = (1 - cos(o))/o^2

◆ inv()

SE3 SE3::inv ( void  ) const

Inverse: T^-1 = [R', -R't] [0 1]

◆ ln()

Mat4 SE3::ln ( void  ) const

Logarithm map, first we calculate ln(R) and then V^-1 = I - 1/2 w^ + 1/o^2(1 - A / 2B) (w^)^2 v = V^-1 t

◆ ln_vee()

Mat61 SE3::ln_vee ( ) const

Returns the vector xi R^6 which corresponds to the Lie algebra se3

◆ mul()

SE3 SE3::mul ( const SE3 rhs) const

Multiplication function, same as above, mainly for python

◆ operator*()

SE3 SE3::operator* ( const SE3 rhs) const

This method allows you to Multiply SE3 expressions

◆ operator=()

SE3 & SE3::operator= ( const SE3 rhs)

This method allows you to assign Eigen expressions to SE3

◆ R()

Mat3 SE3::R ( ) const

R method returns a matrix 3x3 of the SO3 rotation corresponding to the subblock matrix

◆ ref2T()

Mat4 & SE3::ref2T ( )

ref2T returns a non-const reference to the matrix T to modify its content directly

◆ regenerate()

void SE3::regenerate ( )

Regenerate, does the following operation: T = Exp ( Ln(T) )

◆ T()

const Eigen::Ref< const Mat4 > SE3::T ( ) const

T method returns a matrix 4x4 of the SE3 transformation. Ref<> is more convinient than the matrix for the factor/nodes base class definitions and python bindings

◆ t()

Mat31 SE3::t ( ) const

t method returns translation

◆ toString()

std::string SE3::toString ( ) const

Generates string representation of the object.

Returns
std::string object to print

◆ transform()

Mat31 SE3::transform ( const Mat31 &  p) const

Transforms a point p = (x,y,z)' such as res = T*p. This function saves to transform to homogeneous coordinates.

◆ transform_array()

MatX SE3::transform_array ( const MatX &  P) const

Transforms an array of points P = {p_n} = (x,y,z)'_n such as res = T*p_n. The array is of the form Nx3 (usual convention from arrays) This function saves to transform to homogeneous coordinates.

◆ update_lhs()

void SE3::update_lhs ( const Mat61 &  dxi)

This is our default way to update transformations, from the Left hand side of T Updates the current transformation with the incremental dxi se3 T'=exp(dxi^) * T

◆ update_rhs()

void SE3::update_rhs ( const Mat61 &  dxi)

Updates the current transformation with the incremental dxi se3 T'= T * exp(dxi^)


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