Represent a three-dimensional Euclidean transformation (a rotation and a translation).
More...
|
| SE3 () |
| Default constructor. Initialises the the rotation to zero (the identity) and the translation to zero.
|
|
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 () |
| Returns the rotation part of the transformation as a SO3.
|
|
const SO3< Precision > & | get_rotation () const |
|
Vector< 3, Precision > & | get_translation () |
| Returns the translation part of the transformation as a Vector.
|
|
const Vector< 3, Precision > & | get_translation () const |
|
Vector< 6, Precision > | ln () const |
|
SE3 | inverse () const |
|
template<typename P > |
SE3 & | operator*= (const SE3< P > &rhs) |
| Right-multiply by another SE3 (concatenate the two transformations) More...
|
|
template<typename P > |
SE3< typename Internal::MultiplyType< Precision, P >::type > | operator* (const SE3< P > &rhs) const |
| Right-multiply by another SE3 (concatenate the two transformations) More...
|
|
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 |
| Transfer a matrix in the Lie Algebra from one co-ordinate frame to another. More...
|
|
template<int S, typename P2 , typename Accessor > |
Vector< 6, Precision > | trinvadjoint (const Vector< S, P2, Accessor > &vect) const |
| Transfer covectors between frames (using the transpose of the inverse of the adjoint) so that trinvadjoint(vect1) * adjoint(vect2) = vect1 * vect2.
|
|
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) |
|
|
template<int S, typename P , typename A > |
static SE3 | exp (const Vector< S, P, A > &vect) |
| Exponentiate a Vector in the Lie Algebra to generate a new SE3. More...
|
|
static Vector< 6, Precision > | ln (const SE3 &se3) |
| Take the logarithm of the matrix, generating the corresponding vector in the Lie Algebra. More...
|
|
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) |
| Returns the i-th generator times pos.
|
|
|
(Note that these are not member functions.)
|
template<typename Precision > |
std::ostream & | operator<< (std::ostream &os, const SE3< Precision > &rhs) |
| Write an SE3 to a stream. More...
|
|
template<typename Precision > |
std::istream & | operator>> (std::istream &is, SE3< Precision > &rhs) |
| Reads an SE3 from a stream. More...
|
|
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) |
| Right-multiply by a Vector. More...
|
|
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) |
| Right-multiply by a Vector. More...
|
|
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) |
| Left-multiply by a Vector. More...
|
|
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) |
| Right-multiply by a Matrix. More...
|
|
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) |
| Left-multiply by a Matrix. More...
|
|
template<typename Precision = DefaultPrecision>
class TooN::SE3< Precision >
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 \(\underline{x}\) is transformed to a new location \(\underline{x}'\) by
\[\begin{aligned}\underline{x}' &= E\times\underline{x}\\ \begin{bmatrix}x'\\y'\\z'\end{bmatrix} &= \begin{pmatrix}r_{11} & r_{12} & r_{13} & t_1\\r_{21} & r_{22} & r_{23} & t_2\\r_{31} & r_{32} & r_{33} & t_3\end{pmatrix}\begin{bmatrix}x\\y\\z\\1\end{bmatrix}\end{aligned}\]
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
template<typename Precision >
template<int S, typename P2 , typename Accessor >
Transfer a matrix in the Lie Algebra from one co-ordinate frame to another.
This is the operation such that for a matrix \( B \), \( e^{\text{Adj}(v)} = Be^{v}B^{-1} \)
- Parameters
-
template<typename Precision >
template<int R, int C, typename P2 , typename Accessor >
Matrix< 6, 6, Precision > TooN::SE3< Precision >::adjoint |
( |
const Matrix< R, C, P2, Accessor > & |
M | ) |
const |
|
inline |
This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.
template<typename Precision >
template<int R, int C, typename P2 , typename Accessor >
Matrix< 6, 6, Precision > TooN::SE3< Precision >::trinvadjoint |
( |
const Matrix< R, C, P2, Accessor > & |
M | ) |
const |
|
inline |
This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.