unilab.visualization.interactive_playback

Shared core for interactive policy playback entrypoints.

Functions

create_rsl_rl_playback_session(*, ...[, log])

Create a playback session and load the selected policy checkpoint.

prepare_motion_overlay_selection(env, *, ...)

Resolve body indices used by motion-target and reward-debug overlays.

select_torch_device()

Classes

KeyboardCommander

Mutable [vx, vy, vyaw] velocity command driven by keyboard nudges.

MotionOverlaySelection

Cold-path selection of task bodies used by playback overlays.

PlaybackControls

Viewer-independent playback control state.

RslRlPlaybackConfig

Configuration needed to bootstrap an RSL-RL interactive playback session.

RslRlPlaybackSession

Policy/action stepping core shared by native and web viewers.

class unilab.visualization.interactive_playback.KeyboardCommander[source]

Bases: object

Mutable [vx, vy, vyaw] velocity command driven by keyboard nudges.

Per-axis nudges stack and are clamped to the task’s commands.vel_limit.

Parameters:
low: ndarray
high: ndarray
step_lin: float = 0.1
step_ang: float = 0.2
command: ndarray
AXIS_VX: ClassVar[int] = 0
AXIS_VY: ClassVar[int] = 1
AXIS_VYAW: ClassVar[int] = 2
classmethod from_vel_limit(vel_limit, *, step_lin=0.1, step_ang=0.2)[source]
Parameters:
Return type:

KeyboardCommander

nudge(axis, sign)[source]
Parameters:
Return type:

None

zero()[source]
Return type:

None

describe()[source]
Return type:

str

__init__(low, high, step_lin=0.1, step_ang=0.2)
Parameters:
class unilab.visualization.interactive_playback.MotionOverlaySelection[source]

Bases: object

Cold-path selection of task bodies used by playback overlays.

Parameters:
enabled: bool
selected_indices: ndarray
__init__(enabled, selected_indices)
Parameters:
class unilab.visualization.interactive_playback.OffPolicyPlaybackSession[source]

Bases: object

Direct env stepping session for SAC-style off-policy actors.

Parameters:
__init__(*, env, device, action_mode, actor, actor_algo_type, normalizer, num_envs, obs_extractor, priv_info_resolver)[source]
Parameters:
reset()[source]
Return type:

ndarray

step_once()[source]
Return type:

ndarray

advance(controls)[source]
Parameters:

controls (PlaybackControls)

Return type:

bool

physics_state()[source]
Return type:

ndarray

property info: dict[str, Any]
class unilab.visualization.interactive_playback.PlaybackControls[source]

Bases: object

Viewer-independent playback control state.

Parameters:
paused: bool = False
speed: float = 1.0
pause()[source]
Return type:

None

resume()[source]
Return type:

None

toggle_pause()[source]
Return type:

bool

request_single_step(count=1)[source]
Parameters:

count (int)

Return type:

None

set_speed(value)[source]
Parameters:

value (float)

Return type:

None

consume_step_permission()[source]
Return type:

bool

target_dt(ctrl_dt)[source]
Parameters:

ctrl_dt (float)

Return type:

float

__init__(paused=False, speed=1.0)
Parameters:
class unilab.visualization.interactive_playback.PlaybackSession[source]

Bases: Protocol

Viewer-facing session contract shared by all policy families.

env: Any
reset()[source]
Return type:

Any

advance(controls)[source]
Parameters:

controls (PlaybackControls)

Return type:

bool

physics_state()[source]
Return type:

ndarray

property info: dict[str, Any]
__init__(*args, **kwargs)
class unilab.visualization.interactive_playback.RslRlPlaybackConfig[source]

Bases: object

Configuration needed to bootstrap an RSL-RL interactive playback session.

Parameters:
task: str
load_run: str
checkpoint: str | None
action_mode: str
policy_obs_mode: str
algo_log_name: str
log_root: str | None
num_envs: int = 1
speed: float = 1.0
start_paused: bool = False
__init__(task, load_run, checkpoint, action_mode, policy_obs_mode, algo_log_name, log_root, num_envs=1, speed=1.0, start_paused=False)
Parameters:
class unilab.visualization.interactive_playback.RslRlPlaybackSession[source]

Bases: object

Policy/action stepping core shared by native and web viewers.

Parameters:
__init__(*, env, wrapped_env, device, action_mode, policy, num_envs)[source]
Parameters:
reset()[source]
Return type:

Any

step_once()[source]
Return type:

Any

advance(controls)[source]
Parameters:

controls (PlaybackControls)

Return type:

bool

physics_state()[source]
Return type:

ndarray

property info: dict[str, Any]
unilab.visualization.interactive_playback.create_appo_playback_session(*, playback_cfg, cfg, rl_cfg, env_factory, root_dir, device, wrapper_cls, log=<built-in function print>)[source]

Create an APPO interactive playback session.

Parameters:
Return type:

tuple[RslRlPlaybackSession, str, str | None]

unilab.visualization.interactive_playback.create_hora_distill_playback_session(*, playback_cfg, cfg, root_dir, device, deps=None, log=<built-in function print>)[source]

Create an interactive playback session for HORA stage-2 student checkpoints.

Parameters:
Return type:

tuple[RslRlPlaybackSession, str, str | None]

unilab.visualization.interactive_playback.create_rsl_rl_playback_session(*, playback_cfg, env_factory, algo_config, root_dir, device, checkpoint_resolver, checkpoint_input_dim_reader, entrypoint_log_root, wrapper_cls, runner_cls, policy_obs_dims_getter, train_cfg_normalizer, log=<built-in function print>)[source]

Create a playback session and load the selected policy checkpoint.

Parameters:
Return type:

tuple[RslRlPlaybackSession, str, str | None]

unilab.visualization.interactive_playback.create_sac_playback_session(*, playback_cfg, cfg, env_factory, root_dir, device, algo_name='sac', log=<built-in function print>)[source]

Create an interactive playback session for off-policy actors.

Parameters:
Return type:

tuple[OffPolicyPlaybackSession, str, str | None]

unilab.visualization.interactive_playback.prepare_motion_overlay_selection(env, *, show_target_bodies, show_reward_debug, target_body_names, target_max_bodies, log=<built-in function print>)[source]

Resolve body indices used by motion-target and reward-debug overlays.

Parameters:
Return type:

MotionOverlaySelection

unilab.visualization.interactive_playback.select_torch_device()[source]
Return type:

str