Skip to content

Class inertialsim::geometry::CoordinateTransform

ClassList > inertialsim > geometry > CoordinateTransform

3-dimensional coordinate frame transforms (passive convention). More...

  • #include <coordinate_transform.h>

Inherits the following classes: inertialsim::geometry::RigidTransformBase

Public Types inherited from inertialsim::geometry::RigidTransformBase

See inertialsim::geometry::RigidTransformBase

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
Matrix of algebra elements (rows = axes, cols = samples).
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.
CoordinateTransform ()
Default constructor.
CoordinateTransform (const Rotation & rotation, const Translation & translation, const std::optional< Timestamps > & time=std::nullopt)
Construct from base Rotation andTranslation (for CRTP compatibility).
CoordinateTransform (const CoordinateRotation & rotation, const CoordinateTranslation & translation, const std::optional< Timestamps > & time=std::nullopt)
Construct from rotation and translation.

Public Functions inherited from inertialsim::geometry::RigidTransformBase

See inertialsim::geometry::RigidTransformBase

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
Composition operator on the matrix group. Supports broadcasting: if either lhs or rhs has size 1, it will be broadcast against all elements of the other operand. Derived classes may implement more efficient methods.
Derived operator[] (int index) const
Get a single element by index.
const std::optional< Timestamps > & time () const
Time array (or nullopt if not set).
virtual ~MatrixLieGroup () = default

Public Static Functions

Type Name
CoordinateTransform FromHomogeneousMatrix (const TransformMatrixArray & matrices, const std::optional< Timestamps > & time=std::nullopt, bool orthonormalize=false)
Construct from homogeneous transform matrices.

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

See inertialsim::geometry::RigidTransformBase

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
Matrix ApplyImpl (const Matrix & vectors) const
Apply coordinate transform to vectors.
GroupArray AsGroupImpl () const
Return as group elements (for CRTP interface).

Protected Functions inherited from inertialsim::geometry::RigidTransformBase

See inertialsim::geometry::RigidTransformBase

Type Name
Vector3D ApplyImpl (const Vector3D & vectors) const
Apply transform to vectors.
AlgebraArray AsAlgebraImpl () const
Return as algebra elements (for CRTP interface).
GroupArray AsGroupImpl () const
Return as group elements (for CRTP interface).
Derived InverseImpl () const
Return the inverse transform.
RigidTransformBase ()
Default constructor.
RigidTransformBase (const Rotation & rotation, const Translation & translation, const std::optional< Timestamps > & time=std::nullopt)
Construct from rotation and translation.
int num_elements_impl () const
Number of transforms stored.

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.
Derived CubicHermiteInterpolate (const Timestamps & time) const
Cubic Hermite spline interpolation.
Derived LinearInterpolate (const Timestamps & time) const
Linear interpolation implementation.
MatrixLieGroup (const std::optional< Timestamps > & time=std::nullopt)
Constructor.
Derived & derived ()
CRTP helper to access derived class.
const Derived & derived () const
int num_times () const

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

See inertialsim::geometry::RigidTransformBase

Type Name
GroupElement ExpImpl (const AlgebraElement & vector)
Exponential map: se(3) to SE(3).
Derived FromAlgebraImpl (const AlgebraArray & algebra, const std::optional< Timestamps > & time)
Construct from algebra elements (for CRTP interface).
Derived FromGroupImpl (const GroupArray & elements, const std::optional< Timestamps > & time)
Construct from group elements (for CRTP interface).
Derived FromIdentityImpl (int num_elements)
Construct identity transforms.
Derived FromRandomImpl (int num_transforms, std::optional< uint64_t > seed=std::nullopt)
Construct uniformly distributed random transforms.
Eigen::Matrix3d JacobianAuxiliary (const Eigen::Vector3d & rv, const Eigen::Vector3d & t)
Auxiliary matrix Q for SE(3) Jacobians.
JacobianMatrixArray JacobianImpl (const AlgebraArray & algebra, const std::string & side="left", bool inverse=false)
Left or Right Jacobian of SE(3).
AlgebraElement LogImpl (const GroupElement & element)
Logarithm map: SE(3) to se(3).

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 given algebra elements.
AlgebraElement Log (const GroupElement & element)
Logarithm map from group to algebra.

Detailed Description

CoordinateTransform uses the passive convention where transforms act to convert the description of physical vectors between different coordinate systems. The passive convention is commonly used in inertial navigation and aerospace applications.

Warning:

Transform conventions There are a large variety of rotation and transform conventions and they are a common source of errors. Because many of these conventions cannot be automatically validated, users must be aware of them and manage interfaces with other software accordingly. InertialSim conventions are documented in each method.

** **

Transforms stored in this class represent a passive transformation. In the passive convention, transforms act to convert the description of physical vectors between different coordinate systems. This contrasts with the active convention used by the RigidTransform class, where transforms act to rotate and translate an object relative to a fixed coordinate system. In general, the two should not be mixed.

Some references use the terminology alibi (active) and alias (passive). Reference [02], Reference [05], and Reference [11] discuss active vs. passive transforms in greater detail.

See also: RigidTransform for active transforms.

See also: CoordinateRotation for rotation-only coordinate transforms.

Public Functions Documentation

function AsHomogeneousMatrix

Return homogeneous transform matrices.

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

Returns matrices with block structure [[C, -C*t], [0, 1]].

Returns:

Vector of 4x4 matrices.


function CoordinateTransform [⅓]

Default constructor.

inline inertialsim::geometry::CoordinateTransform::CoordinateTransform () 


function CoordinateTransform [⅔]

Construct from base Rotation andTranslation (for CRTP compatibility).

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

Parameters:

  • rotation Base rotation component.
  • translation Base translation component.
  • time Optional time array.

function CoordinateTransform [3/3]

Construct from rotation and translation.

inline inertialsim::geometry::CoordinateTransform::CoordinateTransform (
    const CoordinateRotation & rotation,
    const CoordinateTranslation & translation,
    const std::optional< Timestamps > & time=std::nullopt
) 

Parameters:

  • rotation Coordinate rotation component.
  • translation Coordinate translation component.
  • time Optional time array.

Public Static Functions Documentation

function FromHomogeneousMatrix

Construct from homogeneous transform matrices.

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

The input has block structure [[C, t], [0, 1]] where C is the coordinate rotation matrix and t is -C * translation.

Parameters:

  • matrices Vector of 4x4 homogeneous transform matrices.
  • time Optional time array.
  • orthonormalize If true, enforce orthonormality of rotation.

Returns:

CoordinateTransform instance.


Protected Functions Documentation

function ApplyImpl

Apply coordinate transform to vectors.

inline Matrix inertialsim::geometry::CoordinateTransform::ApplyImpl (
    const Matrix & vectors
) const

Transforms vectors from one coordinate system to another: result = C * (v - t)

Parameters:

  • vectors Vectors to transform (3xN matrix).

Returns:

Transformed vectors.


function AsGroupImpl

Return as group elements (for CRTP interface).

inline GroupArray inertialsim::geometry::CoordinateTransform::AsGroupImpl () const

Returns:

Vector of 4x4 matrices.



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