isaaclab_contrib.custom_coupling#
Opt-in example of a custom Newton coupling manager.
Import isaaclab_contrib.custom_coupling.tasks to register the example task.
The custom MJWarp and VBD manager is an opt-in example. Import
isaaclab_contrib.custom_coupling.tasks explicitly to register
IsaacContrib-Lift-Soft-Franka-Custom-Coupling. The environment requires a
full Isaac Lab installation containing isaaclab_tasks.
Classes
Configuration for the custom MJWarp and VBD coupling manager.
NewtonVBDManagerspecialization for custom MJWarp and VBD coupling.Franka soft lifting with manual MJWarp and VBD coupling.
Custom Coupling#
- class isaaclab_contrib.custom_coupling.newton_manager_cfg.CoupledMJWarpVBDSolverCfg[source]#
Bases:
NewtonSolverCfgConfiguration for the custom MJWarp and VBD coupling manager.
Attributes:
Manager class for the coupled solver.
MJWarp rigid-body solver configuration.
Solver type metadata (deprecated).
VBD deformable solver configuration.
Coupling direction between the rigid and deformable solvers.
- class_type: type[NewtonManager] | str#
Manager class for the coupled solver.
- rigid_solver_cfg: MJWarpSolverCfg#
MJWarp rigid-body solver configuration.
- solver_type: str#
Solver type metadata (deprecated).
Deprecated since version Manager: dispatch is now driven by
class_type; this field is retained as metadata for logging and debugging only. Do not branch onsolver_typein new code.
- soft_solver_cfg: VBDSolverCfg#
VBD deformable solver configuration.
- coupling_mode: Literal['one_way', 'two_way']#
Coupling direction between the rigid and deformable solvers.
- class isaaclab_contrib.custom_coupling.coupled_mjwarp_vbd_manager.NewtonCoupledMJWarpVBDManager[source]#
Bases:
NewtonVBDManagerNewtonVBDManagerspecialization for custom MJWarp and VBD coupling.Reuses the VBD manager’s deformable stage handling and adds a custom rigid-deformable coupling step. Newton’s
CollisionPipelineprovides deformable contacts.Methods:
step()Step the physics simulation.
Opt an articulation into the Newton actuator fast path.
add_contact_sensor([body_names_expr, ...])Add a contact sensor for reporting contacts between bodies/shapes.
add_frame_transform_sensor(shapes, ...)Add a frame transform sensor for measuring relative transforms.
add_imu_sensor(sites)Add an IMU sensor for measuring acceleration and angular velocity at sites.
add_model_change(change)Register a model change to notify the solver.
Hook after visualizers have stepped during
render().cl_register_site(body_pattern, xform, *[, ...])Register a site request for injection into prototypes before replication.
clear()Clear all Newton-specific state (callbacks cleared by super().close()).
Remove all registered callbacks.
close()Clean up Newton physics resources.
create_builder([up_axis, physics_cfg])Create a
ModelBuilderconfigured with default settings.create_fixed_tendon_control(articulation)Build the solver's fixed-tendon command adapter for
articulation.create_visual_material_writer(batches)Compile material-to-shape addresses for the active Newton model.
create_visual_shape_color_writer(asset, ...)Compile selected articulation-body shape addresses for the active Newton model.
deregister_callback(callback_id)Remove a registered callback.
dispatch_event(event[, payload])Dispatch an event to all registered callbacks.
fix_articulation_root(articulation_prim[, stage])Ensure that an articulation root has one enabled world fixed joint.
forward()Update articulation kinematics without stepping physics.
Get the tensor backend being used ("numpy" or "torch").
Get the current Newton contact buffer, if the active solver exposes one.
Get the control object.
Get the physics simulation device.
get_dt()Get the physics timestep.
Return the active physics model.
Get the physics timestep in seconds.
Return the registered articulation views.
Return the SceneDataBackend for the SceneDataProvider.
Return the active scene data provider.
Get the current simulation time in seconds.
Get the solver substep timestep.
Get the current state.
Get the next state.
Truewhenstep()executes the full decimation loop internally.initialize(sim_context)Initialize the manager with simulation context.
Initialize the solver and collision pipeline.
Import the explicitly declared clone plan into the Newton builder.
invalidate_body_state([env_ids, env_mask])Mark selected maximal-coordinate body state as changed without requesting FK.
invalidate_fk([env_mask, env_ids, ...])Mark environments as needing FK recomputation and solver reset.
Check if fabric interface is enabled (not applicable for Newton).
pause()Pause physics simulation.
play()Start or resume physics simulation.
Sync deferred physics state to the rendering backend.
register_callback(callback, event[, order, ...])Register a callback.
register_post_actuator_callback(callback)Append a hook to the list invoked after the actuator step on every iteration.
register_post_step_callback(callback)Append a hook to the list invoked after the last solver substep on every step.
register_state_force_callback(callback)Register a graph-safe callback that applies forces before every solver substep.
Request an extended contact attribute (e.g.
"force").Request an extended state attribute (e.g.
"body_qdd").reset([soft])Reset physics simulation.
safe_callback_invoke(fn, *args[, ...])Invoke a callback, catching exceptions that would be swallowed by external event buses.
set_decimation(decimation)Set the decimation count and re-capture the CUDA graph.
setup_deformable_body(prim, deformable_type, ...)Apply Newton's token deformable anchor schemas and sync the visual mesh geometry.
Start simulation by finalizing model and initializing state.
stop()Stop physics simulation.
unregister_post_step_callback(callback)Remove a previously registered post-step callback.
Newton GL headless perspective video capture.
Block until the timeline is playing.
Attributes:
Borrowed native resource shared by physics and scene consumers; the simulation registry owns it.
Whether this backend can service
--anim_recording_enabled(OVD Recorder).- classmethod activate_newton_actuator_path() None[source]#
Opt an articulation into the Newton actuator fast path.
Idempotent — called by every Newton-fast-path articulation’s
_process_actuators_cfg:Sets
_use_newton_actuators_active, which_is_all_graphable()checks (adapter presence alone cannot distinguish the fast path from the standard Lab path).On first call, builds the single sim-level
NewtonActuatorAdapterover the full flat DOF layout; later calls reuse it.
- classmethod add_contact_sensor(body_names_expr: str | list[str] | None = None, shape_names_expr: str | list[str] | None = None, contact_partners_body_expr: str | list[str] | None = None, contact_partners_shape_expr: str | list[str] | None = None, verbose: bool = False) tuple[str | list[str] | None, str | list[str] | None, str | list[str] | None, str | list[str] | None][source]#
Add a contact sensor for reporting contacts between bodies/shapes.
Compiles the Isaac Lab regular expressions and delegates to
newton.sensors.SensorContact, which full-matches compiled patterns against model labels.- Parameters:
- classmethod add_frame_transform_sensor(shapes: list[int], reference_sites: list[int]) int[source]#
Add a frame transform sensor for measuring relative transforms.
Creates a
SensorFrameTransformfrom pre-resolved shape and reference site indices, appends it to the internal list, and returns its index.
- classmethod add_imu_sensor(sites: list[int]) int[source]#
Add an IMU sensor for measuring acceleration and angular velocity at sites.
Creates a
newton.sensors.SensorIMUfrom pre-resolved site indices, appends it to the internal list, and returns its index.- Parameters:
sites¶ – Ordered list of site indices (one per environment).
- Returns:
Index of the newly created sensor in the internal IMU sensor list.
- classmethod add_model_change(change: newton.ModelFlags) None[source]#
Register a model change to notify the solver.
- classmethod after_visualizers_render() None[source]#
Hook after visualizers have stepped during
render().Use for physics-backend sync (e.g. fabric) if needed. Default is a no-op.
- backend: ClassVar[NewtonBackend | None] = None#
Borrowed native resource shared by physics and scene consumers; the simulation registry owns it.
- classmethod cl_register_site(body_pattern: str | None, xform: warp.transform, *, per_world: bool = False) str[source]#
Register a site request for injection into prototypes before replication.
Sensors call this during
__init__. Sites are injected into prototype builders by_cl_inject_sites()(called fromnewton_replicate) beforeadd_builder, so they replicate correctly per-world.Identical
(body_pattern, per_world, transform)registrations share sites.The body_pattern is matched against prototype-local body labels (e.g.
"Robot/link.*") when replication is active, or against the flat builder’s body labels in the fallback path. Wildcard patterns that match multiple bodies create one site per matched body.- Parameters:
body_pattern¶ – Regex pattern matched against body labels in the prototype builder (e.g.
"Robot/link0"or"Robot/finger.*"for multi-body wildcards), orNonefor global sites (world-origin reference, etc.).xform¶ – Site transform relative to body.
per_world¶ – When
True,body_patternmust beNoneand one bodyless site is created in each cloned world’s frame.
- Returns:
Assigned site label suffix.
- classmethod clear()[source]#
Clear all Newton-specific state (callbacks cleared by super().close()).
- classmethod clear_callbacks() None[source]#
Remove all registered callbacks.
Do NOT reset
_callback_id— handle IDs must remain monotonically unique across the lifetime of the process. Resetting the counter would let a futureregister_callback()hand out an ID that an old, still-aliveCallbackHandle(e.g. on a sensor that has not been garbage-collected yet) holds, so when the old object eventually finalizes its__del__would deregister the new callback. This bit ovphysx’s kitless multi-context tests where twoInteractiveScene``s are created in sequence: the first scene's sensor would post-GC deregister the second scene's ``_initialize_callbackby ID collision, leaving the second sensor forever uninitialized.
- classmethod create_builder(up_axis: str | None = None, *, physics_cfg: NewtonCfg | None = None, **kwargs) newton.ModelBuilder[source]#
Create a
ModelBuilderconfigured with default settings.Forwards
NewtonShapeCfgdefaults onto Newton’s upstreamModelBuilder.default_shape_cfgviachecked_apply(). Falls back to wrapper defaults when no Newton config is active so rough-terrain margin/gap still apply during early construction.- Parameters:
- Returns:
New builder with up-axis and per-shape defaults (gap, margin) applied.
- classmethod create_fixed_tendon_control(articulation)[source]#
Build the solver’s fixed-tendon command adapter for
articulation.Tendon state is backend-neutral and lives on the articulation; how a target reaches the solver is not. MuJoCo drives tendons through actuator controls, so only the MJWarp manager implements this. The articulation stores what it gets, the way it stores its actuator control, and never needs to know which solver is active.
Only the MuJoCo solver registers the
mujoco:tendonfrequency, so an articulation reports tendons under MJWarp alone and this base is unreachable through the normal path. Reaching it means a solver gained tendons with no way to command them, which is worth saying rather than returning nothing –Nonealready means “this asset’s tendons are all passive”.- Parameters:
articulation¶ – Newton articulation to drive.
- Raises:
NotImplementedError – Always – this solver has no fixed-tendon transmission.
- classmethod create_visual_material_writer(batches: tuple[VisualMaterialBatch, ...]) VisualMaterialWriter[source]#
Compile material-to-shape addresses for the active Newton model.
- classmethod create_visual_shape_color_writer(asset: BaseArticulation, body_names: tuple[str, ...]) VisualShapeColorWriter[source]#
Compile selected articulation-body shape addresses for the active Newton model.
- classmethod deregister_callback(callback_id: int | CallbackHandle) None[source]#
Remove a registered callback.
- Parameters:
callback_id¶ – The ID or CallbackHandle returned by register_callback().
- classmethod dispatch_event(event: PhysicsEvent, payload: Any = None) None[source]#
Dispatch an event to all registered callbacks.
This is the default implementation using simple callback lists. Subclasses may override or extend with platform-specific dispatch.
- classmethod fix_articulation_root(articulation_prim: Any, stage: Any = None) Any[source]#
Ensure that an articulation root has one enabled world fixed joint.
The base implementation leaves the root in place. Backends whose parser requires a different root topology may relocate it and return the resulting root prim.
- Parameters:
- Returns:
The articulation-root prim after backend normalization.
- Raises:
NotImplementedError – If a new joint is needed and the root is not a rigid body.
- classmethod forward() None[source]#
Update articulation kinematics without stepping physics.
Update body poses from joint coordinates via the solver-specialized FK delegate (
_eval_fk, bound to the active subclass’s_eval_fk_impl()ininitialize_solver()). Only the articulations flagged dirty in_fk_reset_maskand_world_reset_mask(seeinvalidate_fk()) are updated. The masks are consumed (zeroed) afterwards so the nextstep()does not redundantly re-solve them.Asset and scene-data reads share the same pending work. The bound delegate dispatches calls on
NewtonManagerto the active solver’s implementation.
- classmethod get_contacts() Contacts | None[source]#
Get the current Newton contact buffer, if the active solver exposes one.
- classmethod get_model() newton.Model[source]#
Return the active physics model. Render consumers acquire their backend from the registry.
- classmethod get_scene_data_backend() SceneDataBackend | None[source]#
Return the SceneDataBackend for the SceneDataProvider.
- classmethod get_scene_data_provider() SceneDataProvider[source]#
Return the active scene data provider.
- classmethod handles_decimation() bool[source]#
Truewhenstep()executes the full decimation loop internally.This is the case when all Newton actuators are CUDA-graph-safe. The full decimation loop (including the trivial
decimation=1case) is folded into a singlestep()call.
- classmethod initialize(sim_context: SimulationContext) None[source]#
Initialize the manager with simulation context.
- Parameters:
sim_context¶ – Parent simulation context.
- classmethod initialize_solver() None[source]#
Initialize the solver and collision pipeline.
Construct the solver and contacts, establish the initial body state, and schedule graph capture for the first step after the environment has authored its initial state. Initialization and capture do not advance physics.
- classmethod instantiate_builder_from_stage()[source]#
Import the explicitly declared clone plan into the Newton builder.
- classmethod invalidate_body_state(env_ids: wp.array(dtype=wp.int32) | None = None, env_mask: wp.array(dtype=wp.bool) | None = None) None[source]#
Mark selected maximal-coordinate body state as changed without requesting FK.
- classmethod invalidate_fk(env_mask: wp.array | None = None, env_ids: wp.array | None = None, articulation_ids: wp.array | None = None) None[source]#
Mark environments as needing FK recomputation and solver reset.
Called by asset write methods that modify joint coordinates or root transforms. The masks are consumed by the next forward, raw-state, rendering, or physics-step boundary.
- Parameters:
env_mask¶ – Boolean mask of dirtied environments. Shape
(num_envs,). Used by_maskwrite methods.env_ids¶ – Integer indices of dirtied environments. Used by
_indexwrite methods.articulation_ids¶ – Mapping from
(world, arti)to model articulation index. Shape(world_count, count_per_world). Obtained fromArticulationView.articulation_ids.
- classmethod is_fabric_enabled() bool[source]#
Check if fabric interface is enabled (not applicable for Newton).
- classmethod pre_render() None[source]#
Sync deferred physics state to the rendering backend.
Called by
render()before cameras and visualizers read scene data. The default implementation is a no-op. Backends that defer transform writes (e.g. Newton’s dirty-flag pattern) should override this to flush pending updates.
- classmethod register_callback(callback: Callable, event: PhysicsEvent, order: int = 0, name: str | None = None, wrap_weak_ref: bool = True) CallbackHandle[source]#
Register a callback. Passes event to parent class.
- classmethod register_post_actuator_callback(callback: Callable[[], None]) None[source]#
Append a hook to the list invoked after the actuator step on every iteration.
Each callback runs inside the captured CUDA graph (when
_is_all_graphable()isTrue) right afterNewtonActuatorAdapter.step()and before the solver substeps, so kernel writes tostate/controlare visible to the integrator on the same iteration. Multiple articulations register their own implicit-DOF telemetry / FF-routing kernels here; all registered callbacks fire in registration order each step.
- classmethod register_post_step_callback(callback: Callable[[], None]) None[source]#
Append a hook to the list invoked after the last solver substep on every step.
Each callback runs inside the stepped (and, when
_is_all_graphable()isTrue, captured) region right after the final solver substep of the decimation loop and before_update_sensors(), so the launches it issues are recorded into every captured CUDA graph and replayed on each tick. The hook fires exactly once perstep()call, reflecting the state after all decimation iterations (and their solver substeps) have completed – not once per substep and not once per decimation iteration. Callbacks must be graph-safe (fixed shapes, no host branching on device data) and must be registered before capture. Articulations with non-identity ordering register their backend-to-user state republish here; all registered callbacks fire in registration order each step.
- classmethod register_state_force_callback(callback: Callable[[newton.State], None]) None[source]#
Register a graph-safe callback that applies forces before every solver substep.
Callbacks must be registered before solver initialization so they are included in CUDA graph capture.
- Parameters:
callback¶ – Function that adds forces [N, N·m] to the provided state.
- classmethod request_extended_contact_attribute(attr: str) None[source]#
Request an extended contact attribute (e.g.
"force").Sensors call this during
__init__, before model finalization. Attributes are forwarded to the model instart_simulation()so that subsequentContactscreation includes them.- Parameters:
attr¶ – Contact attribute name.
- classmethod request_extended_state_attribute(attr: str) None[source]#
Request an extended state attribute (e.g.
"body_qdd").Sensors call this during
__init__, before model finalization. Attributes are forwarded to the builder instart_simulation()so that subsequentmodel.state()calls allocate them.- Parameters:
attr¶ – State attribute name (must be in
State.EXTENDED_ATTRIBUTES).
- classmethod reset(soft: bool = False) None[source]#
Reset physics simulation.
A hard reset (
soft=False) re-finalizes the Newton model, reallocating its device arrays. The cached collision pipeline, contacts and any captured CUDA graph reference the old buffers, so they are released here and rebuilt against the re-finalized model byinitialize_solver(). This avoids the illegal CUDA memory access (CUDA error 700) that would otherwise occur on the first step after a hard reset.A soft reset (
soft=True) skips this full reinitialization and reuses the existing model, solver, collision pipeline and CUDA graph.- Parameters:
soft¶ – If True, skip full reinitialization.
- static safe_callback_invoke(fn: Callable, *args, physics_manager: type[PhysicsManager] | None = None) None[source]#
Invoke a callback, catching exceptions that would be swallowed by external event buses.
Ignores
ReferenceError(from garbage-collected weakref proxies). All other exceptions are forwarded to physics_manager.``store_callback_exception`` when available (see note below), or re-raised immediately otherwise.- Note (Octi):
The carb event bus used by PhysX/Omniverse silently swallows exceptions raised inside callbacks.
PhysxManagerworks around this by storing the exception and re-raising it after event dispatch completes (inreset()/step()). Backends that dispatch events directly (e.g. Newton) don’t need this — exceptions propagate normally — sostore_callback_exceptionis not called for them. This is a known wart; a cleaner solution is actively being explored.
- classmethod set_decimation(decimation: int) None[source]#
Set the decimation count and re-capture the CUDA graph.
When all actuators are graphable the entire decimation loop (actuators + solver substeps, repeated decimation times) is captured as a single CUDA graph.
Invalidate the existing graph when the loop changes. Its replacement is captured immediately before the next requested step, after authored state is reconciled.
- classmethod setup_deformable_body(prim: Any, deformable_type: str, sim_mesh_prim: Any, vis_mesh_prim: Any) None[source]#
Apply Newton’s token deformable anchor schemas and sync the visual mesh geometry.
- classmethod start_simulation() None[source]#
Start simulation by finalizing model and initializing state.
This function finalizes the model and initializes the simulation state. Note: Collision pipeline is initialized later in initialize_solver() after we determine whether the solver needs external collision detection.
- supports_anim_recording: ClassVar[bool] = False#
Whether this backend can service
--anim_recording_enabled(OVD Recorder).Overridden by backends that implement the recorder (currently PhysX-only).
- classmethod unregister_post_step_callback(callback: Callable[[], None]) None[source]#
Remove a previously registered post-step callback.
Symmetric to
register_post_step_callback(), this lets an articulation deregister its republish hook when its callbacks are cleared so the bound method does not linger on the class-level list after the articulation is gone. Removing a callback that was never registered (or was already removed) is a safe no-op, matching the tolerant deregistration of other handles.
- class isaaclab_contrib.custom_coupling.franka_soft_env_cfg.FrankaSoftCustomCouplingEnvCfg[source]#
Bases:
FrankaSoftEnvCfgFranka soft lifting with manual MJWarp and VBD coupling.
Methods:
__init__([class_type, sim, ...])Attributes:
The environment class constructed from this configuration.
Physics simulation configuration.
The class type of the UI window.
The seed for the random number generator.
Number of control action updates @ sim dt per policy dt.
Scene settings.
Recorder settings.
Observation space settings.
Action space settings.
Event settings.
Whether a render step is performed again after at least one environment has been reset.
Number of render steps to perform after reset.
True to wait for assets to be loaded completely, False otherwise.
Configuration for viewing and interacting with the environment through an XR device.
Configuration for teleoperation devices.
Configuration for Isaac Capture-based teleoperation.
Whether to export the IO descriptors for the environment.
Directory for logging experiment artifacts.
Video recording streams.
Deprecated viewer configuration.
Whether the learning task is treated as a finite or infinite horizon problem for the agent.
Whether to capture the terminal observation before a Same-Step autoreset and expose it.
Duration of an episode (in seconds).
Reward settings.
Termination settings.
Curriculum settings.
Command settings.
- __init__(class_type: type | str = <factory>, sim: SimulationCfg = <factory>, ui_window_class_type: type | str | None = <factory>, seed: int | None = <factory>, decimation: int = <factory>, scene: FrankaSoftSceneCfg = <factory>, recorders: object = <factory>, observations: ObservationsCfg = <factory>, actions: ActionsCfg = <factory>, events: EventCfg = <factory>, rerender_on_reset: bool = <factory>, num_rerenders_on_reset: int = <factory>, wait_for_textures: bool = <factory>, xr: XrCfg | None = <factory>, teleop_devices: DevicesCfg = <factory>, isaac_teleop: object | None = <factory>, export_io_descriptors: bool = <factory>, log_dir: str | None = <factory>, video_recorders: list[VideoRecorderCfg] = <factory>, viewer: ViewerCfg = <factory>, is_finite_horizon: bool = <factory>, compute_final_obs: bool = <factory>, episode_length_s: float = <factory>, rewards: RewardsCfg = <factory>, terminations: TerminationsCfg = <factory>, curriculum: CurriculumCfg = <factory>, commands: CommandsCfg = <factory>) None#
- sim: SimulationCfg#
Physics simulation configuration. Default is SimulationCfg().
- ui_window_class_type: type | str | None#
The class type of the UI window. Default is None.
If None, then no UI window is created.
Note
If you want to make your own UI window, you can create a class that inherits from from
isaaclab.envs.ui.base_env_window.BaseEnvWindow. Then, you can set this attribute to your class type.
- seed: int | None#
The seed for the random number generator. Defaults to None, in which case the seed is not set.
Note
The seed is set at the beginning of the environment initialization. This ensures that the environment creation is deterministic and behaves similarly across different runs.
- decimation: int#
Number of control action updates @ sim dt per policy dt.
For instance, if the simulation dt is 0.01s and the policy dt is 0.1s, then the decimation is 10. This means that the control action is updated every 10 simulation steps.
- scene: FrankaSoftSceneCfg#
Scene settings.
Please refer to the
isaaclab.scene.InteractiveSceneCfgclass for more details.
- recorders: object#
Recorder settings. Defaults to recording nothing.
Please refer to the
isaaclab.managers.RecorderManagerclass for more details.
- observations: ObservationsCfg#
Observation space settings.
Please refer to the
isaaclab.managers.ObservationManagerclass for more details.
- actions: ActionsCfg#
Action space settings.
Please refer to the
isaaclab.managers.ActionManagerclass for more details.
- events: EventCfg#
Event settings. Defaults to the basic configuration that resets the scene to its default state.
Please refer to the
isaaclab.managers.EventManagerclass for more details.
- rerender_on_reset: bool#
Whether a render step is performed again after at least one environment has been reset. Defaults to False, which means no render step will be performed after reset.
When this is False, data collected from sensors after performing reset will be stale and will not reflect the latest states in simulation caused by the reset.
When this is True, an extra render step will be performed to update the sensor data to reflect the latest states from the reset. This comes at a cost of performance as an additional render step will be performed after each time an environment is reset.
Deprecated since version 2.3.1: This attribute is deprecated and will be removed in the future. Please use
num_rerenders_on_resetinstead.To get the same behaviour as setting this parameter to
TrueorFalse, setnum_rerenders_on_resetto 1 or 0, respectively.
- num_rerenders_on_reset: int#
Number of render steps to perform after reset. Defaults to 0, which means no render step will be performed after reset.
When this is 0, no render step will be performed after reset. Data collected from sensors after performing reset will be stale and will not reflect the latest states in simulation caused by the reset.
When this is greater than 0, the specified number of extra render steps will be performed to update the sensor data to reflect the latest states from the reset. This comes at a cost of performance as additional render steps will be performed after each time an environment is reset.
- wait_for_textures: bool#
True to wait for assets to be loaded completely, False otherwise. Defaults to True.
- xr: XrCfg | None#
Configuration for viewing and interacting with the environment through an XR device.
- teleop_devices: DevicesCfg#
Configuration for teleoperation devices.
- isaac_teleop: object | None#
Configuration for Isaac Capture-based teleoperation.
When set, the environment uses the Isaac Capture stack for XR teleoperation instead of the native Isaac Lab teleop devices. This should be a IsaacTeleopCfg instance from the isaaclab_teleop package.
The teleop scripts will automatically detect this configuration and use the Isaac Capture stack when present.
- export_io_descriptors: bool#
Whether to export the IO descriptors for the environment. Defaults to False.
Deprecated since version 3.0: IO descriptors will be removed in Isaac Lab 3.2. Use the LEAPP export workflow for supported RSL-RL/PyTorch deployments.
- log_dir: str | None#
Directory for logging experiment artifacts. Defaults to None, in which case no specific log directory is set.
- video_recorders: list[VideoRecorderCfg]#
Video recording streams. Each entry records from its configured source independently.
Leave empty to disable recording. Set
--videoon the CLI to auto-populate this list with a default stream from the active visualizer.
- viewer: ViewerCfg#
Deprecated viewer configuration. Use
default_visualizer_cfgorvisualizer_cfgsinstead.Deprecated since version This: field is deprecated and will be removed in a future release. Configure the viewport camera via
VisualizerCfgon the simulation config::from isaaclab.visualizers import VisualizerCfg env_cfg.sim.default_visualizer_cfg = VisualizerCfg(eye=(4.5, 0.0, 6.0))
- is_finite_horizon: bool#
Whether the learning task is treated as a finite or infinite horizon problem for the agent. Defaults to False, which means the task is treated as an infinite horizon problem.
This flag handles the subtleties of finite and infinite horizon tasks:
Finite horizon: no penalty or bootstrapping value is required by the the agent for running out of time. However, the environment still needs to terminate the episode after the time limit is reached.
Infinite horizon: the agent needs to bootstrap the value of the state at the end of the episode. This is done by sending a time-limit (or truncated) done signal to the agent, which triggers this bootstrapping calculation.
If True, then the environment is treated as a finite horizon problem and no time-out (or truncated) done signal is sent to the agent. If False, then the environment is treated as an infinite horizon problem and a time-out (or truncated) done signal is sent to the agent.
Note
The base
ManagerBasedRLEnvclass does not use this flag directly. It is used by the environment wrappers to determine what type of done signal to send to the corresponding learning agent.
- compute_final_obs: bool#
Whether to capture the terminal observation before a Same-Step autoreset and expose it.
Under Same-Step autoreset (see
metadata), an environment that terminates is reset within the samestep()call, so the returned observation belongs to the new episode. When this flag is True, the observation is computed once more before the reset and stored underextras["final_obs"], so wrappers can report it as the true terminal observation for value bootstrapping.Defaults to False, which preserves the previous behavior: no terminal observation is captured,
extras["final_obs"]is not populated, and the extra observation computation is skipped.Note
Currently consumed by the
Sb3VecEnvWrapperwrapper.
- episode_length_s: float#
Duration of an episode (in seconds).
Based on the decimation rate and physics time step, the episode length is calculated as:
episode_length_steps = ceil(episode_length_s / (decimation_rate * physics_time_step))
For example, if the decimation rate is 10, the physics time step is 0.01, and the episode length is 10 seconds, then the episode length in steps is 100.
- rewards: RewardsCfg#
Reward settings.
Please refer to the
isaaclab.managers.RewardManagerclass for more details.
- terminations: TerminationsCfg#
Termination settings.
Please refer to the
isaaclab.managers.TerminationManagerclass for more details.
- curriculum: CurriculumCfg#
Curriculum settings. Defaults to None, in which case no curriculum is applied.
Please refer to the
isaaclab.managers.CurriculumManagerclass for more details.
- commands: CommandsCfg#
Command settings. Defaults to None, in which case no commands are generated.
Please refer to the
isaaclab.managers.CommandManagerclass for more details.