Source code for jaxsim.math.skew
import jax.numpy as jnp
import jaxsim.typing as jtp
[docs]
class Skew:
"""
A utility class for skew-symmetric matrix operations.
"""
[docs]
@staticmethod
def wedge(vector: jtp.Vector) -> jtp.Matrix:
"""
Compute the skew-symmetric matrix (wedge operator) of a 3D vector.
Args:
vector (jtp.Vector): A 3D vector.
Returns:
jtp.Matrix: The skew-symmetric matrix corresponding to the input vector.
"""
vector = vector.squeeze()
x, y, z = vector
skew = jnp.array([[0, -z, y], [z, 0, -x], [-y, x, 0]])
return skew
[docs]
@staticmethod
def vee(matrix: jtp.Matrix) -> jtp.Vector:
"""
Extract the 3D vector from a skew-symmetric matrix (vee operator).
Args:
matrix (jtp.Matrix): A 3x3 skew-symmetric matrix.
Returns:
jtp.Vector: The 3D vector extracted from the input matrix.
"""
vector = 0.5 * jnp.vstack(
[
matrix[2, 1] - matrix[1, 2],
matrix[0, 2] - matrix[2, 0],
matrix[1, 0] - matrix[0, 1],
]
)
return vector