iDynTree::TransformDerivative class

Class representing the derivative of Transform object.

Public static functions

static auto Zero() -> TransformDerivative
Return a zero transfom derivative.

Constructors, destructors, conversion operators

TransformDerivative()
Default constructor.
TransformDerivative(const Matrix3x3& _rotDeriv, const Vector3& posDeriv)
Constructor from a Matrix3x3 and a Vector3 .
TransformDerivative(const TransformDerivative& other)
Copy constructor: create a TransformDerivative from another TransformDerivative.
~TransformDerivative()
Default destructor.

Public functions

auto getRotationDerivative() const -> const Matrix3x3&
Get the derivative of the rotation part of the transform.
auto getPositionDerivative() const -> const Vector3&
Get the derivative of the translation part of the transform.
void setRotationDerivative(const Matrix3x3& rotationDerivative)
Set the derivative of the rotation part of the transform.
void setPositionDerivative(const Vector3& positionDerivative)
Set the derivative of translation part of the transform.

Protected variables

Vector3 posDerivative
The derivative of the translation part of a Transform.
Matrix3x3 rotDerivative
The derivative of the rotation part of a Transform.

Raw data accessors.

For several applications it may be useful to access the fransform contents in the raw form of homogeneous matrix or an adjoint matrix.

auto asHomogeneousTransformDerivative() const -> Matrix4x4
Return the derivative of the 4x4 homogeneous matrix representing the transform.
auto asAdjointTransformDerivative(const Transform& transform) const -> Matrix6x6
Return the derivative of the 6x6 adjoint matrix representing this transform.
auto asAdjointTransformWrenchDerivative(const Transform& transform) const -> Matrix6x6
Return the 6x6 adjoint matrix (for wrench) representing this transform.
auto operator*(const Transform& otherTransform) const -> TransformDerivative
Multiply a transform derivative for a transform.
auto derivativeOfInverse(const Transform& transform) const -> TransformDerivative
Get the derivative of the inverse of the transform.
auto transform(const Transform& transform, ArticulatedBodyInertia& other) -> ArticulatedBodyInertia
Given a articulated inertia $I$ (other argument), this TransformDerivative $ ~^a\dot{X}_b $ and a transform $ ~^a{X}_b $ return the articulated body inertia:
auto transform(const Transform& transform, SpatialForceVector& other) -> SpatialForceVector
Given a SpatialForceVector $F$ (other argument), this TransformDerivative $ ~^a\dot{X}_b $ and a transform $ ~^a{X}_b $ return the spatial force vector:
auto transform(const Transform& transform, SpatialMotionVector& other) -> SpatialMotionVector
Given a SpatialMotionVector $V$ (other argument), this TransformDerivative $ ~^a\dot{X}_b $ and a transform $ ~^a{X}_b $ return the spatial force vector:

Function documentation

static TransformDerivative iDynTree::TransformDerivative::Zero()

Return a zero transfom derivative.

Returns an zero transform derivative.

iDynTree::TransformDerivative::TransformDerivative()

Default constructor.

The data is not reset to the default for perfomance reasons. Please initialize the data in the class before any use.

iDynTree::TransformDerivative::TransformDerivative(const Matrix3x3& _rotDeriv, const Vector3& posDeriv)

Constructor from a Matrix3x3 and a Vector3 .

The matrix represent the derivative of a rotation matrix, while the vector the derivative of the position part of the tranform.

Matrix4x4 iDynTree::TransformDerivative::asHomogeneousTransformDerivative() const

Return the derivative of the 4x4 homogeneous matrix representing the transform.

The returned matrix is the one with this structure:

\[ {}^{\texttt{refFrame}} \dot{H}_{\texttt{frame}} = \begin{bmatrix} {}^{\texttt{refOrient}} \dot{R}_{\texttt{orient}} & {}^{\texttt{refOrient}} \dot{p}_{\texttt{refPoint},\texttt{point}} \\ 0_{1\times3} & 1 \end{bmatrix} \]

For details on this notation, check the Transform::asHomogeneousTransform() method .

Matrix6x6 iDynTree::TransformDerivative::asAdjointTransformDerivative(const Transform& transform) const

Return the derivative of the 6x6 adjoint matrix representing this transform.

The returned matrix is the one with this structure:

\[ {}^{\texttt{refFrame}} X_{\texttt{frame}} = \begin{bmatrix} \dot{R} & \dot{p} \times R + p \times \dot{R} \\ 0_{3\times3} & \dot{R} \end{bmatrix} \]

Where $R = {}^{\texttt{refOrient}} R_{\texttt{orient}} \in \mathbb{R}^{3\times3}$ is the rotation matrix that takes a 3d vector expressed in the orientationFrame and transform it in a 3d vector expressed in the reference orientation frame.

$p = p_{\texttt{refPoint},\texttt{point}} \in \mathbb{R}^3$ is the vector between the point and the reference point, pointing toward the point and expressed in the reference orientation frame $p \times$ is the skew simmetric matrix such that $(p \times) v = p \times v$ .

Given that the TransformDerivative object contains only $ \dot{R} $ and $ \dot{p} $ , you need to provide $ R $ and $ p $ to this method by passing the relative Transform object.

Matrix6x6 iDynTree::TransformDerivative::asAdjointTransformWrenchDerivative(const Transform& transform) const

Return the 6x6 adjoint matrix (for wrench) representing this transform.

The returned matrix is the one with this structure:

\[ {}_{\texttt{refFrame}} X^{\texttt{frame}} = \begin{bmatrix} \dot{R} & 0_{3\times3} \\ \dot{p} \times R + p \times \dot{R} & \dot{R} \end{bmatrix} \]

Where $R = {}^{\texttt{refOrient}} R_{\texttt{orient}} \in \mathbb{R}^{3\times3}$ is the rotation matrix that takes a 3d vector expressed in the orientationFrame and transform it in a 3d vector expressed in the reference orientation frame.

$p = p_{\texttt{refPoint},\texttt{point}} \in \mathbb{R}^3$ is the vector between the point and the reference point, pointing toward the point and expressed in the reference orientation frame $p \times$ is the skew simmetric matrix such that $(p \times) v = p \times v$ .

Given that the TransformDerivative object contains only $ \dot{R} $ and $ \dot{p} $ , you need to provide $ R $ and $ p $ to this method by passing the relative Transform object.

TransformDerivative iDynTree::TransformDerivative::operator*(const Transform& otherTransform) const

Multiply a transform derivative for a transform.

This operation is useful to compose the derivative of a transform for a constant transform.

If this transform derivative represent the derivative of a transform with respect to time $ ~^a \dot{H}_b $ , and we have a constant transform $ ~^b H_c $ , then this operation returns the derivative of the transform $ ~^a H_c $ :

\[ ~^a \dot{H}_c = ~^a \dot{H}_b ~^b H_c \]

TransformDerivative iDynTree::TransformDerivative::derivativeOfInverse(const Transform& transform) const

Get the derivative of the inverse of the transform.

If this TransformDerivative is $ ~^a \dot{H}_b $ and the transform argument is $ ~^a H_b $ , returns the derivative of the inverse transform $ ~^b {H}_a $ computed as:

\[ ~^b \dot{H}_a = - ~^b {H}_a ~^a \dot{H}_b ~^b H_a \]

ArticulatedBodyInertia iDynTree::TransformDerivative::transform(const Transform& transform, ArticulatedBodyInertia& other)

Given a articulated inertia $I$ (other argument), this TransformDerivative $ ~^a\dot{X}_b $ and a transform $ ~^a{X}_b $ return the articulated body inertia:

\[ ~_a \dot{X}^b Ia ~^a X_b + ~_a {X}^b Ia ~^a \dot{X}_b \]

SpatialForceVector iDynTree::TransformDerivative::transform(const Transform& transform, SpatialForceVector& other)

Given a SpatialForceVector $F$ (other argument), this TransformDerivative $ ~^a\dot{X}_b $ and a transform $ ~^a{X}_b $ return the spatial force vector:

\[ ~_a \dot{X}^b F \]

SpatialMotionVector iDynTree::TransformDerivative::transform(const Transform& transform, SpatialMotionVector& other)

Given a SpatialMotionVector $V$ (other argument), this TransformDerivative $ ~^a\dot{X}_b $ and a transform $ ~^a{X}_b $ return the spatial force vector:

\[ ~^a \dot{X}_b F \]