Template Struct SE3Base

Inheritance Relationships

Derived Types

Struct Documentation

template<class Derived>
struct SE3Base

Base class for rigid transformation.

The rigid transform aMb can be seen in two ways:

  • given a point p expressed in frame B by its coordinate vector \( ^bp \), \( ^aM_b \) computes its coordinates in frame A by \( ^ap = {}^aM_b {}^bp \).

  • \( ^aM_b \) displaces a solid S centered at frame A into the solid centered in B. In particular, the origin of A is displaced at the origin of B: \(^aM_b {}^aA = {}^aB \).

The rigid displacement is stored as a rotation matrix and translation vector by: \( ^aM_b x = {}^aR_b x + {}^aAB \) where \(^aAB\) is the vector from origin A to origin B expressed in coordinates A.

\cheatsheet \( {}^aM_c = {}^aM_b {}^bM_c \)

Subclassed by pinocchio::SE3Tpl< Scalar, Options >, pinocchio::SE3Tpl< double, 0 >

Public Functions

PINOCCHIO_SE3_TYPEDEF_TPL(Derived)
inline Derived &derived()
inline const Derived &derived() const
inline ConstAngularRef rotation() const
inline ConstLinearRef translation() const
inline AngularRef rotation()
inline LinearRef translation()
inline void rotation(const AngularType &R)
inline void translation(const LinearType &t)
inline HomogeneousMatrixType toHomogeneousMatrix() const
inline operator HomogeneousMatrixType() const
inline ActionMatrixType toActionMatrix() const

The action matrix \( {}^aX_b \) of \( {}^aM_b \).

With \( {}^aM_b = \left( \begin{array}{cc} R & t \\ 0 & 1 \\ \end{array} \right) \),

\[\begin{split} {}^aX_b = \left( \begin{array}{cc} R & \hat{t} R \\ 0 & R \\ \end{array} \right) \end{split}\]

\cheatsheet \( {}^a\nu_c = {}^aX_b {}^b\nu_c \)

inline operator ActionMatrixType() const
inline ActionMatrixType toActionMatrixInverse() const

The action matrix \( {}^bX_a \) of \( {}^aM_b \).

See also

toActionMatrix()

inline ActionMatrixType toDualActionMatrix() const
inline void disp(std::ostream &os) const
inline SE3GroupAction<Derived>::ReturnType operator*(const Derived &m2) const
template<typename D>
inline SE3GroupAction<D>::ReturnType act(const D &d) const

ay = aXb.act(by)

template<typename D>
inline SE3GroupAction<D>::ReturnType actInv(const D &d) const

by = aXb.actInv(ay)

inline bool operator==(const Derived &other) const
inline bool operator!=(const Derived &other) const
inline bool isApprox(const Derived &other, const Scalar &prec = Eigen::NumTraits<Scalar>::dummy_precision()) const
inline bool isIdentity(const typename traits<Derived>::Scalar &prec = Eigen::NumTraits<typename traits<Derived>::Scalar>::dummy_precision()) const
Returns:

true if *this is approximately equal to the identity placement, within the precision given by prec.

inline bool isNormalized(const Scalar &prec = Eigen::NumTraits<Scalar>::dummy_precision()) const
Returns:

true if the rotational part of *this is a rotation matrix (normalized columns), within the precision given by prec.

inline void normalize()

Normalize *this in such a way the rotation part of *this lies on SO(3).

inline PlainType normalized() const
Returns:

a Normalized version of *this, in such a way the rotation part of the returned transformation lies on SO(3).

Friends

inline friend std::ostream &operator<<(std::ostream &os, const SE3Base<Derived> &X)