TooN 2.1
|
Represent a three-dimensional Euclidean transformation (a rotation and a translation). More...
#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 |
template<typename P > | |
SE3 & | operator*= (const SE3< P > &rhs) |
template<typename P > | |
SE3< typename Internal::MultiplyType < Precision, P >::type > | operator* (const SE3< P > &rhs) const |
SE3 & | left_multiply_by (const SE3 &left) |
template<int S, typename P2 , typename Accessor > | |
Vector< 6, Precision > | adjoint (const Vector< S, P2, Accessor > &vect) const |
template<int S, typename P2 , typename Accessor > | |
Vector< 6, Precision > | trinvadjoint (const Vector< S, P2, Accessor > &vect) const |
template<int R, int C, typename P2 , typename Accessor > | |
Matrix< 6, 6, Precision > | adjoint (const Matrix< R, C, P2, Accessor > &M) const |
template<int R, int C, typename P2 , typename Accessor > | |
Matrix< 6, 6, Precision > | trinvadjoint (const Matrix< R, C, P2, 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) |
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 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
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.
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().
Right-multiply by another SE3 (concatenate the two transformations)
rhs | The multipier |
SE3<typename Internal::MultiplyType<Precision, P>::type> operator* | ( | const SE3< P > & | rhs | ) | const |
Right-multiply by another SE3 (concatenate the two transformations)
rhs | The multipier |
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 Vector< Size, Precision, Base >::size().
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(), 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(), and Matrix< Rows, Cols, Precision, Layout >::T().
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.