adam.core.spatial_math

Contents

adam.core.spatial_math#

Classes#

ArrayLike

Abstract class for a generic Array wrapper. Every method should be implemented for every data type.

ArrayLikeFactory

Abstract class for a generic Array wrapper. Every method should be implemented for every data type.

SpatialMath

Class implementing the main geometric functions used for computing rigid-body algorithm

Module Contents#

class adam.core.spatial_math.ArrayLike[source]#

Bases: abc.ABC

Abstract class for a generic Array wrapper. Every method should be implemented for every data type.

abstractmethod __add__(other)[source]#
abstractmethod __radd__(other)[source]#
abstractmethod __sub__(other)[source]#
abstractmethod __rsub__(other)[source]#
abstractmethod __mul__(other)[source]#
abstractmethod __rmul__(other)[source]#
abstractmethod __matmul__(other)[source]#
abstractmethod __rmatmul__(other)[source]#
abstractmethod __neg__()[source]#
abstractmethod __getitem__(item)[source]#
abstractmethod __truediv__(other)[source]#
abstract property T[source]#

Transpose of the array

Type:

Returns

__len__()[source]#
__repr__()[source]#
as_list()[source]#
class adam.core.spatial_math.ArrayLikeFactory[source]#

Bases: abc.ABC

Abstract class for a generic Array wrapper. Every method should be implemented for every data type.

abstractmethod zeros(*x: numpy.typing.ArrayLike) numpy.typing.ArrayLike[source]#
Parameters:

x (npt.ArrayLike) – matrix dimension

Returns:

zero matrix of dimension x

Return type:

npt.ArrayLike

abstractmethod eye(x: numpy.typing.ArrayLike) numpy.typing.ArrayLike[source]#
Parameters:

x (npt.ArrayLike) – matrix dimension

Returns:

identity matrix of dimension x

Return type:

npt.ArrayLike

abstractmethod asarray(x: numpy.typing.ArrayLike) numpy.typing.ArrayLike[source]#
Parameters:

x (npt.ArrayLike) – array

Returns:

array

Return type:

npt.ArrayLike

abstractmethod ones_like(x: numpy.typing.ArrayLike) numpy.typing.ArrayLike[source]#
Parameters:

x (npt.ArrayLike) – array

Returns:

one array with the same shape as x

Return type:

npt.ArrayLike

abstractmethod zeros_like(x: numpy.typing.ArrayLike) numpy.typing.ArrayLike[source]#
Parameters:

x (npt.ArrayLike) – array

Returns:

one array with the same shape as x

Return type:

npt.ArrayLike

abstractmethod tile(x: numpy.typing.ArrayLike, reps: tuple) numpy.typing.ArrayLike[source]#
Parameters:
  • x (npt.ArrayLike) – input array

  • reps (tuple) – repetition factors for each dimension

Returns:

tiled array

Return type:

npt.ArrayLike

class adam.core.spatial_math.SpatialMath(factory: ArrayLikeFactory)[source]#

Class implementing the main geometric functions used for computing rigid-body algorithm

Parameters:

ArrayLike – abstract class describing a generic Array wrapper. It needs to be implemented for every data type

_factory[source]#
property factory: ArrayLikeFactory[source]#
abstractmethod vertcat(x: numpy.typing.ArrayLike) numpy.typing.ArrayLike[source]#
Parameters:

x (npt.ArrayLike) – elements

Returns:

vertical concatenation of elements x

Return type:

npt.ArrayLike

abstractmethod horzcat(x: numpy.typing.ArrayLike) numpy.typing.ArrayLike[source]#
Parameters:

x (npt.ArrayLike) – elements

Returns:

horizontal concatenation of elements x

Return type:

npt.ArrayLike

abstractmethod concatenate(x: numpy.typing.ArrayLike, axis: int) numpy.typing.ArrayLike[source]#
Parameters:
  • x (npt.ArrayLike) – elements

  • axis (int) – axis along which to concatenate

Returns:

concatenation of elements x along axis

Return type:

npt.ArrayLike

abstractmethod stack(x: numpy.typing.ArrayLike, axis: int) numpy.typing.ArrayLike[source]#
Parameters:
  • x (npt.ArrayLike) – elements

  • axis (int) – axis along which to stack

Returns:

stacked elements x along axis

Return type:

npt.ArrayLike

abstractmethod tile(x: numpy.typing.ArrayLike, reps: tuple) numpy.typing.ArrayLike[source]#
Parameters:
  • x (npt.ArrayLike) – input array

  • reps (tuple) – repetition factors for each dimension

Returns:

tiled array

Return type:

npt.ArrayLike

abstractmethod transpose(x: numpy.typing.ArrayLike, dims: tuple) numpy.typing.ArrayLike[source]#
Parameters:
  • x (npt.ArrayLike) – input array

  • dims (tuple) – permutation of dimensions

Returns:

transposed array

Return type:

npt.ArrayLike

abstractmethod inv(x: numpy.typing.ArrayLike) numpy.typing.ArrayLike[source]#
Parameters:

x (npt.ArrayLike) – input array

Returns:

inverse of the array

Return type:

npt.ArrayLike

abstractmethod mtimes(x: numpy.typing.ArrayLike, y: numpy.typing.ArrayLike) numpy.typing.ArrayLike[source]#
abstractmethod sin(x: numpy.typing.ArrayLike) numpy.typing.ArrayLike[source]#
Parameters:

x (npt.ArrayLike) – angle value

Returns:

sin value of x

Return type:

npt.ArrayLike

abstractmethod cos(x: numpy.typing.ArrayLike) numpy.typing.ArrayLike[source]#
Parameters:

x (npt.ArrayLike) – angle value

Returns:

cos value of angle x

Return type:

npt.ArrayLike

abstractmethod skew(x)[source]#
R_from_axis_angle(axis, q)[source]#

axis: (…,3) - normalized axis vector, batched if q is batched q : (…,) - rotation angle, batched or scalar returns: (…,3,3) - rotation matrix

sxm(s: numpy.typing.ArrayLike, m: numpy.typing.ArrayLike) numpy.typing.ArrayLike[source]#

Computes scalar multiplication with a matrix

Parameters:
  • s (npt.ArrayLike) – scalar value

  • m (npt.ArrayLike) – matrix to be multiplied

Returns:

result of the multiplication

Return type:

npt.ArrayLike

Rx(q: numpy.typing.ArrayLike) numpy.typing.ArrayLike[source]#
Parameters:

q (npt.ArrayLike) – angle value

Returns:

rotation matrix around x axis

Return type:

npt.ArrayLike

Ry(q: numpy.typing.ArrayLike) numpy.typing.ArrayLike[source]#
Parameters:

q (npt.ArrayLike) – angle value

Returns:

rotation matrix around y axis

Return type:

npt.ArrayLike

Rz(q: numpy.typing.ArrayLike) numpy.typing.ArrayLike[source]#
Parameters:

q (npt.ArrayLike) – angle value

Returns:

rotation matrix around z axis

Return type:

npt.ArrayLike

H_revolute_joint(xyz: numpy.typing.ArrayLike, rpy: numpy.typing.ArrayLike, axis: numpy.typing.ArrayLike, q: numpy.typing.ArrayLike) numpy.typing.ArrayLike[source]#
Parameters:
  • xyz (npt.ArrayLike) – joint origin in the urdf

  • rpy (npt.ArrayLike) – joint orientation in the urdf

  • axis (npt.ArrayLike) – joint axis in the urdf

  • q (npt.ArrayLike) – joint angle value

Returns:

Homogeneous transform

Return type:

npt.ArrayLike

homogeneous(R, p)[source]#
H_prismatic_joint(xyz: numpy.typing.ArrayLike, rpy: numpy.typing.ArrayLike, axis: numpy.typing.ArrayLike, q: numpy.typing.ArrayLike) numpy.typing.ArrayLike[source]#
Parameters:
  • xyz (npt.ArrayLike) – joint origin in the urdf

  • rpy (npt.ArrayLike) – joint orientation in the urdf

  • axis (npt.ArrayLike) – joint axis in the urdf

  • q (npt.ArrayLike) – joint angle value

Returns:

Homogeneous transform

Return type:

npt.ArrayLike

H_from_Pos_RPY(xyz: numpy.typing.ArrayLike, rpy: numpy.typing.ArrayLike) numpy.typing.ArrayLike[source]#
Parameters:
  • xyz (npt.ArrayLike) – translation vector

  • rpy (npt.ArrayLike) – rotation as rpy angles

Returns:

Homegeneous transform

Return type:

npt.ArrayLike

R_from_RPY(rpy: numpy.typing.ArrayLike) numpy.typing.ArrayLike[source]#
Parameters:

rpy (npt.ArrayLike) – rotation as rpy angles

Returns:

Rotation matrix

Return type:

npt.ArrayLike

X_revolute_joint(xyz: numpy.typing.ArrayLike, rpy: numpy.typing.ArrayLike, axis: numpy.typing.ArrayLike, q: numpy.typing.ArrayLike) numpy.typing.ArrayLike[source]#
Parameters:
  • xyz (npt.ArrayLike) – joint origin in the urdf

  • rpy (npt.ArrayLike) – joint orientation in the urdf

  • axis (npt.ArrayLike) – joint axis in the urdf

  • q (npt.ArrayLike) – joint angle value

Returns:

Spatial transform of a revolute joint given its rotation angle

Return type:

npt.ArrayLike

X_prismatic_joint(xyz: numpy.typing.ArrayLike, rpy: numpy.typing.ArrayLike, axis: numpy.typing.ArrayLike, q: numpy.typing.ArrayLike) numpy.typing.ArrayLike[source]#
Parameters:
  • xyz (npt.ArrayLike) – joint origin in the urdf

  • rpy (npt.ArrayLike) – joint orientation in the urdf

  • axis (npt.ArrayLike) – joint axis in the urdf

  • q (npt.ArrayLike) – joint angle value

Returns:

Spatial transform of a prismatic joint given its increment

Return type:

npt.ArrayLike

X_fixed_joint(xyz: numpy.typing.ArrayLike, rpy: numpy.typing.ArrayLike) numpy.typing.ArrayLike[source]#
Parameters:
  • xyz (npt.ArrayLike) – joint origin in the urdf

  • rpy (npt.ArrayLike) – joint orientation in the urdf

Returns:

Spatial transform of a fixed joint

Return type:

npt.ArrayLike

_X_from_H(T)[source]#
spatial_transform(R: numpy.typing.ArrayLike, p: numpy.typing.ArrayLike) numpy.typing.ArrayLike[source]#
Parameters:
  • R (npt.ArrayLike) – Rotation matrix

  • p (npt.ArrayLike) – translation vector

Returns:

spatial transform

Return type:

npt.ArrayLike

spatial_inertia(inertia_matrix: numpy.typing.ArrayLike, mass: numpy.typing.ArrayLike, c: numpy.typing.ArrayLike, rpy: numpy.typing.ArrayLike) numpy.typing.ArrayLike[source]#
Parameters:
  • inertia_matrix (npt.ArrayLike) – inertia values from urdf

  • mass (npt.ArrayLike) – mass value from urdf

  • c (npt.ArrayLike) – origin of the link from urdf

  • rpy (npt.ArrayLike) – orientation of the link from the urdf

Returns:

the 6x6 inertia matrix expressed at the origin of the link (with rotation)

Return type:

npt.ArrayLike

spatial_inertia_with_parameters(inertia_matrix, mass, c, rpy)[source]#
Parameters:
  • I (npt.ArrayLike) – inertia values parametric

  • mass (npt.ArrayLike) – mass value parametric

  • c (npt.ArrayLike) – origin of the link parametric

  • rpy (npt.ArrayLike) – orientation of the link from urdf

Returns:

the 6x6 inertia matrix parametric expressed at the origin of the link (with rotation)

Return type:

npt.ArrayLike

spatial_skew(v: numpy.typing.ArrayLike) numpy.typing.ArrayLike[source]#
Parameters:

v (npt.ArrayLike) – 6D vector

Returns:

spatial skew matrix

Return type:

npt.ArrayLike

spatial_skew_star(v: numpy.typing.ArrayLike) numpy.typing.ArrayLike[source]#
Parameters:

v (npt.ArrayLike) – 6D vector

Returns:

negative spatial skew matrix traspose

Return type:

npt.ArrayLike

adjoint(H: numpy.typing.ArrayLike) numpy.typing.ArrayLike[source]#
Parameters:

H (npt.ArrayLike) – Homogeneous transform

Returns:

adjoint matrix

Return type:

npt.ArrayLike

adjoint_derivative(H: numpy.typing.ArrayLike, v: numpy.typing.ArrayLike) numpy.typing.ArrayLike[source]#
Parameters:
  • H (npt.ArrayLike) – Homogeneous transform

  • v (npt.ArrayLike) – 6D twist

Returns:

adjoint matrix derivative

Return type:

npt.ArrayLike

mxv(m: numpy.typing.ArrayLike, v: numpy.typing.ArrayLike) numpy.typing.ArrayLike[source]#
Parameters:
  • m (npt.ArrayLike) – Matrix

  • v (npt.ArrayLike) – Vector

Returns:

Result of matrix-vector multiplication

Return type:

npt.ArrayLike

vxs(v: numpy.typing.ArrayLike, s: numpy.typing.ArrayLike) numpy.typing.ArrayLike[source]#
Parameters:
  • v (npt.ArrayLike) – Vector

  • s (npt.ArrayLike) – Scalar

Returns:

Result of vector cross product with scalar multiplication

Return type:

npt.ArrayLike

adjoint_inverse(H: numpy.typing.ArrayLike) numpy.typing.ArrayLike[source]#
Parameters:

H (npt.ArrayLike) – Homogeneous transform

Returns:

adjoint matrix

Return type:

npt.ArrayLike

adjoint_inverse_derivative(H: numpy.typing.ArrayLike, v: numpy.typing.ArrayLike) numpy.typing.ArrayLike[source]#
Parameters:
  • H (npt.ArrayLike) – Homogeneous transform

  • v (npt.ArrayLike) – 6D twist

Returns:

adjoint matrix derivative

Return type:

npt.ArrayLike

adjoint_mixed(H: numpy.typing.ArrayLike) numpy.typing.ArrayLike[source]#
Parameters:

H (npt.ArrayLike) – Homogeneous transform

Returns:

adjoint matrix

Return type:

npt.ArrayLike

adjoint_mixed_inverse(H: numpy.typing.ArrayLike) numpy.typing.ArrayLike[source]#
Parameters:

H (npt.ArrayLike) – Homogeneous transform

Returns:

adjoint matrix

Return type:

npt.ArrayLike

adjoint_mixed_derivative(H: numpy.typing.ArrayLike, v: numpy.typing.ArrayLike) numpy.typing.ArrayLike[source]#
Parameters:
  • H (npt.ArrayLike) – Homogeneous transform

  • v (npt.ArrayLike) – 6D twist

Returns:

adjoint matrix derivative

Return type:

npt.ArrayLike

adjoint_mixed_inverse_derivative(H: numpy.typing.ArrayLike, v: numpy.typing.ArrayLike) numpy.typing.ArrayLike[source]#
Parameters:
  • H (npt.ArrayLike) – Homogeneous transform

  • v (npt.ArrayLike) – 6D twist

Returns:

adjoint matrix derivative

Return type:

npt.ArrayLike

homogeneous_inverse(H: numpy.typing.ArrayLike) numpy.typing.ArrayLike[source]#
Parameters:

H (npt.ArrayLike) – Homogeneous transform

Returns:

inverse of the homogeneous transform

Return type:

npt.ArrayLike

zeros(*x: int) numpy.typing.ArrayLike[source]#
Parameters:

x (int) – dimension

Returns:

zero matrix of dimension x

Return type:

npt.ArrayLike

eye(x: int) numpy.typing.ArrayLike[source]#
Parameters:

x (int) – dimension

Returns:

identity matrix of dimension x

Return type:

npt.ArrayLike

asarray(x: numpy.typing.ArrayLike) numpy.typing.ArrayLike[source]#
Parameters:

x (npt.ArrayLike) – array

Returns:

array

Return type:

npt.ArrayLike

zeros_like(x: numpy.typing.ArrayLike) numpy.typing.ArrayLike[source]#
Parameters:

x (npt.ArrayLike) – array

Returns:

zero array with the same shape as x

Return type:

npt.ArrayLike

ones_like(x: numpy.typing.ArrayLike) numpy.typing.ArrayLike[source]#
Parameters:

x (npt.ArrayLike) – array

Returns:

one array with the same shape as x

Return type:

npt.ArrayLike