adam.core#
Submodules#
Classes#
Enum where members are also (and must be) ints |
|
This is a small class that implements Rigid body algorithms retrieving robot quantities, for Floating Base systems - as humanoid robots. |
|
Class implementing the main geometric functions used for computing rigid-body algorithm |
Package Contents#
- class adam.core.Representations[source]#
Bases:
enum.IntEnum
Enum where members are also (and must be) ints
- BODY_FIXED_REPRESENTATION#
- MIXED_REPRESENTATION#
- class adam.core.RBDAlgorithms(model: adam.model.Model, math: adam.core.spatial_math.SpatialMath)[source]#
This is a small class that implements Rigid body algorithms retrieving robot quantities, for Floating Base systems - as humanoid robots.
- model#
- NDoF#
- root_link#
- math#
- frame_velocity_representation#
- set_frame_velocity_representation(representation: adam.core.constants.Representations)[source]#
Sets the frame velocity representation
- Parameters:
representation (str) – The representation of the frame velocity
- crba(base_transform: numpy.typing.ArrayLike, joint_positions: numpy.typing.ArrayLike) numpy.typing.ArrayLike [source]#
- This function computes the Composite Rigid body algorithm (Roy Featherstone) that computes the Mass Matrix.
The algorithm is complemented with Orin’s modifications computing the Centroidal Momentum Matrix
- Parameters:
base_transform (npt.ArrayLike) – The homogenous transform from base to world frame
joint_positions (npt.ArrayLike) – The joints position
- Returns:
Mass Matrix Jcm (npt.ArrayLike): Centroidal Momentum Matrix
- Return type:
M (npt.ArrayLike)
- forward_kinematics(frame, base_transform: numpy.typing.ArrayLike, joint_positions: numpy.typing.ArrayLike) numpy.typing.ArrayLike [source]#
Computes the forward kinematics relative to the specified frame
- Parameters:
frame (str) – The frame to which the fk will be computed
base_transform (npt.ArrayLike) – The homogenous transform from base to world frame
joint_positions (npt.ArrayLike) – The joints position
- Returns:
The fk represented as Homogenous transformation matrix
- Return type:
I_H_L (npt.ArrayLike)
- joints_jacobian(frame: str, joint_positions: numpy.typing.ArrayLike) numpy.typing.ArrayLike [source]#
Returns the Jacobian relative to the specified frame
- Parameters:
frame (str) – The frame to which the jacobian will be computed
base_transform (npt.ArrayLike) – The homogenous transform from base to world frame
joint_positions (npt.ArrayLike) – The joints position
- Returns:
The Joints Jacobian relative to the frame
- Return type:
J (npt.ArrayLike)
- jacobian(frame: str, base_transform: numpy.typing.ArrayLike, joint_positions: numpy.typing.ArrayLike) numpy.typing.ArrayLike [source]#
- relative_jacobian(frame: str, joint_positions: numpy.typing.ArrayLike) numpy.typing.ArrayLike [source]#
Returns the Jacobian between the root link and a specified frame :param frame: The tip of the chain :type frame: str :param joint_positions: The joints position :type joint_positions: npt.ArrayLike
- Returns:
The 6 x NDoF Jacobian between the root and the frame
- Return type:
J (npt.ArrayLike)
- jacobian_dot(frame: str, base_transform: numpy.typing.ArrayLike, joint_positions: numpy.typing.ArrayLike, base_velocity: numpy.typing.ArrayLike, joint_velocities: numpy.typing.ArrayLike) numpy.typing.ArrayLike [source]#
Returns the Jacobian derivative relative to the specified frame
- Parameters:
frame (str) – The frame to which the jacobian will be computed
base_transform (npt.ArrayLike) – The homogenous transform from base to world frame
joint_positions (npt.ArrayLike) – The joints position
base_velocity (npt.ArrayLike) – The base velocity
joint_velocities (npt.ArrayLike) – The joints velocity
- Returns:
The Jacobian derivative relative to the frame
- Return type:
J_dot (npt.ArrayLike)
- CoM_position(base_transform: numpy.typing.ArrayLike, joint_positions: numpy.typing.ArrayLike) numpy.typing.ArrayLike [source]#
Returns the CoM position
- Parameters:
base_transform (T) – The homogenous transform from base to world frame
joint_positions (T) – The joints position
- Returns:
The CoM position
- Return type:
com (T)
- CoM_jacobian(base_transform: numpy.typing.ArrayLike, joint_positions: numpy.typing.ArrayLike) numpy.typing.ArrayLike [source]#
Returns the center of mass (CoM) Jacobian using the centroidal momentum matrix.
- Parameters:
base_transform (T) – The homogenous transform from base to world frame
joint_positions (T) – The joints position
- Returns:
The CoM Jacobian
- Return type:
J_com (T)
- get_total_mass()[source]#
Returns the total mass of the robot
- Returns:
The total mass
- Return type:
mass
- rnea(base_transform: numpy.typing.ArrayLike, joint_positions: numpy.typing.ArrayLike, base_velocity: numpy.typing.ArrayLike, joint_velocities: numpy.typing.ArrayLike, g: numpy.typing.ArrayLike) numpy.typing.ArrayLike [source]#
Implementation of reduced Recursive Newton-Euler algorithm (no acceleration and external forces). For now used to compute the bias force term
- Parameters:
frame (str) – The frame to which the jacobian will be computed
base_transform (T) – The homogenous transform from base to world frame
joint_positions (T) – The joints position
base_velocity (T) – The base velocity
joint_velocities (T) – The joints velocity
g (T) – The 6D gravity acceleration
- Returns:
generalized force variables
- Return type:
tau (T)
- class adam.core.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#
- property factory: ArrayLikeFactory#
- 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 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
- R_from_axis_angle(axis: numpy.typing.ArrayLike, q: numpy.typing.ArrayLike) numpy.typing.ArrayLike [source]#
- Parameters:
axis (npt.ArrayLike) – axis vector
q (npt.ArrayLike) – angle value
- Returns:
rotation matrix from axis-angle representation
- 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
- 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
- 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(I: numpy.typing.ArrayLike, mass: numpy.typing.ArrayLike, c: numpy.typing.ArrayLike, rpy: numpy.typing.ArrayLike) numpy.typing.ArrayLike [source]#
- Parameters:
I (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_inertial_with_parameters(I, 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
- 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