Source code for jaxsim.math.cross

import jax.numpy as jnp

import jaxsim.typing as jtp

from .skew import Skew


[docs] class Cross: """ A utility class for cross product matrix operations. """
[docs] @staticmethod def vx(velocity_sixd: jtp.Vector) -> jtp.Matrix: """ Compute the cross product matrix for 6D velocities. Args: velocity_sixd: A 6D velocity vector [v, ω]. Returns: The cross product matrix (6x6). Raises: ValueError: If the input vector does not have a size of 6. """ velocity_sixd = velocity_sixd.reshape(-1, 6) v, ω = jnp.split(velocity_sixd, 2, axis=-1) v_cross = jnp.concatenate( [ jnp.concatenate( [Skew.wedge(ω), jnp.zeros((ω.shape[0], 3, 3)).squeeze()], axis=-2 ), jnp.concatenate([Skew.wedge(v), Skew.wedge(ω)], axis=-2), ], axis=-1, ) return v_cross
[docs] @staticmethod def vx_star(velocity_sixd: jtp.Vector) -> jtp.Matrix: """ Compute the negative transpose of the cross product matrix for 6D velocities. Args: velocity_sixd: A 6D velocity vector [v, ω]. Returns: The negative transpose of the cross product matrix (6x6). Raises: ValueError: If the input vector does not have a size of 6. """ v_cross_star = -Cross.vx(velocity_sixd).T return v_cross_star