#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) | |
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 |
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<typename Precision> | |
std::istream & | operator>> (std::istream &is, 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
Default constructor. Initialises the the rotation to zero (the identity) and the translation to zero.
Returns the rotation part of the transformation as a SO3.
Vector<3, Precision>& TooN::SE3< Precision >::get_translation | ( | ) |
Returns the translation part of the transformation as a Vector.
Vector< 6, Precision > TooN::SE3< 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.
static Vector<4,Precision> TooN::SE3< Precision >::generator_field | ( | int | i, | |
const Vector< 4, Precision, Base > & | pos | |||
) | [static] |
Returns the i-th generator times pos.
Vector< 6, Precision > TooN::SE3< 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 ,
M | The Matrix to transfer |
Vector< 6, Precision > TooN::SE3< 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.
std::ostream & operator<< | ( | std::ostream & | os, | |
const SE3< Precision > & | rhs | |||
) | [related] |
Write an SE3 to a stream.
std::istream & operator>> | ( | std::istream & | is, | |
SE3< Precision > & | rhs | |||
) | [related] |
Reads an SE3 from 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.
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.