Skip to content

Class inertialsim::geometry::RigidTransformBase

template <typename Derived>

ClassList > inertialsim > geometry > RigidTransformBase

Base class for 3-dimensional rigid body transform types. More...

  • #include <rigid_transform_base.h>

Inherits the following classes: inertialsim::geometry::MatrixLieGroup

Public Types

Type Name
typedef MatrixLieGroup< Derived, 4, 6 > Base

Public Types inherited from inertialsim::geometry::MatrixLieGroup

See inertialsim::geometry::MatrixLieGroup

Type Name
typedef Eigen::Matrix< Scalar, AlgebraDimension, Eigen::Dynamic > AlgebraArray
Array of algebra elements.
typedef Eigen::Matrix< Scalar, AlgebraDimension, 1 > AlgebraElement
Algebra element type (vector).
typedef std::vector< GroupElement > GroupArray
Array of group elements.
typedef Eigen::Matrix< Scalar, GroupDimension, GroupDimension > GroupElement
Group element type (square matrix).
typedef Eigen::Matrix< Scalar, AlgebraDimension, AlgebraDimension > JacobianMatrix
Jacobian matrix (algebra to algebra).
typedef std::vector< JacobianMatrix > JacobianMatrixArray
Array of Jacobian matrices.

Public Functions

Type Name
TransformMatrixArray AsHomogeneousMatrix () const
Return homogeneous transform matrices.
const Rotation & AsRotation () const
Return rotation component.
std::pair< Rotation, Translation > AsRotationTranslation () const
Return rotation and translation components.
const Translation & AsTranslation () const
Return translation component.
std::tuple< Vector3D, Vector3D > Error (const RigidTransformBase< OtherDerived > & reference) const
Calculate error compared to a reference transform.
int num_transforms () const
Number of transforms stored.

Public Functions inherited from inertialsim::geometry::MatrixLieGroup

See inertialsim::geometry::MatrixLieGroup

Type Name
Vector3D Apply (const Vector3D & vectors) const
Apply the group action to an array of vectors.
Derived Interpolate (const Timestamps & interp_time, Interpolator method=Interpolator::LINEAR) const
Interpolate at given times.
Derived Inverse () const
Invert an instance.
Derived Slice (int start, int end) const
Get a slice of elements.
AlgebraArray TimeDerivative (int order=1, int accuracy=4, const std::string & side="right") const
Compute time derivative using finite differences.
int num_elements () const
Number of elements stored in the instance.
Derived operator* (const Derived & rhs) const
Compose elements of the group.
Derived operator[] (int index) const
Get a single element by index.
const std::optional< Timestamps > & time () const
Time array corresponding to each element.
virtual ~MatrixLieGroup () = default

Public Static Functions

Type Name
Derived FromHomogeneousMatrix (const TransformMatrixArray & matrices, const std::optional< Timestamps > & time=std::nullopt, bool orthonormalize=false)
Construct a RigidTransform from homogeneous transform matrices.
Derived FromRotationTranslation (const Rotation & rotation, const Translation & translation, const std::optional< Timestamps > & time=std::nullopt)
Construct a RigidTransform from rotation and translation.
Derived FromRotationTranslation (const RotationMatrixArray & matrix, const Vector3D & xyz, const std::optional< Timestamps > & time=std::nullopt, bool orthonormalize=false)
Construct from rotation matrices and translation vectors.

Public Static Functions inherited from inertialsim::geometry::MatrixLieGroup

See inertialsim::geometry::MatrixLieGroup

Type Name
Derived Compose (const std::vector< Derived > & instances)
Compose a sequence of instances (first to last).
Derived FromIdentity (int num_elements=1)
Create identity elements.
Derived FromRandom (int num_elements=1, std::optional< Eigen::numext::uint64_t > seed=std::nullopt)
Create random elements.

Protected Functions

Type Name
RigidTransformBase ()
Default constructor.
RigidTransformBase (const Rotation & rotation, const Translation & translation, const std::optional< Timestamps > & time=std::nullopt)
Construct from rotation and translation.

Protected Functions inherited from inertialsim::geometry::MatrixLieGroup

See inertialsim::geometry::MatrixLieGroup

Type Name
AlgebraArray AsAlgebra () const
Get the algebra elements.
GroupArray AsGroup () const
Get the group elements.
MatrixLieGroup (const std::optional< Timestamps > & time=std::nullopt)
Constructor.
int num_times () const

Protected Static Functions inherited from inertialsim::geometry::MatrixLieGroup

See inertialsim::geometry::MatrixLieGroup

Type Name
GroupElement Exp (const AlgebraElement & vector)
Exponential map from algebra to group.
Derived FromAlgebra (const AlgebraArray & elements, const std::optional< Timestamps > & time)
Create instance from algebra elements.
Derived FromGroup (const GroupArray & elements, const std::optional< Timestamps > & time)
Create instance from group elements.
JacobianMatrixArray Jacobian (const AlgebraArray & algebra, const std::string & side="left", bool inverse=false)
Calculate the Jacobian of the exponential map.
AlgebraElement Log (const GroupElement & element)
Logarithm map from group to algebra.

Detailed Description

Template parameters:

Public Types Documentation

typedef Base

using inertialsim::geometry::RigidTransformBase< Derived >::Base =  MatrixLieGroup<Derived, 4, 6>;

Public Functions Documentation

function AsHomogeneousMatrix

Return homogeneous transform matrices.

inline TransformMatrixArray inertialsim::geometry::RigidTransformBase::AsHomogeneousMatrix () const

Returns:

Vector of 4x4 matrices.


function AsRotation

Return rotation component.

inline const  Rotation & inertialsim::geometry::RigidTransformBase::AsRotation () const

Returns:

Rotation instance.


function AsRotationTranslation

Return rotation and translation components.

inline std::pair< Rotation , Translation > inertialsim::geometry::RigidTransformBase::AsRotationTranslation () const

Returns:

Pair containing:


function AsTranslation

Return translation component.

inline const  Translation & inertialsim::geometry::RigidTransformBase::AsTranslation () const

Returns:

Translation instance.


function Error

Calculate error compared to a reference transform.

template<typename  OtherDerived>
inline std::tuple< Vector3D , Vector3D > inertialsim::geometry::RigidTransformBase::Error (
    const  RigidTransformBase < OtherDerived > & reference
) const

Parameters:

  • reference Reference transform.

Returns:

Tuple containing:


function num_transforms

Number of transforms stored.

inline int inertialsim::geometry::RigidTransformBase::num_transforms () const


Public Static Functions Documentation

function FromHomogeneousMatrix

Construct a RigidTransform from homogeneous transform matrices.

static inline Derived inertialsim::geometry::RigidTransformBase::FromHomogeneousMatrix (
    const  TransformMatrixArray & matrices,
    const std::optional< Timestamps > & time=std::nullopt,
    bool orthonormalize=false
) 

The input matrices must have 4x4 block structure [[R, t], [0, 1]] where R is a valid rotation matrix and t is a translation vector.

See Rotation::FromMatrix() for additional details regarding the rotation matrix block.

Parameters:

  • matrices Vector of 4x4 homogeneous transform matrices.
  • time Optional time array of unique, strictly increasing times corresponding to each matrix input.
  • orthonormalize If true, enforce orthonormality of the rotation component of the input.

Returns:

Derived instance.


function FromRotationTranslation [1/2]

Construct a RigidTransform from rotation and translation.

static inline Derived inertialsim::geometry::RigidTransformBase::FromRotationTranslation (
    const  Rotation & rotation,
    const  Translation & translation,
    const std::optional< Timestamps > & time=std::nullopt
) 

The inputs must be compatible (dimension, time, etc.) or a ValueError is raised.

Parameters:

  • rotation Rotation instance.
  • translation Translation instance.
  • time Optional time array (ignored if rotation has time).

Returns:

Derived instance.


function FromRotationTranslation [2/2]

Construct from rotation matrices and translation vectors.

static inline Derived inertialsim::geometry::RigidTransformBase::FromRotationTranslation (
    const  RotationMatrixArray & matrix,
    const  Vector3D & xyz,
    const std::optional< Timestamps > & time=std::nullopt,
    bool orthonormalize=false
) 

Parameters:

  • rotation_matrices Vector of 3x3 rotation matrices.
  • translation_xyz Translation coordinates (3xN).
  • time Optional time array.
  • orthonormalize If true, enforce orthonormality.

Returns:

Derived instance.


Protected Functions Documentation

function RigidTransformBase [1/2]

Default constructor.

inline inertialsim::geometry::RigidTransformBase::RigidTransformBase () 


function RigidTransformBase [2/2]

Construct from rotation and translation.

inline inertialsim::geometry::RigidTransformBase::RigidTransformBase (
    const  Rotation & rotation,
    const  Translation & translation,
    const std::optional< Timestamps > & time=std::nullopt
) 

Parameters:



The documentation for this class was generated from the following file cpp/include/inertialsim/geometry/rigid_transform_base.h