se3labs.interface.eval.armArms
Motorized arm hardware spec and the per-arm observation / action containers.
Conventions (all arrays are np.float32):
- joint angles in radians, joint velocities in rad/s, joint torques in N*m, joint temperatures in degrees Celsius.
gripper_posis a normalized open fraction in[0, 1]where0is fully closed and1is fully open. The station maps this to the physical gripper travel, so policies never see device units.- Action targets are absolute joint positions.
MotorizedArm_ArmType
class MotorizedArm_ArmType(Enum)
Attributes
YAM_6DoF = 'yam_6dof'#-
A YAM 6-DoF arm.
Reference: https://i2rt.com/products/yam-6-dof-arm
n_dof: int#-
Read-only property.
MotorizedArm_GripperType
class MotorizedArm_GripperType(Enum)
Attributes
I2RT_linear_gripper_1DoF = 'i2rt_linear_gripper_1dof'#-
I2RT linear gripper with 1 DoF.
Reference: https://i2rt.com/products/yam-gripper-1
I2RT_teaching_handle = 'i2rt_teaching_handle'#-
Passive trigger reporting a normalized opening; no gripper actuator.
n_dof: int#-
Read-only property.
MotorizedArmSpec
MotorizedArmSpec(
refresh_rate: int,
control_rate: int,
)
Attributes
arm: MotorizedArm_ArmType#gripper: MotorizedArm_GripperType#refresh_rate: int#-
Rate at which observations are published, unit: [Hz].
control_rate: int#-
Rate at which joint position targets are sent to the motors, unit: [Hz].
Action chunks emitted at a lower rate are interpolated up to this rate by the station.
n_arm_dof: int#-
Read-only property.
n_gripper_dof: int#-
Read-only property.
gripper_actuated: bool#-
Read-only property.
actuated_width: int#-
Read-only property.
MotorizedArm_Observation
MotorizedArm_Observation(
timestamp: float,
joint_angle_q: jt.Float32[np.ndarray, n_arm_dof],
joint_angle_vel_dq: jt.Float32[np.ndarray, n_arm_dof],
joint_torque: jt.Float32[np.ndarray, n_arm_dof],
joint_temperature: jt.Float32[np.ndarray, n_arm_dof],
gripper_pos: jt.Float32[np.ndarray, n_gripper_dof],
gripper_vel: jt.Float32[np.ndarray, n_gripper_dof],
gripper_torque: jt.Float32[np.ndarray, n_gripper_dof],
gripper_temperature: jt.Float32[np.ndarray, n_gripper_dof],
)
One observation tick of a single arm. Unmeasured channels are NaN.
A teaching handle supplies opening only; its gripper velocity, torque, and temperature are unavailable.
Construction enforces dtype / rank and that every joint channel shares n_arm_dof;
validate binds n_arm_dof / n_gripper_dof to a concrete MotorizedArmSpec.
Attributes
timestamp: float#-
Monotonic capture time on the station clock, unit: [s].
joint_angle_q: jt.Float32[np.ndarray, n_arm_dof]#-
Joint positions, unit: [rad].
joint_angle_vel_dq: jt.Float32[np.ndarray, n_arm_dof]#-
Joint velocities, unit: [rad/s].
joint_torque: jt.Float32[np.ndarray, n_arm_dof]#-
Joint torques, unit: [N*m].
joint_temperature: jt.Float32[np.ndarray, n_arm_dof]#-
Motor temperatures, unit: [degC].
gripper_pos: jt.Float32[np.ndarray, n_gripper_dof]#-
Normalized gripper open fraction in [0, 1]; 0 = closed, 1 = open.
gripper_vel: jt.Float32[np.ndarray, n_gripper_dof]#-
Gripper opening velocity, unit: [1/s] (open fraction per second).
gripper_torque: jt.Float32[np.ndarray, n_gripper_dof]#-
Gripper motor torque, unit: [N*m].
gripper_temperature: jt.Float32[np.ndarray, n_gripper_dof]#-
Gripper motor temperature, unit: [degC].
Methods
validate(spec: MotorizedArmSpec) -> None#
MotorizedArm_JointPose
MotorizedArm_JointPose(
joint_angle_q: jt.Float32[np.ndarray, n_arm_dof],
gripper_pos: jt.Float32[np.ndarray, n_gripper_dof],
)
One absolute joint configuration of a single arm, e.g. the pose the arm walks to before an episode.
Attributes
joint_angle_q: jt.Float32[np.ndarray, n_arm_dof]#-
Absolute joint positions, unit: [rad].
gripper_pos: jt.Float32[np.ndarray, n_gripper_dof]#-
Normalized gripper open fraction in [0, 1]; 0 = closed, 1 = open.
Methods
validate(spec: MotorizedArmSpec) -> None#-
Bind the dims to a concrete arm spec.
MotorizedArm_ActionChunk
MotorizedArm_ActionChunk(
joint_angle_q: jt.Float32[np.ndarray, 'horizon n_arm_dof'],
gripper_pos: jt.Float32[np.ndarray, 'horizon n_gripper_dof'],
)
A horizon of absolute joint position targets for a single arm.
Construction enforces dtype / rank and a shared horizon between joints and gripper;
validate binds the dims to a concrete MotorizedArmSpec and horizon.
Row i is the target i / rate seconds after the chunk's reference timestamp
(both carried by the enclosing station.Station_ActionChunk).
Attributes
joint_angle_q: jt.Float32[np.ndarray, 'horizon n_arm_dof']#-
Absolute joint position targets, unit: [rad].
gripper_pos: jt.Float32[np.ndarray, 'horizon n_gripper_dof']#-
Normalized gripper open fraction in [0, 1]; 0 = closed, 1 = open.
horizon: int#-
Read-only property.
Methods
__len__() -> int#__getitem__(index: int) -> MotorizedArm_JointPose#-
Row
indexof the chunk as a single joint pose. Negative indices count from the end. validate(spec: MotorizedArmSpec, horizon: int) -> None#-
Bind the dims to a concrete arm spec and horizon.