unilab.envs.manager_based_rl_env¶
Community-compatible Manager-Based lifecycle with a Torch public contract.
Functions
|
Construct the generic Registry-owned Manager-Based production runtime. |
Classes
alias of |
|
alias of |
|
Manager-Based runtime with a Torch public lifecycle. |
|
Configuration for the Manager-Based Torch environment. |
- unilab.envs.manager_based_rl_env.ManagerBasedRLEnv¶
alias of
ManagerBasedRlEnv
- unilab.envs.manager_based_rl_env.ManagerBasedRLEnvCfg¶
alias of
ManagerBasedRlEnvCfg
- class unilab.envs.manager_based_rl_env.ManagerBasedRlEnv[source]¶
Bases:
TorchEnvManager-Based runtime with a Torch public lifecycle.
P1 keeps Manager terms, Entity state, reset transactions, and recorder scratch on an explicit NumPy host boundary. Public action/reset inputs, backend control, state, observations, reward, termination, truncation, and final observations are Torch tensors. This is a migration boundary, not a durable NumPy fallback: unsupported tensor capabilities fail closed.
- Parameters:
cfg (
ManagerBasedRlEnvCfg)backend (
SimBackend)num_envs (
int)
- is_vector_env = True¶
- event_manager: EventManager¶
- command_manager: CommandManager | NullCommandManager¶
- action_manager: ActionManager¶
- observation_manager: ObservationManager¶
- termination_manager: TerminationManager¶
- reward_manager: RewardManager¶
- curriculum_manager: CurriculumManager | NullCurriculumManager¶
- metrics_manager: MetricsManager | NullMetricsManager¶
- recorder_manager: RecorderManager | NullRecorderManager¶
- __init__(cfg, backend, num_envs)[source]¶
- Parameters:
cfg (
ManagerBasedRlEnvCfg)backend (
SimBackend)num_envs (
int)
- tensor_reset_pose_bounds: torch.Tensor | None¶
- tensor_reset_velocity_bounds: torch.Tensor | None¶
- tensor_reset_bounds_key: tuple[Any, ...] | None¶
- obs_buf: dict[str, torch.Tensor]¶
- extras: dict[str, Any]¶
- event_term_mask_buffer: ResetMaskBuffer¶
- property unwrapped: ManagerBasedRlEnv¶
- get_playback_debug_overlays()[source]¶
Aggregate playback overlays from command terms that provide one.
Terms opt in by implementing
playback_debug_overlay_getter(), which returns a per-frame getter following theunisim.backend.base.DebugOverlayGettercontract. The returned getter merges primitives per env across all providing terms. ReturnsNonewhen no term provides an overlay.- Return type:
DebugOverlayGetter | None
- step(actions)[source]¶
Step the environment with owner-declared action carrier.
The abstract base stays runtime-neutral. Concrete owners validate the declared carrier; the Torch lifecycle accepts Torch tensors.
- Parameters:
actions (
Tensor)- Return type:
- apply_action(actions, state)[source]¶
Transform an action tensor into a backend control tensor.
- Parameters:
actions (
Tensor)state (
TorchEnvState)
- Return type:
- update_state(state)[source]¶
Compute tensor observations, reward, and termination state.
- Parameters:
state (
TorchEnvState)- Return type:
- property algo_capabilities: Any¶
Expose cold-path metadata to algorithm owners.
Per-dimension action bounds and action-order joint names are reserved fields. They intentionally stay unset until an algorithm consumes them; the Manager-Based action owner, not the RL runtime, owns their source.
- reset(env_ids=None, *, seed=None, options=None)[source]¶
Execute the selected-row (
env_ids) Manager reset lifecycle.
- set_episode_length_buf(values)[source]¶
Overwrite per-env episode counters (cold path, runner-init only).
episode_length_bufmirrorsstate.info["steps"]: each step writesinfo["steps"] + 1into the buffer andreset()zeroes both, so a direct assignment must update the two together. RL runners (e.g. RSL-RLinit_at_random_ep_len) call this once before learning starts to stagger initial episode lengths across envs.
- class unilab.envs.manager_based_rl_env.ManagerBasedRlEnvCfg[source]¶
Bases:
EnvCfgConfiguration for the Manager-Based Torch environment.
Production task owners declare these fields in Hydra. The Registry materializes them into this plain typed config on the cold path; Python factories do not mirror task-specific manager or term declarations.
- Parameters:
fixed_model_variants (
FixedModelVariantCatalogCfg|None)sim_dt (
float)ctrl_dt (
float)render_spacing (
float)render_offset_mode (
str)drake_backend_mode (
str)drake_nthread (
int)superdex_num_workers (
int)superdex_execution_mode (
str)superdex_allow_contact_approximation (
bool)newton_capacity_check_steps (
int)newton_use_cuda_graph (
bool)isaacsim_render_width (
int)isaacsim_render_height (
int)isaacsim_tensor_cuda_ipc (
bool)isaacsim_share_friction_materials (
bool)is_finite_horizon (
bool)auto_reset (
bool)scale_rewards_by_dt (
bool)policy_observation_group (
str)
- observations: dict[str, ObservationGroupCfg | None]¶
- actions: dict[str, ActionTermCfg | None]¶
- events: dict[str, EventTermCfg | None]¶
- rewards: dict[str, RewardTermCfg | None]¶
- terminations: dict[str, TerminationTermCfg | None]¶
- commands: dict[str, CommandTermCfg | None]¶
- curriculum: dict[str, CurriculumTermCfg | None]¶
- metrics: dict[str, MetricsTermCfg | None]¶
- recorders: dict[str, RecorderTermCfg | None]¶
- reset_owners: dict[str, ResetOwnerCfg | None]¶
- collector_tensor_device: str | None = None¶
- seed: int | None = None¶
- is_finite_horizon: bool = False¶
- auto_reset: bool = True¶
- scale_rewards_by_dt: bool = True¶
- policy_observation_group: str = 'policy'¶
- critic_observation_group: str | None = None¶
- __init__(scene=None, fixed_model_variants=None, sim_dt=0.01, max_episode_seconds=None, ctrl_dt=0.01, render_spacing=1.0, render_offset_mode='grid', drake_backend_mode='batch', drake_nthread=0, superdex_num_workers=0, superdex_execution_mode='batch', superdex_assets_root=None, superdex_effort_limits=None, superdex_allow_contact_approximation=False, motrix_max_iterations=None, cpu_ids=None, mjwarp_nconmax=None, mjwarp_njmax=None, newton_device=None, newton_nconmax=None, newton_njmax=None, newton_capacity_check_steps=1, newton_use_cuda_graph=True, isaacgym_device_id=None, isaacgym_worker_timeout_s=None, genesis_device_id=None, genesis_integrator=None, genesis_constraint_solver=None, genesis_friction_cone=None, genesis_solver_iterations=None, isaacsim_device_id=None, isaacsim_worker_timeout_s=None, isaacsim_render_mode=None, isaacsim_render_width=1280, isaacsim_render_height=720, isaacsim_tensor_cuda_ipc=False, isaacsim_share_friction_materials=False, isaacsim_env_spacing=None, observations=<factory>, actions=<factory>, events=<factory>, rewards=<factory>, terminations=<factory>, commands=<factory>, curriculum=<factory>, metrics=<factory>, recorders=<factory>, reset_owners=<factory>, collector_tensor_device=None, seed=None, is_finite_horizon=False, auto_reset=True, scale_rewards_by_dt=True, policy_observation_group='policy', critic_observation_group=None)¶
- Parameters:
fixed_model_variants (
FixedModelVariantCatalogCfg|None)sim_dt (
float)ctrl_dt (
float)render_spacing (
float)render_offset_mode (
str)drake_backend_mode (
str)drake_nthread (
int)superdex_num_workers (
int)superdex_execution_mode (
str)superdex_allow_contact_approximation (
bool)newton_capacity_check_steps (
int)newton_use_cuda_graph (
bool)isaacsim_render_width (
int)isaacsim_render_height (
int)isaacsim_tensor_cuda_ipc (
bool)isaacsim_share_friction_materials (
bool)is_finite_horizon (
bool)auto_reset (
bool)scale_rewards_by_dt (
bool)policy_observation_group (
str)
- unilab.envs.manager_based_rl_env.make_manager_based_rl_env(cfg, num_envs=1, backend_type='mujoco')[source]¶
Construct the generic Registry-owned Manager-Based production runtime.
- Parameters:
cfg (
ManagerBasedRlEnvCfg)num_envs (
int)backend_type (
str)
- Return type: