#include <se3.h>
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 |
SE3 & | operator*= (const SE3 &rhs) |
SE3 | operator* (const SE3 &rhs) const |
SE3 & | left_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) |
This can be represented by a matrix operating on a homogeneous co-ordinate, so that a vector
is transformed to a new location
by
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
SE3 | ( | ) |
Default constructor. Initialises the the rotation to zero (the identity) and the translation to zero.
Referenced by SE3< P >::operator*().
SO3<Precision>& get_rotation | ( | ) |
Returns the rotation part of the transformation as a SO3.
Referenced by SE3< Precision >::adjoint(), SE3< Precision >::operator*(), SE3< P >::operator*(), SE3< P >::operator*=(), and SE3< Precision >::trinvadjoint().
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 | ( | ) |
Returns the translation part of the transformation as a Vector.
Referenced by SE3< Precision >::adjoint(), SE3< Precision >::operator*(), SE3< P >::operator*(), SE3< P >::operator*=(), and SE3< Precision >::trinvadjoint().
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.
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().
static Vector<4,Precision> generator_field | ( | int | i, | |
const Vector< 4, Precision, Base > & | pos | |||
) | [static] |
Returns the i-th generator times pos.
Transfer a matrix in the Lie Algebra from one co-ordinate frame to another.
This is the operation such that for a matrix ,
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().
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().
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().
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().
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] |
Right-multiply by a Vector.
References SE3< Precision >::get_rotation(), and SE3< Precision >::get_translation().
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.