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.
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:
rotationBase rotation component.translationBase translation component.timeOptional 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:
rotationCoordinate rotation component.translationCoordinate translation component.timeOptional 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:
matricesVector of 4x4 homogeneous transform matrices.timeOptional time array.orthonormalizeIf 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:
vectorsVectors to transform (3xN matrix).
Returns:
Transformed vectors.
function AsGroupImpl¶
Return as group elements (for CRTP interface).
Returns:
Vector of 4x4 matrices.
The documentation for this class was generated from the following file cpp/include/inertialsim/geometry/coordinate_transform.h