iDynTree::SpatialMotionVector class

Class providing the coordinates for any motion spatial vector (i.e.

vector form of an element of se(3)).

A motion spatial vector can be used to to describe a twist, twist acceleration or their derivatives.

A generic motion spatial vector can also be used to store the logarithm of an iDynTree::Transform (i.e. an element of SE(3)).

This is just a basic vector, used to implement the adjoint transformations in a general way. The relative adjoint transformation is contained in Transform::apply(SpatialMotion), for consistency with the iDynTree::Position class.

Base classes

class SpatialVector<SpatialMotionVector>

Derived classes

class SpatialAcc
Class representing a spatial acceleration, i.e.
class Twist
Class representing a twist, i.e.

Constructors, destructors, conversion operators

SpatialMotionVector()
constructors
SpatialMotionVector(const LinearMotionVector3& _linearVec3, const AngularMotionVector3& _angularVec3)
SpatialMotionVector(const SpatialMotionVector& other)
SpatialMotionVector(const SpatialVector<SpatialMotionVector>& other)

Public functions

auto operator*(const double scalar) const -> SpatialMotionVector
Multiplication for a scalar.
auto cross(const SpatialMotionVector& other) const -> SpatialMotionVector
Cross product between two 6D motion vectors $ V_1 = \begin{bmatrix} v_1 \\ \omega_1 \end{bmatrix} $ and $ V_2 = \begin{bmatrix} v_2 \\ \omega_2 \end{bmatrix} $ .
auto cross(const SpatialForceVector& other) const -> SpatialForceVector
Cross product between a 6D motion vector $ V = \begin{bmatrix} v \\ \omega \end{bmatrix} $ and a 6D force vector $ F = \begin{bmatrix} f \\ \mu \end{bmatrix} $ .
auto asCrossProductMatrix() const -> Matrix6x6
Cross product matrices.
auto asCrossProductMatrixWrench() const -> Matrix6x6
If this object is $ V = \begin{bmatrix} v \\ \omega \end{bmatrix} $ , return the 6x6 matrix $ V\times $ such that, if F is a SpatialForceVector :
auto exp() const -> Transform
Exp mapping between a generic element of se(3) (iDynTree::SpatialMotionVector) to the corresponding element of SE(3) (iDynTree::Transform).

Function documentation

SpatialMotionVector iDynTree::SpatialMotionVector::operator*(const double scalar) const

Multiplication for a scalar.

Mainly used if SpatialMotionVector is used to represent a motion subspace.

SpatialMotionVector iDynTree::SpatialMotionVector::cross(const SpatialMotionVector& other) const

Cross product between two 6D motion vectors $ V_1 = \begin{bmatrix} v_1 \\ \omega_1 \end{bmatrix} $ and $ V_2 = \begin{bmatrix} v_2 \\ \omega_2 \end{bmatrix} $ .

Returns:

\[ V_1 \times V_2 = \begin{bmatrix} v_1 \times \omega_2 + \omega_1 \times v_2 \\ \omega_1 \times \omega_2 \end{bmatrix} \]

SpatialForceVector iDynTree::SpatialMotionVector::cross(const SpatialForceVector& other) const

Cross product between a 6D motion vector $ V = \begin{bmatrix} v \\ \omega \end{bmatrix} $ and a 6D force vector $ F = \begin{bmatrix} f \\ \mu \end{bmatrix} $ .

Returns:

\[ V \bar{\times}^* F = \begin{bmatrix} \omega \times f \\ v \times f + \omega \times \mu \end{bmatrix} \]

Matrix6x6 iDynTree::SpatialMotionVector::asCrossProductMatrix() const

Cross product matrices.

If this object is $ V = \begin{bmatrix} v \\ \omega \end{bmatrix} $ , return the 6x6 matrix $ V\times $ such that, if U is a SpatialMotionVector :

\[ (V \times) U = V\texttt{.cross}(U) \]

The returned matrix is then the following one:

\[ V \times = \begin{bmatrix} \omega \times & v \times \\ 0_{3\times3} & \omega \times \end{bmatrix} \]

Matrix6x6 iDynTree::SpatialMotionVector::asCrossProductMatrixWrench() const

If this object is $ V = \begin{bmatrix} v \\ \omega \end{bmatrix} $ , return the 6x6 matrix $ V\times $ such that, if F is a SpatialForceVector :

\[ (V \bar{\times}^*) F = V\texttt{.cross}(F) \]

The returned matrix is then the following one:

\[ V \bar{\times}^* = \begin{bmatrix} \omega \times & 0_{3\times3} \\ v \times & \omega \times \end{bmatrix} \]