Class inertialsim::geometry::CoordinateRotation¶
ClassList > inertialsim > geometry > CoordinateRotation
3-dimensional coordinate frame rotations (passive convention). More...
#include <coordinate_rotation.h>
Inherits the following classes: inertialsim::geometry::RotationBase
Public Types inherited from inertialsim::geometry::RotationBase¶
See inertialsim::geometry::RotationBase
| Type | Name |
|---|---|
| typedef MatrixLieGroup< Derived, 3, 3 > | 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 |
|---|---|
| AxisAngle | AsAxisAngle () const Return axis and angle representation (passive). |
| EulerAngles | AsEuler (const std::string & sequence) const Return Euler angle representation (intrinsic). |
| RotationVector | AsRotationVector () const Return rotation vector representation (passive). |
Public Functions inherited from inertialsim::geometry::RotationBase¶
See inertialsim::geometry::RotationBase
| Type | Name |
|---|---|
| AxisAngle | AsAxisAngle () const Return axis and angle representation. |
| EulerAngles | AsEuler (const std::string & sequence) const Return the Euler angle representation. |
| const RotationMatrixArray & | AsMatrix () const Return the rotation matrix representation. |
| Quaternion | AsQuaternion () const Return the quaternion representation. |
| RotationVector | AsRotationVector () const Return the rotation vector representation. |
| RotationVector | Error (const RotationBase< OtherDerived > & reference) const Calculate error compared to a reference rotation. |
| int | num_rotations () const Number of rotations 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 |
|---|---|
| CoordinateRotation | FromAxisAngle (const Vector3D & axis, const Scalar1D & angle, const std::optional< Timestamps > & time=std::nullopt) Construct from axis and angle (passive). |
| CoordinateRotation | FromEuler (const EulerAngles & euler, const std::string & sequence, const std::optional< Timestamps > & time=std::nullopt) Construct from Euler angles (intrinsic convention). |
| CoordinateRotation | FromRotationVector (const RotationVector & rotation_vectors, const std::optional< Timestamps > & time=std::nullopt) Construct from rotation vectors (passive). |
Public Static Functions inherited from inertialsim::geometry::RotationBase¶
See inertialsim::geometry::RotationBase
| Type | Name |
|---|---|
| RotationMatrixArray | DoubleIntegralFactor (const RotationVector & rotation_vectors) Double integral factor. |
| Derived | FromAxisAngle (const Vector3D & axis, const Scalar1D & angle, const std::optional< Timestamps > & time=std::nullopt) Construct a Rotation from an axis and angle. |
| Derived | FromEuler (const EulerAngles & euler, const std::string & sequence, const std::optional< Timestamps > & time=std::nullopt) Construct a Rotation from a sequence of Euler angles. |
| Derived | FromMatrix (const RotationMatrixArray & matrices, const std::optional< Timestamps > & time=std::nullopt, bool orthonormalize=false) Construct a Rotation from rotation matrices. |
| Derived | FromQuaternion (const Quaternion & quaternions, const std::optional< Timestamps > & time=std::nullopt, bool scalar_last=false) Construct a Rotation from quaternions. |
| Derived | FromRotationVector (const RotationVector & rotation_vectors, const std::optional< Timestamps > & time=std::nullopt) Construct a Rotation from rotation vectors. |
| RotationMatrixArray | IntegralFactor (const RotationVector & rotation_vectors) First integral factor. |
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 inherited from inertialsim::geometry::RotationBase¶
See inertialsim::geometry::RotationBase
| Type | Name |
|---|---|
| RotationBase () Default constructor. |
|
| RotationBase (const RotationMatrixArray & matrices, const std::optional< Timestamps > & time=std::nullopt) Construct from rotation matrices. |
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¶
CoordinateRotation is a subclass of RotationBase that uses the passive convention. Passive rotations act to transform vector components between coordinate systems. The passive convention is the standard for describing orientation in inertial navigation and aerospace applications.
Coordinate rotations are also commonly known as direction cosine matrices (DCM) or coordinate transformation matrices.
Active vs passive rotation convention
In the passive convention (used by this class), rotations act to transform the components of physical vectors to different coordinate systems. This contrasts with the active convention used by the Rotation class, where rotations act to rotate an object relative to a fixed coordinate system.
A passive coordinate rotation matrix is the transpose of the equivalent active rotation matrix: $ C_{i}^{b} = R_{i \rightarrow b}^{T} $
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: Rotation for active rotations.
See also: CoordinateTransform for combined rotation and translation transforms.
Public Functions Documentation¶
function AsAxisAngle¶
Return axis and angle representation (passive).
Returns:
Pair containing:
- Axes (3xN)
- Angles (N)
function AsEuler¶
Return Euler angle representation (intrinsic).
inline EulerAngles inertialsim::geometry::CoordinateRotation::AsEuler (
const std::string & sequence
) const
Parameters:
sequenceRotation sequence (e.g., "XYZ").
Returns:
Euler angles.
function AsRotationVector¶
Return rotation vector representation (passive).
Returns:
Rotation vectors.
Public Static Functions Documentation¶
function FromAxisAngle¶
Construct from axis and angle (passive).
static inline CoordinateRotation inertialsim::geometry::CoordinateRotation::FromAxisAngle (
const Vector3D & axis,
const Scalar1D & angle,
const std::optional< Timestamps > & time=std::nullopt
)
Parameters:
axisUnit axes of rotation (3xN matrix).angleAngles of rotation (N vector).timeOptional time array.
Returns:
CoordinateRotation instance.
function FromEuler¶
Construct from Euler angles (intrinsic convention).
static inline CoordinateRotation inertialsim::geometry::CoordinateRotation::FromEuler (
const EulerAngles & euler,
const std::string & sequence,
const std::optional< Timestamps > & time=std::nullopt
)
Parameters:
eulerEuler angles (3xN matrix).sequenceRotation sequence (e.g., "XYZ").timeOptional time array.
Returns:
CoordinateRotation instance.
function FromRotationVector¶
Construct from rotation vectors (passive).
static inline CoordinateRotation inertialsim::geometry::CoordinateRotation::FromRotationVector (
const RotationVector & rotation_vectors,
const std::optional< Timestamps > & time=std::nullopt
)
Parameters:
rotation_vectorsRotation vectors (3xN matrix).timeOptional time array.
Returns:
CoordinateRotation instance.
The documentation for this class was generated from the following file cpp/include/inertialsim/geometry/coordinate_rotation.h