Term Catalog¶
Every term registered in Eden (246 of them) with the parameters it accepts, generated from the registries themselves. This is the complete list; the guide's Terms & Registries page explains how to write and wire one up.
- Bold parameters are required — omit one and
configure()raises before the env is built. - A term's parameters are the keys of its
params={...}dict (function terms) or itsconfigure()fields (class terms). The fields every term of a kind carries are listed once, under that kind. - A Requires column appears in the tables that have one: an
EnvOptionsflag the term needs set, which no parameter of the term can supply. The env build raises without it. eden termsprints the same catalog in a terminal,eden terms --kind rewardone section of it,eden terms --grep heightonly the terms whose name, parameters or summary match, andeden terms --jsonemits it as JSON.
action terms¶
14 registered.
- Class terms:
<ClassName>.configure(<field>=...)— import it from the module its section names - Every action term also accepts:
dofs_name: str \| list[str] = [],entity_name: str = ''
eden.managers.terms.actions.binary_actions¶
| Term | Form | Parameters | Summary |
|---|---|---|---|
binary_joint_controller |
class BinaryJointController |
close_action: float \| dict[str, float] = 0.0, open_action: float \| dict[str, float] = 1.0, scale: float = 1.0 |
A binary joint controller for a parallel-jaw gripper. |
gripper_decision_controller |
class GripperDecisionController |
close_action: float \| dict[str, float] = 0.0, close_threshold: float \| None = None, continuous: bool = False, hold_steps: int = 0, input: GripperInput = 'sign', on_missing: Literal['hold', 'measured'] = 'hold', open_action: float \| dict[str, float] = 1.0, open_threshold: float \| None = None, scale: float = 1.0, snap_threshold: float \| None = None, sticky_repeats: int = 0, threshold: float = 0.5, zero_holds: bool = False |
Gripper controller that decides open/close from a policy scalar. |
eden.managers.terms.actions.free_base_actions¶
| Term | Form | Parameters | Summary |
|---|---|---|---|
free_base_pose_controller |
class FreeBasePoseController |
force_limit: float = 100.0, orientation_kd: float = 2.0, orientation_kp: float = 40.0, orientation_scale: float \| tuple[float, float, float] = 0.2, position_kd: float = 60.0, position_kp: float = 1000.0, position_scale: float \| tuple[float, float, float] = 0.05, torque_limit: float = 10.0 |
Drive a floating base to a pose near its default root pose (Genesis free-joint PD). |
eden.managers.terms.actions.joint_actions¶
| Term | Form | Parameters | Summary |
|---|---|---|---|
explicit_pd_controller |
class ExplicitPDController |
dict_keys_scope: Literal['term', 'entity'] = 'term', mimic_dofs: dict[str, tuple[str, float, float]] = {}, modifier: ActionModifierOptions \| None = None, offset: float \| dict[str, float] = 0.0, reference_source: ReferenceSource = ReferenceSource.DEFAULT, scale: float \| dict[str, float] \| None = None, scale_ratio: float \| None = None |
Explicit joint PD controller using manual torque computation. |
explicit_velocity_controller |
class ExplicitVelocityController |
dict_keys_scope: Literal['term', 'entity'] = 'term', mimic_dofs: dict[str, tuple[str, float, float]] = {}, modifier: ActionModifierOptions \| None = None, offset: float \| dict[str, float] = 0.0, reference_source: ReferenceSource = ReferenceSource.ZERO, scale: float \| dict[str, float] \| None = None, scale_ratio: float \| None = None, velocity_gain: float = 0.25 |
Explicit joint velocity controller using manual torque computation. |
implicit_pd_controller |
class ImplicitPDController |
dict_keys_scope: Literal['term', 'entity'] = 'term', mimic_dofs: dict[str, tuple[str, float, float]] = {}, modifier: ActionModifierOptions \| None = None, offset: float \| dict[str, float] = 0.0, reference_source: ReferenceSource = ReferenceSource.DEFAULT, scale: float \| dict[str, float] \| None = None, scale_ratio: float \| None = None |
Implicit joint PD controller using Genesis's built-in position control. |
implicit_velocity_controller |
class ImplicitVelocityController |
dict_keys_scope: Literal['term', 'entity'] = 'term', mimic_dofs: dict[str, tuple[str, float, float]] = {}, modifier: ActionModifierOptions \| None = None, offset: float \| dict[str, float] = 0.0, reference_source: ReferenceSource = ReferenceSource.ZERO, scale: float \| dict[str, float] \| None = None, scale_ratio: float \| None = None |
Joint velocity control through Genesis's built-in velocity mode. |
null_joint_action |
class NullJointAction |
— | Virtually fix the DoFs to the default positions. |
velocity_feedforward_pd_controller |
class VelocityFeedforwardPDController |
dict_keys_scope: Literal['term', 'entity'] = 'term', feed_forward_ratio: float = 1.0, mimic_dofs: dict[str, tuple[str, float, float]] = {}, modifier: ActionModifierOptions \| None = None, offset: float \| dict[str, float] = 0.0, reference_source: ReferenceSource = ReferenceSource.DEFAULT, scale: float \| dict[str, float] \| None = None, scale_ratio: float \| None = None, velocity_scale: float = 1.0 |
Explicit joint PD controller with velocity feedforward. |
eden.managers.terms.actions.task_space_actions¶
| Term | Form | Parameters | Summary |
|---|---|---|---|
differential_ik_controller |
class DifferentialIKController |
damping: float = 0.1, ee_link_name: str = '', ee_local_pos: tuple[float, float, float] = (0.0, 0.0, 0.0), max_dq: float \| None = None, orientation_scale: float \| list[float] = 0.5, orientation_weight: float = 1.0, position_scale: float \| list[float] = 0.05, position_weight: float = 1.0 |
Action term that maps task-space commands to joint targets via differential IK. |
ik_pose_controller |
class IKPoseController |
ee_link_name: str = 'gripper_link', ee_link_offset_pos: tuple[float, float, float] = (0.0, 0.0, 0.0), ee_link_offset_quat: tuple[float, float, float, float] = (1.0, 0.0, 0.0, 0.0), joint_limit_margin: float = 0.0, max_ik_position_error: float \| None = None, max_ik_rotation_error: float \| None = None, max_joint_delta: float \| None = None |
Absolute task-space pose controller: solve IK for a base-frame target pose each step. |
operational_space_controller |
class OperationalSpaceController |
action_clip: float \| tuple[float, ...] = 1.0, control_mode: Literal['position', 'pose'] = 'pose', damping_ratio: float \| tuple[float, ...] = 1.0, ee_link_name: str = '', ee_local_pos: tuple[float, float, float] = (0.0, 0.0, 0.0), ee_local_quat: tuple[float, float, float, float] = (1.0, 0.0, 0.0, 0.0), inertial_decoupling: Literal['none', 'full', 'position_orientation'] = 'none', kp: float \| tuple[float, ...] = 100.0, nullspace_damping_ratio: float = 1.0, nullspace_kp: float \| None = None, nullspace_reference: Literal['default', 'reset_pose'] = 'default', operational_inertia_damping: float = 1e-06, orientation_scale: float \| tuple[float, float, float] = 0.5, position_scale: float \| tuple[float, float, float] = 0.05 |
Operational-space control to a persistent relative position/pose target. |
eden.managers.terms.actions.welding_actions¶
| Term | Form | Parameters | Summary |
|---|---|---|---|
parallel_jaw_welding |
class ParallelJawWelding |
ee_link_name: str = '', grasp_force_threshold: float = 1.0, ignore_entities_name: list[str] = [], ignore_links_idx: list[int] = [], left_gripper_link_name: str = '', right_gripper_link_name: str = '' |
Weld the link a parallel-jaw gripper is squeezing to the end-effector link. |
suction_cup_welding |
class SuctionCupWelding |
ee_link_name: str = '', ignore_entities_name: list[str] = [], ignore_links_idx: list[int] = [] |
Collision-aware welding of an object link to the suction-cup end-effector link. |
observation terms¶
64 registered.
- Function terms:
ObsTerm.configure(func=observations.<term>, params={...})—from eden import observations,from eden.terms import ObsTerm - Class terms:
<ClassName>.configure(<field>=...)— import it from the module its section names - Every observation term also accepts:
backfill: bool = True,clip: tuple[float, float] \| None = None,flatten_history_dim: bool = True,history_length: int = 0,modifiers: list[eden.options.managers.modifiers.ObservationModifierOptions] = [],noise: eden.options.managers.modifiers.NoiseOptions \| None = None,scale: float \| list[float] = 1.0
eden.managers.terms.observations.camera¶
| Term | Form | Parameters | Summary |
|---|---|---|---|
depth_image |
function | camera_name: str |
— |
normal_image |
function | camera_name: str |
— |
pointcloud_image |
function | camera_name: str, world_frame: bool = False |
— |
rgb_image |
function | camera_name: str, normalize: bool = False, channels_first: bool = False |
RGB image from a camera, optionally CNN-ready. |
segmentation_image |
function | camera_name: str |
— |
eden.managers.terms.observations.common¶
| Term | Form | Parameters | Summary |
|---|---|---|---|
episode_phase |
function | centered: bool = False |
Return normalized episode time as a (num_envs, 1) tensor. |
generated_commands |
function | command_name: str |
— |
last_action |
function | action_name: str \| None = None |
— |
metric_observation |
class MetricObservation |
metric_name: str = '' |
Expose a MetricTerm's cached value as a (num_envs, 1) observation. |
eden.managers.terms.observations.contact¶
| Term | Form | Parameters | Summary |
|---|---|---|---|
contact_force_norm |
class ContactForceNorm |
entity_name: str = 'robot', links_name: list[str] = [] |
Per-link contact-force magnitude (Euclidean, world frame). |
grouped_contact_flags |
class GroupedContactFlags |
entity_name: str = 'robot', force_threshold: float \| None = None, links_name: list[str] = [], object_entity_name: str = 'object', object_links_name: list[str] = [] |
Per-(link, partner-link) boolean contact flags with a specific entity. |
motion_contact_flags |
function | entity_name: str, links_name: list[str] |
Demo per-(link, partner) contact flags at the current motion frame. |
motion_future_contact_label |
function | entity_name: str, frame_offsets: Sequence[int], links_name: list[str] \| None = None, flatten: bool = True |
Demo tri-state per-link contact labels (+1 contact / -1 no contact / 0 unlabelled) at future frames. |
eden.managers.terms.observations.locomotion¶
| Term | Form | Parameters | Summary |
|---|---|---|---|
base_height |
function | entity_name: str = 'robot', terrain_entity_name: str \| None = None, relative: bool = False |
Height of the entity's base above the ground, shape (num_envs, 1). |
cos_phase |
function | command_name: str |
Cosine of the gait phase for each foot. Shape (num_envs, num_feet). |
grid_scan_dots |
class GridScanDots |
clamp_offset_range: Vec2FType = (-5.0, 5.0), entity_name: str = 'robot', flatten_measured_points: bool = True, measured_points_x: list[float] = [-0.8, -0.7, -0.6, -0.5, -0.4, -0.3, -0.2, -0.1, 0.0, 0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8], measured_points_y: list[float] = [-0.5, -0.4, -0.3, -0.2, -0.1, 0.0, 0.1, 0.2, 0.3, 0.4, 0.5], offset_from_base: bool = True, terrain_entity_name: str = 'terrain' |
Height scan of the terrain at the given xy coordinates. |
projected_gravity |
class ProjectedGravity |
entity_name: str = 'robot' |
Gravity direction expressed in the entity's base frame. |
scaled_commands |
class ScaledCommands |
command_name: str = '', command_scale: list[float] = [] |
Command vector multiplied by a per-component scale; prefer the built-in scale=[...] modifier. |
sin_phase |
function | command_name: str |
Sine of the gait phase for each foot. Shape (num_envs, num_feet). |
velocity_tracking_error_integral |
class VelocityTrackingErrorIntegral |
command_name: str = 'velocity_command', entity_name: str = 'robot', max_abs: float = 1.0 |
Running integral of the base-velocity tracking error (N, 3). |
eden.managers.terms.observations.manipulation¶
| Term | Form | Parameters | Summary |
|---|---|---|---|
end_effector_pose |
class EndEffectorPose |
ee_link_name: str = '', entity_name: str = 'robot', frame: Literal['base', 'world'] = 'base', frame_correction_quat: tuple[float, float, float, float] = (1.0, 0.0, 0.0, 0.0), offset_pos: tuple[float, float, float] = (0.0, 0.0, 0.0), offset_quat: tuple[float, float, float, float] = (1.0, 0.0, 0.0, 0.0), rotation: RotationFormat = 'quat' |
End-effector pose [pos(3), rotation(k)] of a link, in the base or world frame. |
end_effector_to_object_distance |
class EndEffectorToObjectDistance |
entity_link_name: str \| None = None, entity_name: str = 'obj', frame: Literal['world', 'robot'] = 'robot', left_ee_link_name: str = 'left_gripper', right_ee_link_name: str = 'right_gripper', robot_name: str = 'robot' |
End-effector-to-object vector (N, 3). |
gripper_state |
class GripperState |
close_pos: float \| None = None, dofs_name: list[str] = [], entity_name: str = 'robot', normalize: GripperNormalize = 'raw', open_pos: float \| None = None |
Gripper DOF positions as raw values, openness or closedness. |
object_to_oracle_distance |
class ObjectToOracleDistance |
command_name: str = 'command', entity_link_name: str \| None = None, entity_name: str = 'obj', frame: Literal['world', 'robot'] = 'robot', robot_name: str = 'robot' |
Object-to-oracle vector (N, 3). |
eden.managers.terms.observations.privileged¶
| Term | Form | Parameters | Summary |
|---|---|---|---|
added_mass |
class AddedMass |
entity_name: str = 'robot', links_name: list[str] = [] |
Per-env mass shift (kg) of the named links vs nominal — 0 without mass DR. |
com_offset |
class ComOffset |
entity_name: str = 'robot', links_name: list[str] = [] |
Per-env COM shift (m) of the named links vs nominal — 0 without COM DR. |
foot_friction |
class FootFriction |
entity_name: str = 'robot', links_name: list[str] = [] |
Mean per-env friction ratio over the named links — 1.0 without friction DR. |
gain_scale |
class GainScale |
entity_name: str = 'robot' |
Per-DOF relative deviation of the realized PD gains from their defaults. |
motor_strength_scale |
class MotorStrengthScale |
action_term_name: str = 'dofs_pos_controller' |
Per-DOF deviation of the realized actuator torque-scale from its nominal. |
eden.managers.terms.observations.proprio¶
| Term | Form | Parameters | Summary |
|---|---|---|---|
base_ang_vel |
function | entity_name: str, frame: Literal['world', 'body'] = 'world' |
— |
base_lin_vel |
function | entity_name: str, frame: Literal['world', 'body'] = 'world' |
— |
base_pos |
function | entity_name: str, relative: bool = False |
Return the position of the entity's base link. |
base_quat |
function | entity_name: str, relative: bool = False |
Return the quaternion of the entity's base link. |
base_rpy |
function | entity_name: str, terms_idx: torch.Tensor \| None = None |
Return the roll, pitch, and yaw of the entity's base link. |
dofs_control_force |
class DofsControlForce |
dofs_name: list[str] \| None = None, entity_name: str = 'robot', terms_idx: list[int] \| None = None |
Control force the actuators applied on each of an entity's DOFs over the last physics step |
dofs_force |
class DofsForce |
dofs_name: list[str] \| None = None, entity_name: str = 'robot', terms_idx: list[int] \| None = None |
Generalized force the solver applied to each of an entity's DOFs (get_dofs_force). |
dofs_pos |
class DofsPos |
dofs_name: list[str] \| None = None, entity_name: str = 'robot', offset_from_default: bool = False, terms_idx: list[int] \| None = None |
Joint positions (angles; positions for linear actuators) of an entity's DOFs. |
dofs_vel |
class DofsVel |
dofs_name: list[str] \| None = None, entity_name: str = 'robot', terms_idx: list[int] \| None = None |
Joint velocities of an entity's DOFs. |
links_ang |
function | entity_name: str, ls_idx_local: torch.Tensor \| None = None |
— |
links_pos |
function | entity_name: str, ls_idx_local: torch.Tensor \| None = None |
— |
links_quat |
function | entity_name: str, ls_idx_local: torch.Tensor \| None = None |
— |
links_vel |
function | entity_name: str, ls_idx_local: torch.Tensor \| None = None |
— |
eden.managers.terms.observations.sensors¶
| Term | Form | Parameters | Summary |
|---|---|---|---|
sensor_read |
class SensorRead |
post_process_func: Callable \| None = None, read_ground_truth: bool = False, sensor_names: list[str] \| None = None |
Concatenate selected sensor readings into a single observation tensor. |
eden.managers.terms.observations.tracking¶
| Term | Form | Parameters | Summary |
|---|---|---|---|
entity_base_ori_b |
function | entity_name: str, anchor_entity_name: str, anchor_link_name: str, representation: Literal['rot6d', 'tan_norm'] = 'rot6d' |
Live base orientation of entity_name in another entity's live anchor-link frame, 6-D. Shape (N, 6). |
entity_base_pos_b |
function | entity_name: str, anchor_entity_name: str, anchor_link_name: str |
Live base position of entity_name in another entity's live anchor-link frame. Shape (N, 3). |
motion_base_pos_w |
function | entity_name: str |
World-frame motion-ref base position. Shape (num_envs, 3). |
motion_base_quat_w |
function | entity_name: str |
World-frame motion-ref base quaternion (wxyz). Shape (num_envs, 4). |
motion_dofs_pos |
function | entity_name: str, dofs_name: list[str] \| None = None |
Motion-ref qpos. Shape (num_envs, D). |
motion_dofs_vel |
function | entity_name: str, dofs_name: list[str] \| None = None |
Motion-ref qvel. Symmetric to motion_dofs_pos. |
motion_future_base_ori_b |
function | entity_name: str, anchor_entity_name: str, anchor_link_name: str, frame_offsets: Sequence[int], representation: Literal['rot6d', 'tan_norm'] = 'rot6d', flatten: bool = True |
Future-frame motion-ref base orientation of entity_name in another entity's live anchor-link frame. |
motion_future_base_pos_b |
function | entity_name: str, anchor_entity_name: str, anchor_link_name: str, frame_offsets: Sequence[int], flatten: bool = True |
Future-frame motion-ref base position of entity_name in another entity's live anchor-link frame. |
motion_future_base_pos_w |
function | entity_name: str, frame_offsets: Sequence[int], flatten: bool = True |
World-frame motion-ref base position at multiple buffer frames. |
motion_future_base_quat_w |
function | entity_name: str, frame_offsets: Sequence[int], flatten: bool = True |
World-frame motion-ref base quaternion (wxyz) at multiple buffer frames. |
motion_future_dofs_pos |
function | entity_name: str, frame_offsets: Sequence[int], dofs_name: list[str] \| None = None, flatten: bool = True |
Return motion-ref qpos at multiple future buffer frames. |
motion_future_dofs_vel |
function | entity_name: str, frame_offsets: Sequence[int], dofs_name: list[str] \| None = None, flatten: bool = True |
Return motion-ref qvel at multiple future buffer frames. |
motion_future_links_ori_b |
function | entity_name: str, links_name: list[str], anchor_link_name: str, frame_offsets: Sequence[int], representation: Literal['rot6d', 'tan_norm'] = 'rot6d', flatten: bool = True |
Return future-frame motion-ref link orientations in the robot's current anchor frame. |
motion_future_links_pos_b |
function | entity_name: str, links_name: list[str], anchor_link_name: str, frame_offsets: Sequence[int], flatten: bool = True |
Return future-frame motion-ref links_name positions in the robot's current anchor frame. |
motion_links_ori_b |
function | entity_name: str, links_name: list[str], anchor_link_name: str, flatten: bool = True |
Return motion-ref links_name orientations in the robot's anchor_link_name frame. |
motion_links_pos_b |
function | entity_name: str, links_name: list[str], anchor_link_name: str, flatten: bool = True |
Return motion-ref links_name positions in the robot's anchor_link_name frame. |
motion_links_pos_w |
function | entity_name: str, links_name: list[str], flatten: bool = True |
Return world-frame motion-ref link positions. |
motion_links_quat_w |
function | entity_name: str, links_name: list[str], flatten: bool = True |
Return world-frame motion-ref link quaternions (wxyz). |
motion_phase |
function | entity_name: str |
Normalized clip playback phase in [0, 1]. Shape (num_envs, 1). |
robot_body_ori_b |
function | entity_name: str, anchor_link_name: str, tracked_link_names: list[str], flatten: bool = True |
Return robot body orientations relative to its own anchor, as 2-column rotation matrices. |
robot_body_pos_b |
function | entity_name: str, anchor_link_name: str, tracked_link_names: list[str], flatten: bool = True |
Return robot body positions relative to its own anchor link. |
reward terms¶
46 registered.
- Function terms:
RewardTerm.configure(func=rewards.<term>, params={...})—from eden import rewards,from eden.terms import RewardTerm - Class terms:
<ClassName>.configure(<field>=...)— import it from the module its section names - Every reward term also accepts:
range_s: list[tuple[float, float]] \| None = None,tags: list[str] = [],weight: float = 1.0
eden.managers.terms.rewards.common¶
| Term | Form | Parameters | Summary |
|---|---|---|---|
action_l2 |
function | action_term_name: str \| None = None |
Penalize the actions using L2 squared kernel. |
action_rate_l2 |
function | action_term_name: str \| None = None |
Penalize the rate of change of the actions using L2 squared kernel. |
action_rate_l2_smooth |
class ActionRateL2Smooth |
action_term_name: str \| None = None |
Penalize the 1st and 2nd derivatives of the actions using an L2 squared kernel. |
dofs_acc_l2 |
class DofsAccL2 |
entity_name: str = 'robot' |
Penalize joint accelerations approximated as velocity differences. |
dofs_pos_limits |
function | entity_name: str |
Penalize joint positions if they cross the soft limits. |
dofs_torques |
function | entity_name: str |
Penalize joint torques: sqrt(sum(tau^2)) + sum(|tau|). |
dofs_vel_limits |
function | entity_name: str, max_vel: float \| torch.Tensor |
Quadratic hinge penalty on joint velocities exceeding a symmetric limit. |
metric_reward |
class MetricReward |
allow_cumulative: bool = False, metric_name: str = '' |
Use a MetricTerm's cached value as the reward. |
self_collision_cost |
function | entity_name: str |
Penalize self collisions. |
similar_to_default |
function | entity_name: str |
Penalize joint poses far away from the entity's default pose. |
task_success |
class TaskSuccess |
— | 1 on a step where every success metric holds. |
undesired_contacts |
class UndesiredContacts |
entity_name: str = 'robot', links_name: list[str] = [], threshold: float = 1.0 |
Penalty count of links whose net contact-force magnitude exceeds threshold. |
eden.managers.terms.rewards.contact¶
| Term | Form | Parameters | Summary |
|---|---|---|---|
motion_contact_chamfer_reward |
class MotionContactChamferReward |
empty_distance: float = 100.0, frame: Literal['world', 'object', 'wrist'] = 'world', hand_entity_name: str = 'robot', hand_links_name: list[str] = [], kernel: Literal['exp', 'sigmoid'] = 'exp', lookahead_index: int = 0, object_entity_name: str = 'object', object_links_name: list[str] = [], sigmoid_a: float = 100.0, sigmoid_b: float = 5.0, std: float = 0.18257418583505536, wrist_link_name: str \| None = None, zero_contact_mode: Literal['zero', 'one'] = 'zero' |
Exp/sigmoid reward on the policy-vs-demo contact Chamfer distance. |
motion_contact_distance_reward |
class MotionContactDistanceReward |
hand_entity_name: str = 'robot', hand_links_name: list[str] = [], object_entity_name: str = 'object', object_links_name: list[str] = [], std: float = 0.03 |
Exp-kernel reward on per-link contact-point distance in the object frame. |
motion_contact_match_reward |
class MotionContactMatchReward |
hand_entity_name: str = 'robot', hand_links_name: list[str] = [], object_entity_name: str = 'object', object_links_name: list[str] = [] |
Fraction of links whose contact state matches the demo's contact-ON links. |
eden.managers.terms.rewards.locomotion¶
| Term | Form | Parameters | Summary |
|---|---|---|---|
base_height_l2 |
function | entity_name: str, target_height: float, command_name: str \| None = None, zero_vel_penalty_scale: float = 1.0, zero_vel_threshold: float = 0.1, terrain_entity_name: str \| None = None, relative: bool = False |
L2 base-height penalty with optional zero-velocity amplification. |
body_ang_vel_xy_penalty |
class BodyAngVelXYPenalty |
entity_name: str = 'robot', link_name: str = '' |
Penalize body angular velocity in xy (allow z rotation). |
close_feet_penalty |
class CloseFeetPenalty |
entity_name: str = 'robot', feet_link_names: list[str] = [], threshold: float = 0.15 |
Penalize when feet are too close together in the xy plane. |
close_feet_yaw_projected_penalty |
class CloseFeetYawProjectedPenalty |
entity_name: str = 'robot', feet_link_names: list[str] = [], threshold: float = 0.05 |
Penalize feet closer than a lateral distance in the base's yaw frame. |
constant_base_height |
function | entity_name: str, target_height: float, terrain_entity_name: str \| None = None, relative: bool = False |
Penalize base height away from target — base_height_l2 without velocity gating. |
feet_air_time |
class FeetAirTime |
command_name: str = '', command_threshold: float = 0.1, contact_force_threshold: float = 2.0, entity_name: str = 'robot', feet_link_names: list[str] = [], target_s: float = 0.35 |
Legged-gym style feet air-time reward for aperiodic gaits. |
feet_clearance |
class FeetClearance |
command_name: str = '', command_threshold: float = 0.1, entity_name: str = 'robot', feet_link_names: list[str] = [], target_height: float = 0.0 |
Penalize deviation from target clearance height, weighted by foot xy velocity. |
feet_contact_balance_penalty |
class FeetContactBalancePenalty |
contact_force_threshold: float = 2.0, ema_alpha: float = 0.02, entity_name: str = 'robot', feet_link_names: list[str] = [] |
Penalize uneven foot usage (a limp) via the variance of per-foot contact duty. |
feet_orientation_penalty |
class FeetOrientationPenalty |
entity_name: str = 'robot', feet_link_names: list[str] = [] |
Penalize feet orientation deviation from flat (projected gravity in foot frame). |
feet_phase |
class FeetPhase |
entity_name: str = 'robot', feet_link_names: list[str] = [], gait_command_name: str = '', swing_height: float = 0.08, tracking_sigma: float = 0.25 |
Reward for tracking desired foot height based on gait phase. |
feet_slip |
class FeetSlip |
command_name: str = '', command_threshold: float = 0.1, contact_height_threshold: float = 0.05, entity_name: str = 'robot', feet_link_names: list[str] = [] |
Penalize foot sliding (xy velocity while in contact with ground). |
flat_orientation_l2 |
class FlatOrientationL2 |
entity_name: str = 'robot' |
Penalize non-flat base orientation (projected gravity deviation in xy). |
is_terminated_penalty |
function | — | Return 1 for terminated environments. |
lin_vel_z |
function | entity_name: str |
Penalize z axis base linear velocity. |
stumble_penalty |
class StumblePenalty |
entity_name: str = 'robot', feet_link_names: list[str] = [], horizontal_to_vertical_ratio: float = 4.0 |
Compute an indicator penalty for feet hitting vertical surfaces (e.g. stairs riser, walls). |
track_ang_vel_with_xy_penalty |
function | command_name: str, entity_name: str, std: float |
Track commanded angular velocity with additional xy angular velocity penalty. |
track_lin_vel_with_z_penalty |
function | command_name: str, entity_name: str, std: float |
Track commanded linear velocity with additional z-velocity penalty. |
tracking_ang_vel |
class TrackingAngVel |
command_name: str = '', entity_name: str = 'robot', sigma: float = 0.25 |
Tracking of angular velocity commands (yaw). |
tracking_lin_vel |
class TrackingLinVel |
command_name: str = '', entity_name: str = 'robot', sigma: float = 0.25 |
Tracking of linear velocity commands (xy axes). |
upright |
class Upright |
entity_name: str = 'robot', link_name: str = '', std: float = 1.0 |
Reward for keeping a body link upright. |
variable_posture |
class VariablePosture |
command_name: str = '', entity_name: str = 'robot', running_threshold: float = 1.5, std_running: dict[str, float] = {}, std_standing: dict[str, float] = {}, std_walking: dict[str, float] = {}, walking_threshold: float = 0.1 |
Speed-dependent posture reward. |
weighted_pose_penalty |
class WeightedPosePenalty |
entity_name: str = 'robot', pose_weights: list[float] = [] |
Penalize deviation from default pose with per-joint weights. |
eden.managers.terms.rewards.tracking¶
| Term | Form | Parameters | Summary |
|---|---|---|---|
motion_base_orientation_tracking_exp |
function | entity_name: str, std: float |
Exp-kernel reward on quat-error magnitude of the base vs motion ref (wxyz). |
motion_base_position_tracking_exp |
function | entity_name: str, std: float |
Exp-kernel reward on world-frame base position vs motion ref. |
motion_dofs_pos_tracking_exp |
function | entity_name: str, std: float, dofs_name: list[str] \| None = None, reduction: Literal['sum', 'per_dof_mean', 'mean'] = 'sum', frame_offsets: Sequence[int] = (0,) |
Exp-kernel reward on per-DOF qpos vs motion ref. |
motion_global_body_angular_velocity_error_exp |
class MotionGlobalBodyAngularVelocityErrorExp |
entity_name: str = 'robot', frame_offsets: tuple[int, ...] = (0,), links_name: list[str] = [], std: float = 0.1 |
— |
motion_global_body_linear_velocity_error_exp |
class MotionGlobalBodyLinearVelocityErrorExp |
entity_name: str = 'robot', frame_offsets: tuple[int, ...] = (0,), links_name: list[str] = [], std: float = 0.1 |
— |
motion_link_orientation_tracking_exp |
function | entity_name: str, links_name: list[str], std: float, exp_first: bool = True, frame_offsets: Sequence[int] = (0,) |
Exp-kernel reward on world-frame link orientations vs motion ref (wxyz). |
motion_link_position_tracking_exp |
function | entity_name: str, links_name: list[str], std: float, exp_first: bool = True, frame_offsets: Sequence[int] = (0,) |
Exp-kernel reward on world-frame link positions vs motion ref. |
motion_relative_body_orientation_error_exp |
class MotionRelativeBodyOrientationErrorExp |
anchor_link_name: str = 'torso_link', entity_name: str = 'robot', frame_offsets: tuple[int, ...] = (0,), links_name: list[str] = [], std: float = 0.1 |
Yaw-warped multi-link orientation tracking (exp kernel, link mean). |
motion_relative_body_position_error_exp |
class MotionRelativeBodyPositionErrorExp |
anchor_link_name: str = 'torso_link', entity_name: str = 'robot', frame_offsets: tuple[int, ...] = (0,), links_name: list[str] = [], std: float = 0.1 |
Yaw-warped multi-link position tracking (exp kernel, link mean). |
termination terms¶
34 registered.
- Function terms:
DoneTerm.configure(func=terminations.<term>, params={...})—from eden import terminations,from eden.terms import DoneTerm - Class terms:
<ClassName>.configure(<field>=...)— import it from the module its section names - Every termination term also accepts:
time_out: bool = False
eden.managers.terms.metrics.articulation¶
| Term | Form | Parameters | Summary |
|---|---|---|---|
joint_angle_at_target |
function | entity_name: str, joint_name: str, target_angle: float, threshold: float = 0.05 |
Check if a single DOF is within threshold of target_angle. |
eden.managers.terms.metrics.containment¶
| Term | Form | Parameters | Summary |
|---|---|---|---|
object_above_height |
function | entity_name: str, height: float, relative: bool = False |
Check if an entity's root z-position is above height. |
object_in_region |
function | entity_name: str, region_min: list[float], region_max: list[float], relative: bool = False |
Check if an entity's root position is inside an axis-aligned box. |
eden.managers.terms.metrics.grasp¶
| Term | Form | Parameters | Summary |
|---|---|---|---|
object_lifted |
function | entity_name: str, min_height: float |
Check if an entity has been lifted above min_height. |
eden.managers.terms.metrics.proximity¶
| Term | Form | Parameters | Summary |
|---|---|---|---|
entity_near_entity_xy |
function | entity_a_name: str, entity_b_name: str, threshold: float = 0.05 |
Check if two entities are within threshold horizontal (XY) distance. |
entity_near_target |
function | entity_name: str, target_pos: Vec3FType \| torch.Tensor, threshold: float = 0.05 |
Check if an entity is within threshold of a fixed world position. |
object_a_is_on_b |
function | entity_a_name: str, entity_b_name: str, xy_threshold: float = 0.03, height_threshold: float = 0.04, height_diff: float = 0.0 |
Check if object_a is on object_b by comparing height and xy distance of object origins. |
eden.managers.terms.terminations.common¶
| Term | Form | Parameters | Summary |
|---|---|---|---|
cumulative_reward_below_threshold |
function | reward_term: str, per_step_threshold: float, grace_steps: int = 0, check_interval: int = 1 |
Terminate envs whose running raw reward for reward_term falls below a threshold. |
dofs_pos_limit_exceeded |
function | entity_name: str, probability: float = 1.0 |
Terminate when any DOF position is outside the entity's soft position limits. |
dofs_torque_limit_exceeded |
function | entity_name: str, soft_ratio: float = 1.0, probability: float = 1.0 |
Terminate when any applied DOF torque exceeds soft_ratio * default_dofs_force_limits. |
dofs_vel_limit_exceeded |
function | entity_name: str, max_vel: float, probability: float = 1.0 |
Terminate when any DOF velocity exceeds max_vel in magnitude. |
illegal_contact |
function | entity_name: str, illegal_contact_entity_names: list[str] |
— |
illegal_link_contact |
class IllegalLinkContact |
entity_name: str = 'robot', force_threshold: float = 1.0, links_name: list[str] = [] |
Terminate when any of the named links carries a net contact force above force_threshold. |
metric_above |
class MetricAbove |
metric_name: str = '', threshold: float = 0.0 |
Terminate the envs in which the named metric's cached value is strictly above threshold. |
on_failure |
function | — | — |
on_metric_success |
class OnMetricSuccess |
metric_name: str = '' |
Terminate the envs in which the named metric term reports success this step. |
on_success |
function | — | — |
time_out |
function | — | — |
eden.managers.terms.terminations.locomotion¶
| Term | Form | Parameters | Summary |
|---|---|---|---|
base_orientation_pitch_greater_than |
function | entity_name: str, threshold: float |
Terminate when the base pitch exceeds threshold degrees. |
base_orientation_roll_greater_than |
function | entity_name: str, threshold: float |
Terminate when the base roll exceeds threshold degrees. |
root_height_below_minimum |
function | entity_name: str, minimum_height: float, terrain_entity_name: str \| None = None, relative: bool = False |
Terminate when the entity's base sinks below minimum_height above the ground. |
eden.managers.terms.terminations.manipulation¶
| Term | Form | Parameters | Summary |
|---|---|---|---|
object_out_of_reach |
function | entity_name: str, object_entity_name: str, object_link_name: str \| None = None, max_dist: float |
Terminate when the base is over max_dist from the object in xy. |
eden.managers.terms.terminations.tracking¶
| Term | Form | Parameters | Summary |
|---|---|---|---|
bad_anchor_ori |
function | entity_name: str = 'robot', anchor_link_name: str = 'torso_link', threshold: float = 0.01 |
Terminate when the anchor's projected-gravity z diverges from the motion ref's. |
bad_anchor_pos_z_only |
function | entity_name: str = 'robot', anchor_link_name: str = 'torso_link', threshold: float = 0.01, threshold_adaptive: bool = False, down_threshold: float = 0.0, root_height_threshold: float = 0.5 |
Terminate when anchor link's |z| error vs motion ref exceeds threshold. |
bad_base_ori |
function | entity_name: str, threshold: float |
Terminate when a free base's projected-gravity z diverges from the motion ref's by more than threshold. |
bad_motion_link_pos_z_only |
class BadMotionLinkPosZOnly |
anchor_link_name: str = 'torso_link', down_threshold: float = 0.0, entity_name: str = 'robot', links_name: list[str] = [], root_height_threshold: float = 0.5, threshold: float = 0.01, threshold_adaptive: bool = False |
Terminate when any tracked link's |z| error vs the motion ref exceeds threshold. |
motion_base_orientation_tracking_error_above |
function | entity_name: str, threshold: float |
Terminate when base quat-error magnitude (wxyz) exceeds threshold. |
motion_base_pose_tracking_break |
class MotionBasePoseTrackingBreak |
entity_name: str = 'object', pos_threshold: float = 0.1, rot_threshold: float = 1.0 |
Base-pose deviation gate vs the current motion frame. |
motion_base_position_tracking_error_above |
function | entity_name: str, threshold: float |
Terminate when world-frame base-position L2 error exceeds threshold. |
motion_dofs_pos_tracking_error_above |
function | entity_name: str, threshold: float, dofs_name: list[str] \| None = None, reduction: Literal['mean', 'max'] = 'max' |
Terminate when per-DOF |q − q_ref| reduction exceeds threshold. |
motion_ends |
function | entity_name: str |
Terminate when the motion buffer's current lookahead frame is invalid. |
motion_link_orientation_tracking_error_above |
function | entity_name: str, links_name: list[str], threshold: float, reduction: Literal['mean', 'max'] = 'max' |
Terminate when link quat-error reduction exceeds threshold. |
motion_link_position_tracking_error_above |
function | entity_name: str, links_name: list[str], threshold: float, reduction: Literal['mean', 'max'] = 'max' |
Terminate when link-position L2 error reduction exceeds threshold. |
eden.managers.terms.terminations.velocity_tracking¶
| Term | Form | Parameters | Summary |
|---|---|---|---|
fell_over |
function | entity_name: str, limit_angle: float |
Terminate when the robot leans too far from vertical. |
command terms¶
7 registered.
- Class terms:
<ClassName>.configure(<field>=...)— import it from the module its section names - Every command term also accepts:
debug_vis: bool = False,resampling_time_range: tuple[float, float] = None
eden.managers.terms.commands.gait¶
| Term | Form | Parameters | Summary |
|---|---|---|---|
gait_phase_command |
class GaitPhaseCommand |
gait_frequency: float = 1.25, num_feet: int = 2, phase_offset: float = 3.141592653589793, stand_phase_value: float = 3.141592653589793, stand_velocity_threshold: float = 0.01, velocity_command_name: str \| None = None |
Command generator that maintains a cyclic gait phase for each foot. |
eden.managers.terms.commands.mimic¶
| Term | Form | Parameters | Summary |
|---|---|---|---|
motion_command |
class MotionCommand |
adaptive_alpha: float = 0.001, adaptive_failure_rate_max_over_mean: float = 10.0, adaptive_kernel_size: int = 1, adaptive_lambda: float = 0.8, adaptive_uniform_ratio: float = 0.1, anchor_link_name: str = 'torso_link', base_joint_name: str \| None = None, base_link_name: str \| None = None, dofs_position_range: tuple[float, float] = (-0.1, 0.1), entity_name: str = '', ghost_entity_name: str = '', links_name: list[str] = ['pelvis', 'left_hip_roll_link', 'left_knee_link', 'left_ankle_roll_link', 'right_hip_roll_link', 'right_knee_link', 'right_ankle_roll_link', 'torso_link', 'left_shoulder_roll_link', 'left_elbow_link', 'left_wrist_yaw_link', 'right_shoulder_roll_link', 'right_elbow_link', 'right_wrist_yaw_link'], motion_file: str = 'motion.npz', motion_files: list[str] = [], pose_range: dict[str, tuple[float, float]] = {}, sampling_mode: Literal['adaptive', 'uniform', 'start'] = 'adaptive', velocity_range: dict[str, tuple[float, float]] = {} |
Motion command for mimicking one or more motion clips. |
eden.managers.terms.commands.oracle¶
| Term | Form | Parameters | Summary |
|---|---|---|---|
uniform_se3_command |
class UniformSE3Command |
pitch_range: tuple[float, float] = (-3.141592653589793, 3.141592653589793), roll_range: tuple[float, float] = (-3.141592653589793, 3.141592653589793), x_range: tuple[float, float] = (0.3, 0.5), y_range: tuple[float, float] = (-0.2, 0.2), yaw_range: tuple[float, float] = (-3.141592653589793, 3.141592653589793), z_range: tuple[float, float] = (0.2, 0.4) |
Command that samples SE(3) translation and rotation command. |
uniform_t3_command |
class UniformT3Command |
marker_color: tuple[float, float, float, float] = (0.1, 0.9, 0.1, 0.85), marker_entity_name: str = '', marker_frame_entity: str = '', marker_radius: float = 0.03, x_range: tuple[float, float] = (0.3, 0.5), y_range: tuple[float, float] = (-0.2, 0.2), z_range: tuple[float, float] = (0.2, 0.4) |
Command that samples T(3) translation command. |
eden.managers.terms.commands.velocity¶
| Term | Form | Parameters | Summary |
|---|---|---|---|
constant_velocity_command |
class ConstantVelocityCommand |
ang_vel_z_range: tuple[float, float] = (-1.0, 1.0), command_value: tuple[float, float, float] = (0.0, 0.0, 0.0), entity_name: str = '', lin_vel_x_range: tuple[float, float] = (-1.0, 1.0), lin_vel_y_range: tuple[float, float] = (-1.0, 1.0) |
SE(2) velocity command held at a fixed value instead of resampled. |
operator_velocity_command |
class OperatorVelocityCommand |
ang_vel_z_range: tuple[float, float] = (-1.0, 1.0), command_value: tuple[float, float, float] = (0.0, 0.0, 0.0), device_name: str = 'keyboard', device_options: dict = {}, entity_name: str = '', lin_vel_x_range: tuple[float, float] = (-1.0, 1.0), lin_vel_y_range: tuple[float, float] = (-1.0, 1.0) |
SE(2) velocity command driven live by a human, from a keyboard or a gamepad. |
uniform_velocity_command |
class UniformVelocityCommand |
ang_vel_z_range: tuple[float, float] = (0.0, 0.0), entity_name: str = '', heading_command: bool = False, heading_control_stiffness: float = 1.0, heading_range: tuple[float, float] \| None = None, lin_vel_x_range: tuple[float, float] = (0.0, 0.0), lin_vel_y_range: tuple[float, float] = (0.0, 0.0), rel_heading_envs: float = 1.0, rel_standing_envs: float = 0.0 |
SE(2) velocity command sampled from a uniform distribution. |
event terms¶
32 registered.
- Function terms:
EventTerm.configure(func=events.<term>, params={...})—from eden import events,from eden.terms import EventTerm - Class terms:
<ClassName>.configure(<field>=...)— import it from the module its section names - Every event term also accepts:
interval_range_s: tuple[float, float] \| None = None,is_global_time: bool = False,min_step_count_between_reset: int = 0,mode: EventMode = EventMode.RESET,priority: int = 0
eden.managers.terms.events.domain_rand¶
| Term | Form | Parameters | Requires | Summary |
|---|---|---|---|---|
apply_external_force |
class ApplyExternalForce |
entity_name: str = 'robot', force_x_range: Vec2FType = (0.0, 0.0), force_y_range: Vec2FType = (0.0, 0.0), force_z_range: Vec2FType = (0.0, 0.0), links_name: list[str] = [], local: bool = False, prob: float = 1.0, ref: str = 'link_origin' |
— | Apply a randomized external force on specified links. |
apply_external_torque |
class ApplyExternalTorque |
entity_name: str = 'robot', links_name: list[str] = [], local: bool = False, prob: float = 1.0, ref: str = 'link_origin', torque_x_range: Vec2FType = (0.0, 0.0), torque_y_range: Vec2FType = (0.0, 0.0), torque_z_range: Vec2FType = (0.0, 0.0) |
— | Apply a randomized external torque on specified links. |
erfi50 |
class ERFI50 |
action_term_name: str = '', erfi_ratio: float = 0.5, lower_bound: float = -0.7777777777777778, upper_bound: float = 0.7777777777777778 |
— | ERFI-50 noise: 50% Random Actuation Offset (RAO) + 50% Random Force Injection (RFI). |
push_by_velocity |
class PushByVelocity |
base_joint_name: str \| None = None, entity_name: str = 'robot', velocity_range: dict[str, Vec2FType] = {} |
— | Periodically add a random velocity to a free base. |
push_set_planar_velocity |
class PushSetPlanarVelocity |
base_joint_name: str \| None = None, entity_name: str = 'robot', velocity_xy_range: Vec2FType = (-0.5, 0.5) |
— | Periodically SET the base planar velocity to a random value. |
randomize_com_shift |
class RandomizeComShift |
com_shift_x_range: Vec2FType = (-0.01, 0.01), com_shift_y_range: Vec2FType = (-0.01, 0.01), com_shift_z_range: Vec2FType = (-0.01, 0.01), entity_name: str = 'robot', links_name: list[str] = [] |
EnvOptions(batch_links_info=True) |
Offset the named links' centres of mass, per env. |
randomize_constant_torque_kick |
class RandomizeConstantTorqueKick |
action_term_name: str = '', apply_as_ratio: bool = False, entity_name: str = 'robot', torque_kick_range: Vec2FType = (0.0, 0.01) |
— | Randomize the torque magnitude of a ConstantTorqueKick action modifier. |
randomize_deadband_epsilon |
class RandomizeDeadbandEpsilon |
action_term_name: str = '', apply_as_ratio: bool = False, deadband_epsilon_range: Vec2FType = (0.0, 0.01), entity_name: str = 'robot' |
— | Randomize the position-error threshold of a Deadband action modifier. |
randomize_dofs_pos_offset |
class RandomizeDofsPosOffset |
action_term_name: str \| list[str] \| None = None, dofs_pos_range: Vec2FType = (-0.01745, 0.01745), entity_name: str = '' |
— | Per-env joint-position offset on joint position controllers (encoder bias). |
randomize_friction_ratio |
class RandomizeFrictionRatio |
entity_name: str = 'robot', friction_range: Vec2FType = (0.3, 1.2), links_name: list[str] = [] |
— | Randomize sliding friction on links_name to absolute values, not a scale. |
randomize_gear_backlash |
class RandomizeGearBacklash |
action_term_name: str = '', apply_as_ratio: bool = False, backlash_range: Vec2FType = (0.0, 0.01), entity_name: str = 'robot' |
— | Randomize the one-sided target offset of a GearBacklash action modifier. |
randomize_kp_kd_gains |
class RandomizeKpKdGains |
action_term_name: str \| None = None, entity_name: str = 'robot', kd_range: Vec2FType = (0.9, 1.1), kp_range: Vec2FType = (0.9, 1.1) |
EnvOptions(batch_dofs_info=True) |
Scale an entity's joint PD gains by a random factor. |
randomize_link_mass_scale |
class RandomizeLinkMassScale |
entity_name: str = 'robot', links_name: list[str] = [], mass_scale_range: Vec2FType = (0.9, 1.1) |
EnvOptions(batch_links_info=True) |
Multiplicative per-link mass randomization. |
randomize_mass_shift |
class RandomizeMassShift |
entity_name: str = 'robot', links_name: list[str] = [], mass_shift_range: Vec2FType = (-1.0, 3.0) |
EnvOptions(batch_links_info=True) |
Add a per-env offset to the named links' masses. |
randomize_motor_strength |
class RandomizeMotorStrength |
action_term_name: str = '', entity_name: str = 'robot', motor_strength_range: Vec2FType = (0.9, 1.1) |
— | Randomize a MotorStrength action modifier's scalar (default factor 0.9 to 1.1). |
randomize_startup_dofs_pos |
class RandomizeStartupDofsPos |
apply_as_ratio: bool = False, dofs_pos_range: Vec2FType = (-0.01745, 0.01745), entity_name: str = 'robot' |
— | Randomize the absolute joint positions of an entity's DOFs (default mode: reset). |
randomize_startup_dofs_pos_bias |
class RandomizeStartupDofsPosBias |
action_terms_name: list[str] = [], dofs_pos_range: Vec2FType = (-0.01745, 0.01745), entity_name: str = 'robot' |
— | Bake a per-env joint-zero bias into entity.default_dofs_pos at startup. |
randomize_torque_noise |
class RandomizeTorqueNoise |
action_term_name: str = '', rfi_scale: float = 0.5 |
— | Residual Force Injection (RFI) — adds random torque noise to actuated joints. |
set_random_dofs_pos |
class SetRandomDofsPos |
apply_as_ratio: bool = True, dofs_pos_range: Vec2FType = (0.0, 0.2), entity_name: str = 'robot' |
— | Set the joint positions of an entity's DOFs to a random position (default mode: reset). |
eden.managers.terms.events.motion¶
| Term | Form | Parameters | Summary |
|---|---|---|---|
object_reference_state_initialization |
class ObjectReferenceStateInitialization |
depenetration_window_s: float = 0.1, entity_name: str = 'object', max_depenetration_velocity: float \| None = None, xy_range: float = 0.0 |
On reset, set a free rigid object from the motion reference. |
reference_state_initialization |
class ReferenceStateInitialization |
base_joint_name: str \| None = None, depenetration_window_s: float = 0.1, dofs_position_range: tuple[float, float] = (-0.1, 0.1), entity_name: str = 'robot', max_depenetration_velocity: float \| None = None, overall_noise_scale: float = 1.0, pose_range: dict[str, tuple[float, float]] = {}, velocity_range: dict[str, tuple[float, float]] = {} |
On reset, initialise robot state from the motion reference (RSI). |
eden.managers.terms.events.placement¶
| Term | Form | Parameters | Summary |
|---|---|---|---|
place_constant_xy |
function | entity_name: str, support_entity_name: str, pos_xy: tuple[float, float], frame: Literal['world', 'local'] = 'world', support_idx: int \| None = None |
— |
place_from_layouts |
class PlaceFromLayouts |
layouts: list[dict[str, tuple[float, float, float]]] = [], support_entity_name: str = 'plane' |
Each reset env draws one of a fixed list of layouts and places every entity the layout names. |
place_gaussian |
class PlaceGaussian |
entity_name: str = '', mu_x: float = 0.0, mu_y: float = 0.0, support_entity_name: str = '', var_x: float = 0.1, var_y: float = 0.1 |
Event term that places an entity on a support surface via Gaussian-weighted sampling. |
place_range_xy |
function | entity_name: str, support_entity_name: str, range_x: tuple[float, float], range_y: tuple[float, float], range_roll: tuple[float, float] = (0, 0), range_pitch: tuple[float, float] = (0, 0), range_yaw: tuple[float, float] = (0, 0), frame: Literal['world', 'local'] = 'world', support_idx: int \| None = None |
— |
place_uniform |
function | entity_name: str, support_entity_name: str, samples_per_area: int = 100 |
— |
eden.managers.terms.events.resets¶
| Term | Form | Parameters | Summary |
|---|---|---|---|
reset_base_state_uniform |
function | entity_name: str, pos_x_range: Vec2FType = (-0.5, 0.5), pos_y_range: Vec2FType = (-0.5, 0.5), pos_z_range: Vec2FType = (0.0, 0.0), roll_range: Vec2FType = (0.0, 0.0), pitch_range: Vec2FType = (0.0, 0.0), yaw_range: Vec2FType = (-3.14, 3.14) |
Reset the base to its default pose, offset and rotated at random. |
reset_dofs_by_offset |
function | entity_name: str, dofs_pos_range: Vec2FType = (-0.1, 0.1), dofs_vel_range: Vec2FType \| None = None |
Reset DOFs to default + U(offset), clamped to soft limits. |
reset_dofs_by_scale |
function | entity_name: str, dofs_pos_scale_range: Vec2FType = (0.95, 1.05) |
Reset DOFs to default * U(scale) per env/DOF; velocities to 0. |
reset_dofs_by_scale_and_offset |
function | entity_name: str, dofs_scale_range: Vec2FType = (0.8, 1.2), dofs_offset_range: Vec2FType = (-0.1, 0.1) |
Reset DOFs to default * U(scale) + U(offset); velocities to 0. |
eden.managers.terms.events.solver¶
| Term | Form | Parameters | Summary |
|---|---|---|---|
set_contact_sol_params |
function | sol_params: tuple[float, ...], entity_links: dict[str, list[str] \| None] |
Set constraint-solver (solref/solimp) parameters on selected entity geoms. |
eden.managers.terms.events.state_buffer¶
| Term | Form | Parameters | Summary |
|---|---|---|---|
reset_from_state_buffer |
class ResetFromStateBuffer |
category_weights: dict[str, float] \| None = None, path: str \| None = None, sampler: str \| None = None |
Restore each resetting env to one stored row of a reset-state buffer file. |
curriculum terms¶
6 registered.
- Class terms:
<ClassName>.configure(<field>=...)— import it from the module its section names
eden.managers.terms.curricula.locomotion¶
| Term | Form | Parameters | Summary |
|---|---|---|---|
average_episode_length_tracker |
class AverageEpisodeLengthTracker |
num_compute_average_epl: int = 1000 |
Track the running mean of episode length. |
eden.managers.terms.curricula.motion¶
| Term | Form | Parameters | Summary |
|---|---|---|---|
motion_base_pose_threshold_curriculum |
class MotionBasePoseThresholdCurriculum |
entity_name: str = 'object', pos_threshold_max: float = 0.1, pos_threshold_min: float = 0.05, rot_threshold_max: float = 1.0, rot_threshold_min: float = 0.5, success_ema_alpha: float = 0.05, success_rate_high: float = 0.999, success_rate_low: float = 0.9, termination_term_name: str = 'object_pose_break' |
Tighten a MotionBasePoseTrackingBreak gate as success rises. |
eden.managers.terms.curricula.rewards¶
| Term | Form | Parameters | Summary |
|---|---|---|---|
penalty_curriculum |
class PenaltyCurriculum |
degree: float = 0.00025, initial_scale: float = 0.1, level_down_threshold: float = 150.0, level_up_threshold: float = 750.0, max_scale: float = 1.0, min_scale: float = 0.0, num_episode_average: int = 1000, reward_term_names: list[str] = [], reward_term_tags: list[str] = [], tracker_name: str \| None = None |
Curriculum that gradually scales reward weights for a set of reward terms. |
stage_reward_weight_curriculum |
class StageRewardWeightCurriculum |
reward_term_name: str = '', weight_stages: list[tuple[int, float]] = [] |
Curriculum that sets a reward term's weight at given training steps. |
eden.managers.terms.curricula.success_guided¶
| Term | Form | Parameters | Summary |
|---|---|---|---|
success_guided_sampling |
class SuccessGuidedSampling |
concentration: float = 5.0, floor: float = 1e-08, history: int = 100, success_term: str \| None = None, target: float = 0.66, temperature: float = 2.0 |
Draw each resetting env's reset configuration with probability peaked at a target success rate. |
eden.managers.terms.curricula.velocity¶
| Term | Form | Parameters | Summary |
|---|---|---|---|
velocity_command_curriculum |
class VelocityCommandCurriculum |
command_name: str = 'velocity_command', velocity_stages: list[dict] = [] |
Curriculum that progressively expands velocity command ranges. |
metric terms¶
20 registered.
- Function terms:
MetricTerm.configure(func=metrics.<term>, params={...})—from eden import metrics,from eden.terms import MetricTerm - Class terms:
<ClassName>.configure(<field>=...)— import it from the module its section names - Every metric term also accepts:
contributes_to_success: bool = True,direction: MetricDirection = MetricDirection.HIB,is_cumulative: bool = False,metric_mode: MetricMode = MetricMode.INTERVAL,success_threshold: float = 1.0
eden.managers.terms.metrics.articulation¶
| Term | Form | Parameters | Summary |
|---|---|---|---|
joint_angle_at_target |
function | entity_name: str, joint_name: str, target_angle: float, threshold: float = 0.05 |
Check if a single DOF is within threshold of target_angle. |
eden.managers.terms.metrics.boolean¶
| Term | Form | Parameters | Summary |
|---|---|---|---|
metric_term_and |
class MetricTermAND |
terms: list[MetricTermOptions] = [] |
Metric term that returns the element-wise minimum of its child terms. |
metric_term_not |
class MetricTermNOT |
term: MetricTermOptions = None |
Metric term that inverts a single child term (1.0 - value). |
metric_term_or |
class MetricTermOR |
terms: list[MetricTermOptions] = [] |
Metric term that returns the element-wise maximum of its child terms. |
eden.managers.terms.metrics.containment¶
| Term | Form | Parameters | Summary |
|---|---|---|---|
object_above_height |
function | entity_name: str, height: float, relative: bool = False |
Check if an entity's root z-position is above height. |
object_bottom_above_height |
function | entity_name: str, height: float |
Lowest point of the entity above height. |
object_in_region |
function | entity_name: str, region_min: list[float], region_max: list[float], relative: bool = False |
Check if an entity's root position is inside an axis-aligned box. |
eden.managers.terms.metrics.error¶
| Term | Form | Parameters | Summary |
|---|---|---|---|
error_vel_xy |
function | command_name: str = 'velocity' |
— |
error_vel_yaw |
function | command_name: str = 'velocity' |
— |
eden.managers.terms.metrics.grasp¶
| Term | Form | Parameters | Summary |
|---|---|---|---|
is_grasping |
class IsGrasping |
force_threshold: float = 1.0, left_gripper_link_name: str = 'left_gripper_pad', right_gripper_link_name: str = 'right_gripper_pad', robot_name: str = 'robot' |
Detect a parallel-jaw grasp via contact force alignment. |
object_lifted |
function | entity_name: str, min_height: float |
Check if an entity has been lifted above min_height. |
eden.managers.terms.metrics.proximity¶
| Term | Form | Parameters | Summary |
|---|---|---|---|
ee_near_entity |
class EeNearEntity |
ee_link_names: list[str] = [], entity_name: str = 'obj', robot_name: str = 'robot', threshold: float = 0.05 |
Check if the mean end-effector position is within threshold of a target entity. |
entity_distance |
function | entity_a_name: str, entity_b_name: str |
Distance between two entity root positions. |
entity_distance_xy |
function | entity_a_name: str, entity_b_name: str |
Horizontal (XY) distance between two entity root positions. |
entity_near_entity_xy |
function | entity_a_name: str, entity_b_name: str, threshold: float = 0.05 |
Check if two entities are within threshold horizontal (XY) distance. |
entity_near_target |
function | entity_name: str, target_pos: Vec3FType \| torch.Tensor, threshold: float = 0.05 |
Check if an entity is within threshold of a fixed world position. |
object_a_is_on_b |
function | entity_a_name: str, entity_b_name: str, xy_threshold: float = 0.03, height_threshold: float = 0.04, height_diff: float = 0.0 |
Check if object_a is on object_b by comparing height and xy distance of object origins. |
object_a_within_b_xy |
function | entity_a_name: str, entity_b_name: str, min_fraction: float = 0.8 |
min_fraction of entity_a's footprint lies over entity_b's. |
eden.managers.terms.metrics.sequence¶
| Term | Form | Parameters | Summary |
|---|---|---|---|
rubric_metric_term |
class RubricMetricTerm |
criteria: list[CriterionOptions] = [] |
Fraction of rubric criteria met, each after its dependencies. |
sequential_metric_term |
class SequentialMetricTerm |
allow_skip: bool = False, phases: list[PhaseOptions] = [] |
Metric that tracks ordered sub-goals (phases). |
recorder terms¶
7 registered.
- Class terms:
<ClassName>.configure(<field>=...)— import it from the module its section names
eden.managers.terms.recorders.actions¶
| Term | Form | Parameters | Summary |
|---|---|---|---|
action_recorder |
class ActionRecorder |
— | — |
eden.managers.terms.recorders.observations¶
| Term | Form | Parameters | Summary |
|---|---|---|---|
observation_recorder |
class ObservationRecorder |
groups: list[str] \| None = None |
Record observation groups at the start of each step, as obs/<group>. |
eden.managers.terms.recorders.rl¶
| Term | Form | Parameters | Summary |
|---|---|---|---|
rl_step_recorder |
class RLStepRecorder |
include_done: bool = True, include_reward: bool = True, include_terminated: bool = True, include_timeout: bool = True, include_timestamp: bool = True |
Record per-step RL buffers (reward, done, terminated, timeout, timestamp). |
eden.managers.terms.recorders.sensors¶
| Term | Form | Parameters | Summary |
|---|---|---|---|
sensor_recorder |
class SensorRecorder |
record_post_reset_snapshot: bool = True, use_ground_truth: bool = False |
Record sensor outputs during simulation. |
eden.managers.terms.recorders.states¶
| Term | Form | Parameters | Summary |
|---|---|---|---|
initial_state_recorder |
class InitialStateRecorder |
include_dofs_vel: bool = True, include_pos_quat: bool = True, include_qpos: bool = True |
Record per-episode initial entity states right after reset. |
state_recorder |
class StateRecorder |
entity_name: str \| list[str] = 'robot', include_dofs_vel: bool = True, include_pos_quat: bool = True, include_qpos: bool = True |
Record the state of the environment at the beginning of each step. |
eden.managers.terms.recorders.sysid¶
| Term | Form | Parameters | Summary |
|---|---|---|---|
sys_id_recorder |
class SysIDRecorder |
entity_name: str = 'robot', include_base: bool = True, include_torque: bool = True |
Record the proprioceptive trace needed to rebuild a sysid Trajectory. |
motion terms¶
1 registered.
- Class terms:
<ClassName>.configure(<field>=...)— import it from the module its section names - Every motion term also accepts:
adaptive_alpha: float = 0.001,adaptive_failure_rate_max_over_mean: float = 10.0,adaptive_kernel_size: int = 1,adaptive_lambda: float = 0.8,adaptive_motion_weights: bool = False,adaptive_sampling: bool = False,adaptive_uniform_ratio: float = 0.1,compute_per_motion_metrics: bool = False,dataset_options: DatasetOptions \| None = None,entities_map: dict[str, str] = {},env_motion_groups: MotionGroupOptions \| None = None,env_starting_stub_sampling_strategy: Literal['independent', 'concat_motion_bins'] = 'independent',freeze_at_timestep_zero_prob: float = 0.0,log_motion_id_to_filename: bool = False,log_per_motion_metrics: bool = False,metric_anchor_link_name: str \| None = None,motion_bin_length_s: float \| None = None,motion_start_from_middle_range: tuple[float, float] \| list[float] = (0.0, 0.0),motion_weight_failure_amplify: float = 2.0,motion_weight_failure_rate_max_over_mean: float = 200.0,motion_weight_floor: float = 0.001,motion_weight_success_discount: float = 0.999,motion_weight_uniform_mix: float = 0.0,motion_weight_update_every_n_iters: int = 1,motion_weight_update_mode: Literal['compound', 'snapshot'] = 'snapshot',motion_weights: str \| list[float] \| None = None,start_at_timestep_zero_prob: float = 0.0,target_dofs_name: dict[str, str \| list[str]] = {},target_links_name: dict[str, str \| list[str]] = {}
eden.managers.motion_manager¶
| Term | Form | Parameters | Summary |
|---|---|---|---|
motion_term |
class MotionTerm |
— | — |
noise_model terms¶
3 registered.
- Class terms:
<ClassName>.configure(<field>=...)— import it from the module its section names - Every noise_model term also accepts:
operation: NoiseOperation = NoiseOperation.ADD
eden.managers.modifiers.observations.noise¶
| Term | Form | Parameters | Summary |
|---|---|---|---|
constant_noise |
class ConstantNoise |
bias: torch.Tensor \| float = 0.0 |
— |
gaussian_noise |
class GaussianNoise |
mean: torch.Tensor \| float = 0.0, std: torch.Tensor \| float = 1.0 |
— |
uniform_noise |
class UniformNoise |
n_max: torch.Tensor \| float = 1.0, n_min: torch.Tensor \| float = -1.0 |
— |
observation_modifier terms¶
2 registered.
- Class terms:
<ClassName>.configure(<field>=...)— import it from the module its section names
eden.managers.modifiers.observations.temporal¶
| Term | Form | Parameters | Summary |
|---|---|---|---|
exponential_moving_average |
class ExponentialMovingAverage |
alpha: float \| None = None, backfill: bool = True |
Exponential moving average, updated once per control step. |
observation_delay |
class ObservationDelay |
backfill: bool = True, control_steps: int \| None = None |
Delivers the frame the term produced control_steps control steps earlier. |
action_modifier terms¶
10 registered.
- Class terms:
<ClassName>.configure(<field>=...)— import it from the module its section names
eden.managers.modifiers.actions.actuators¶
| Term | Form | Parameters | Summary |
|---|---|---|---|
action_delay |
class ActionDelay |
delay_range_s: tuple[float, float] \| None = None, delay_range_steps: tuple[int, int] \| None = None |
Delays the command the actuator acts on by a random number of physics steps, drawn per episode. |
compose |
class Compose |
modifiers: tuple[ActionModifierOptions, ...] \| list[ActionModifierOptions] = () |
Chains multiple action modifiers in sequence. |
constant_torque_kick |
class ConstantTorqueKick |
activation_epsilon: LaxFArrayType = 0.0, direction_source: str = 'pos_err', torque_kick: LaxFArrayType = 0.0 |
Adds a flat directional torque on top of computed control torque. |
deadband |
class Deadband |
deadband_epsilon: LaxFArrayType = 0.0 |
Zeroes PD control torque inside a position-error deadband. |
effort_clip |
class EffortClip |
braking_torque_limit: LaxFArrayType \| None = None, driving_torque_limit: LaxFArrayType \| None = None, full_torque_speed: LaxFArrayType \| None = None, no_load_speed: LaxFArrayType \| None = None |
Clips torques to motor torque-speed (T-N) curve limits. |
envelope_clip |
class EnvelopeClip |
braking_torque_limit: LaxFArrayType \| None = None, driving_torque_limit: LaxFArrayType \| None = None, full_torque_speed: LaxFArrayType \| None = None, no_load_speed: LaxFArrayType \| None = None |
Clips target positions so PD torques stay within the motor torque-speed envelope. |
friction_model |
class FrictionModel |
dynamic_friction: LaxFArrayType \| None = None, friction_activation_vel: LaxFArrayType \| None = None, friction_offset: LaxFArrayType = 0.0, static_friction: LaxFArrayType \| None = None |
Applies tanh-based static + viscous dynamic friction to torques. |
gear_backlash |
class GearBacklash |
backlash: LaxFArrayType = 0.0, initial_side: LaxFArrayType = 0.0, reversal_threshold: LaxFArrayType = 0.0, takeup_rate: LaxFArrayType = 1.0 |
Adds direction-dependent gear slop to position targets before PD control. |
motor_strength |
class MotorStrength |
motor_strength: LaxFArrayType = 1.0 |
Scales control torques by a motor strength multiplier. |
torque_offset |
class TorqueOffset |
torque_offset: LaxFArrayType = 0.0 |
Adds a constant offset to the control torques. |