Unverified Commit 8820bdff authored by Mayank Mittal's avatar Mayank Mittal Committed by GitHub

Moves sensors to core-concepts in the documentation (#1989)

# Description

This MR does the following:

* Simplifies the names of sensor overview images by simply putting them
into a directory
* Moves sensors to core-concepts in the documentation
* Fixes script headers in tutorials/demos to be consistent

## Type of change

- Bug fix (non-breaking change which fixes an issue)
- This change requires a documentation update

## Checklist

- [x] I have run the [`pre-commit` checks](https://pre-commit.com/) with
`./isaaclab.sh --format`
- [x] I have made corresponding changes to the documentation
- [x] My changes generate no new warnings
- [ ] I have added tests that prove my fix is effective or that my
feature works
- [ ] I have updated the changelog and the corresponding version in the
extension's `config/extension.toml` file
- [x] I have added my name to the `CONTRIBUTORS.md` or my name already
exists there
parent 38650265
Welcome to Isaac Lab!
==========================
=====================
.. figure:: source/_static/isaaclab.jpg
:width: 100%
......@@ -88,7 +88,6 @@ Table of Contents
source/overview/developer-guide/index
source/overview/core-concepts/index
source/overview/sensors/index
source/overview/environments
source/overview/reinforcement-learning/index
source/overview/teleop_imitation
......@@ -101,7 +100,7 @@ Table of Contents
source/features/hydra
source/features/multi_gpu
Tiled Rendering</source/overview/sensors/camera>
Tiled Rendering</source/overview/core-concepts/sensors/camera>
source/features/ray
source/features/reproducibility
......
......@@ -37,18 +37,6 @@ The following modules are available in the ``isaaclab`` extension:
lab/isaaclab.sim.schemas
lab/isaaclab.sim.spawners
isaaclab_tasks extension
------------------------
The following modules are available in the ``isaaclab_tasks`` extension:
.. currentmodule:: isaaclab_tasks
.. autosummary::
:toctree: lab_tasks
utils
isaaclab_rl extension
---------------------
......@@ -57,8 +45,10 @@ The following wrappers are available in the ``isaaclab_rl`` extension:
.. currentmodule:: isaaclab_rl
.. autosummary::
:toctree: lab_rl
.. toctree::
:maxdepth: 2
lab_rl/isaaclab_rl
isaaclab_mimic extension
......@@ -73,3 +63,19 @@ The following modules are available in the ``isaaclab_mimic`` extension:
datagen
envs
isaaclab_tasks extension
------------------------
This package ``isaaclab_tasks`` contains the tasks that are available in the Isaac Lab.
For more information, please refer to the :ref:`environments`.
It includes the following modules:
.. currentmodule:: isaaclab_tasks
.. autosummary::
:toctree: lab_tasks
utils
......@@ -9,3 +9,5 @@ This section we introduce core concepts in Isaac Lab.
task_workflows
actuators
sensors/index.rst
motion_generators
.. _overview_sensors_camera:
.. currentmodule:: isaaclab
Camera
========
======
Camera sensors are uniquely defined by the use of the ``render_product``, a structure for managing data generated by the rendering pipeline (images). Isaac Lab provides the ability to fully control how these renderings are created through camera parameters like focal length, pose, type, etc... and what kind of data you want to render through the use of Annotators, allowing you to record not only RGB, but also Instance segmentation, object pose, object ID, etc...
Rendered images are unique among the supported data types in Isaac Lab due to the inherently large bandwidth requirements for moving those data. A single 800 x 600 image with 32-bit color (a single float per pixel) clocks in at just under 2 MB. If we render at 60 fps and record every frame, that camera needs to move 120 MB/s. Multiply this by the number of cameras in an environment and environments in a simulation, and you can quickly see how scaling a naive vectorization of camera data could lead to bandwidth challenges. NVIDIA's Isaac Lab leverages our expertise in GPU hardware to provide an API that specifically addresses these scaling challenges in the rendering pipeline.
Tiled Rendering
~~~~~~~~~~~~~~~~~
~~~~~~~~~~~~~~~
.. note::
......@@ -53,7 +54,7 @@ When working with rendering, make sure to add the ``--enable_cameras`` argument
Annotators
~~~~~~~~~~~~~~~~~
~~~~~~~~~~
Both :class:`~sensors.TiledCamera` and :class:`~sensors.Camera` classes provide APIs for retrieving various types annotator data from replicator:
......@@ -71,7 +72,7 @@ Both :class:`~sensors.TiledCamera` and :class:`~sensors.Camera` classes provide
RGB and RGBA
~~~~~~~~~~~~
.. figure:: ../../_static/overview/overview_sensors_rgb.jpg
.. figure:: ../../../_static/overview/sensors/camera_rgb.jpg
:align: center
:figwidth: 100%
:alt: A scene captured in RGB
......@@ -85,7 +86,7 @@ To convert the ``torch.uint8`` data to ``torch.float32``, divide the buffer by 2
Depth and Distances
~~~~~~~~~~~~~~~~~~~
.. figure:: ../../_static/overview/overview_sensors_depth.jpg
.. figure:: ../../../_static/overview/sensors/camera_depth.jpg
:align: center
:figwidth: 100%
:alt: A scene captured in RGB
......@@ -99,7 +100,7 @@ Depth and Distances
Normals
~~~~~~~
.. figure:: ../../_static/overview/overview_sensors_normals.jpg
.. figure:: ../../../_static/overview/sensors/camera_normals.jpg
:align: center
:figwidth: 100%
:alt: A scene captured in RGB
......@@ -114,7 +115,7 @@ Motion Vectors
Semantic Segmentation
~~~~~~~~~~~~~~~~~~~~~
.. figure:: ../../_static/overview/overview_sensors_semantic.jpg
.. figure:: ../../../_static/overview/sensors/camera_semantic.jpg
:align: center
:figwidth: 100%
:alt: A scene captured in RGB
......@@ -128,7 +129,7 @@ Semantic Segmentation
Instance ID Segmentation
~~~~~~~~~~~~~~~~~~~~~~~~
.. figure:: ../../_static/overview/overview_sensors_instanceID.jpg
.. figure:: ../../../_static/overview/sensors/camera_instanceID.jpg
:align: center
:figwidth: 100%
:alt: A scene captured in RGB
......@@ -144,7 +145,7 @@ The main difference between ``instance_id_segmentation_fast`` and ``instance_seg
Instance Segmentation
"""""""""""""""""""""
.. figure:: ../../_static/overview/overview_sensors_instance.jpg
.. figure:: ../../../_static/overview/sensors/camera_instance.jpg
:align: center
:figwidth: 100%
:alt: A scene captured in RGB
......
.. _overview_sensors_contact:
.. currentmodule:: isaaclab
Contact Sensor
================
==============
.. figure:: ../../_static/overview/overview_sensors_contact_diagram.jpg
.. figure:: ../../../_static/overview/sensors/contact_diagram.jpg
:align: center
:figwidth: 100%
:alt: A contact sensor with filtering
......@@ -14,7 +16,7 @@ By default, the reported force is the total contact force, but your application
Consider a simple environment with an Anymal Quadruped and a block
.. literalinclude:: ../../../../scripts/demos/sensors/contact_sensor.py
.. literalinclude:: ../../../../../scripts/demos/sensors/contact_sensor.py
:language: python
:lines: 40-90
......@@ -90,6 +92,6 @@ In this case, the contact sensor has two bodies: the left and right hind feet.
.. dropdown:: Code for contact_sensor.py
:icon: code
.. literalinclude:: ../../../../scripts/demos/sensors/contact_sensor.py
.. literalinclude:: ../../../../../scripts/demos/sensors/contact_sensor.py
:language: python
:linenos:
.. _overview_sensors_frame_transformer:
.. currentmodule:: isaaclab
Frame Transformer
====================
=================
.. figure:: ../../_static/overview/overview_sensors_frame_transformer.jpg
.. figure:: ../../../_static/overview/sensors/frame_transformer.jpg
:align: center
:figwidth: 100%
:alt: A diagram outlining the basic geometry of frame transformations
......@@ -15,7 +17,7 @@ One of the most common operations that needs to be performed within a physics si
The sensory is minimally defined by a source frame and a list of target frames. These definitions take the form of a prim path (for the source) and list of regex capable prim paths the rigid bodies to be tracked (for the targets).
.. literalinclude:: ../../../../scripts/demos/sensors/frame_transformer_sensor.py
.. literalinclude:: ../../../../../scripts/demos/sensors/frame_transformer_sensor.py
:language: python
:lines: 38-86
......@@ -45,7 +47,8 @@ We can now run the scene and query the sensor for data
print(scene["robot_transforms"])
print("relative transforms:", scene["robot_transforms"].data.target_pos_source)
Let's take a look at the result for tracking specific objects. First, we can take a look at the data coming from the sensors on the feet
Let's take a look at the result for tracking specific objects. First, we can take a look at the data coming from the
sensors on the feet
.. code-block:: bash
......@@ -61,12 +64,15 @@ Let's take a look at the result for tracking specific objects. First, we can tak
relative orientations: tensor([[[ 0.9623, 0.0072, -0.2717, -0.0020],
[ 0.9639, 0.0052, -0.2663, -0.0014]]], device='cuda:0')
.. figure:: ../../_static/overview/overview_sensors_ft_visualizer.jpg
.. figure:: ../../../_static/overview/sensors/frame_transformer_visualizer.jpg
:align: center
:figwidth: 100%
:alt: The frame transformer visualizer
By activating the visualizer, we can see that the frames of the feet are rotated "upward" slightly. We can also see the explicit relative positions and rotations by querying the sensor for data, which returns these values as a list with the same order as the tracked frames. This becomes even more apparent if we examine the transforms specified by regex.
By activating the visualizer, we can see that the frames of the feet are rotated "upward" slightly.
We can also see the explicit relative positions and rotations by querying the sensor for data, which
returns these values as a list with the same order as the tracked frames. This becomes even more
apparent if we examine the transforms specified by regex.
.. code-block:: bash
......@@ -100,6 +106,6 @@ Here, the sensor is tracking all rigid body children of ``Robot/base``, but this
.. dropdown:: Code for frame_transformer_sensor.py
:icon: code
.. literalinclude:: ../../../../scripts/demos/sensors/frame_transformer_sensor.py
.. literalinclude:: ../../../../../scripts/demos/sensors/frame_transformer_sensor.py
:language: python
:linenos:
.. _overview_sensors_imu:
.. currentmodule:: isaaclab
Inertial Measurement Unit (IMU)
===================================
.. figure:: ../../_static/overview/overview_sensors_imu_diagram.jpg
.. figure:: ../../../_static/overview/sensors/imu_diagram.jpg
:align: center
:figwidth: 100%
:alt: A diagram outlining the basic force relationships for the IMU sensor
......@@ -14,13 +16,13 @@ A naive implementation of an IMU would report a negative acceleration due to gra
Consider a simple environment with an Anymal Quadruped equipped with an IMU on each of its two front feet.
.. literalinclude:: ../../../../scripts/demos/sensors/imu_sensor.py
.. literalinclude:: ../../../../../scripts/demos/sensors/imu_sensor.py
:language: python
:lines: 39-63
Here we have explicitly removed the bias from one of the sensors, and we can see how this affects the reported values by visualizing the sensor when we run the sample script
.. figure:: ../../_static/overview/overview_sensors_imu_visualizer.jpg
.. figure:: ../../../_static/overview/sensors/imu_visualizer.jpg
:align: center
:figwidth: 100%
:alt: IMU visualized
......@@ -82,6 +84,6 @@ The oscillations in the values reported by the sensor are a direct result of of
.. dropdown:: Code for imu_sensor.py
:icon: code
.. literalinclude:: ../../../../scripts/demos/sensors/imu_sensor.py
.. literalinclude:: ../../../../../scripts/demos/sensors/imu_sensor.py
:language: python
:linenos:
.. _overview_sensors_ray_caster:
.. currentmodule:: isaaclab
Ray Caster
=============
.. figure:: ../../_static/overview/overview_sensors_rc_patterns.jpg
.. figure:: ../../../_static/overview/sensors/raycaster_patterns.jpg
:align: center
:figwidth: 100%
:alt: A diagram outlining the basic geometry of frame transformations
......@@ -14,13 +16,13 @@ To keep the sensor performant when there are many cloned environments, the line
Using a ray caster sensor requires a **pattern** and a parent xform to be attached to. The pattern defines how the rays are cast, while the prim properties defines the orientation and position of the sensor (additional offsets can be specified for more exact placement). Isaac Lab supports a number of ray casting pattern configurations, including a generic LIDAR and grid pattern.
.. literalinclude:: ../../../../scripts/demos/sensors/raycaster_sensor.py
.. literalinclude:: ../../../../../scripts/demos/sensors/raycaster_sensor.py
:language: python
:lines: 40-71
Notice that the units on the pattern config is in degrees! Also, we enable visualization here to explicitly show the pattern in the rendering, but this is not required and should be disabled for performance tuning.
.. figure:: ../../_static/overview/overview_sensors_rc_visualizer.jpg
.. figure:: ../../../_static/overview/sensors/raycaster_visualizer.jpg
:align: center
:figwidth: 100%
:alt: Lidar Pattern visualized
......@@ -70,6 +72,6 @@ You can use this script to experiment with pattern configurations and build an i
.. dropdown:: Code for raycaster_sensor.py
:icon: code
.. literalinclude:: ../../../../scripts/demos/sensors/raycaster_sensor.py
.. literalinclude:: ../../../../../scripts/demos/sensors/raycaster_sensor.py
:language: python
:linenos:
Reinforcement Learning Wrappers
===============================
Reinforcement Learning Scripts
==============================
We provide wrappers to different reinforcement libraries. These wrappers convert the data
from the environments into the respective libraries function argument and return types.
......
Migration Guide (Isaac Sim)
===========================
Moving from Isaac Sim 2022.2.1 to 2023.1.0 and later brings in a number of changes to the
APIs and the way the application is built. This document outlines the changes
and how to migrate your code to the new APIs. Many of these changes attribute to
the underlying Omniverse Kit upgrade from 104.2 to 105.1. The new upgrade brings
the following notable changes:
* Update to USD 22.11
* Upgrading the Python from 3.7 to 3.10
Renaming of PhysX Flatcache to PhysX Fabric
-------------------------------------------
The PhysX Flatcache has been renamed to PhysX Fabric. The new name is more
descriptive of the functionality and is consistent with the naming convention
used by Omniverse called `Fabric`_. Consequently, the Python module name has
also been changed from :mod:`omni.physxflatcache` to :mod:`omni.physxfabric`.
Following this, on the Isaac Sim side, various renaming have occurred:
* The parameter passed to :class:`SimulationContext` constructor via the keyword :obj:`sim_params`
now expects the key ``use_fabric`` instead of ``use_flatcache``.
* The Python attribute :attr:`SimulationContext.get_physics_context().use_flatcache` is now
:attr:`SimulationContext.get_physics_context().use_fabric`.
* The Python function :meth:`SimulationContext.get_physics_context().enable_flatcache` is now
:meth:`SimulationContext.get_physics_context().enable_fabric`.
Renaming of the URDF and MJCF Importers
---------------------------------------
Starting from Isaac Sim 2023.1, the URDF and MJCF importers have been renamed to be more consistent
with the other asset importers in Omniverse. The importers are now available on NVIDIA-Omniverse GitHub
as open source projects.
Due to the extension name change, the Python module names have also been changed:
* URDF Importer: :mod:`omni.importer.urdf` (previously :mod:`omni.isaac.urdf`)
* MJCF Importer: :mod:`omni.importer.mjcf` (previously :mod:`omni.isaac.mjcf`)
Deprecation of :class:`UsdLux.Light` API
----------------------------------------
As highlighted in the release notes of `USD 22.11`_, the ``UsdLux.Light`` API has
been deprecated in favor of the new ``UsdLuxLightAPI`` API. In the new API the attributes
are prefixed with ``inputs:``. For example, the ``intensity`` attribute is now available as
``inputs:intensity``.
The following example shows how to create a sphere light using the old API and
the new API.
.. dropdown:: Code for Isaac Sim 2022.2.1 and below
:icon: code
.. code-block:: python
import isaacsim.core.utils.prims as prim_utils
prim_utils.create_prim(
"/World/Light/GreySphere",
"SphereLight",
translation=(4.5, 3.5, 10.0),
attributes={"radius": 2.5, "intensity": 600.0, "color": (0.75, 0.75, 0.75)},
)
.. dropdown:: Code for Isaac Sim 2023.1.0 and above
:icon: code
.. code-block:: python
import isaacsim.core.utils.prims as prim_utils
prim_utils.create_prim(
"/World/Light/WhiteSphere",
"SphereLight",
translation=(-4.5, 3.5, 10.0),
attributes={
"inputs:radius": 2.5,
"inputs:intensity": 600.0,
"inputs:color": (1.0, 1.0, 1.0)
},
)
.. _Fabric: https://docs.omniverse.nvidia.com/kit/docs/usdrt/latest/docs/usd_fabric_usdrt.html
.. _`USD 22.11`: https://github.com/PixarAnimationStudios/OpenUSD/blob/release/CHANGELOG.md
......@@ -48,7 +48,7 @@ For this tutorial, we use the training script from `Stable-Baselines3`_ workflow
The Code Explained
------------------
.. currentmodule:: isaaclab_tasks.utils
.. currentmodule:: isaaclab_rl.utils
Most of the code above is boilerplate code to create logging directories, saving the parsed configurations,
and setting up different Stable-Baselines3 components. For this tutorial, the important part is creating
......
......@@ -9,10 +9,10 @@ This script demonstrates the different camera sensors that can be attached to a
.. code-block:: bash
# Usage
./isaaclab.sh -p scripts/demos/cameras.py --enable_cameras
./isaaclab.sh -p scripts/demos/sensors/cameras.py --enable_cameras
# Usage in headless mode
./isaaclab.sh -p scripts/demos/cameras.py --headless --enable_cameras
./isaaclab.sh -p scripts/demos/sensors/cameras.py --headless --enable_cameras
"""
......@@ -23,7 +23,7 @@ import argparse
from isaaclab.app import AppLauncher
# add argparse arguments
parser = argparse.ArgumentParser(description="This script demonstrates the different camera sensor implementations.")
parser = argparse.ArgumentParser(description="Example on using the different camera sensor implementations.")
parser.add_argument("--num_envs", type=int, default=4, help="Number of environments to spawn.")
parser.add_argument("--disable_fabric", action="store_true", help="Disable Fabric API and use USD instead.")
# append AppLauncher cli args
......
......@@ -10,7 +10,7 @@ import argparse
from isaaclab.app import AppLauncher
# add argparse arguments
parser = argparse.ArgumentParser(description="Tutorial on adding sensors on a robot.")
parser = argparse.ArgumentParser(description="Example on using the contact sensor.")
parser.add_argument("--num_envs", type=int, default=1, help="Number of environments to spawn.")
# append AppLauncher cli args
AppLauncher.add_app_launcher_args(parser)
......
......@@ -8,7 +8,7 @@ import argparse
from isaaclab.app import AppLauncher
# add argparse arguments
parser = argparse.ArgumentParser(description="Tutorial on adding sensors on a robot.")
parser = argparse.ArgumentParser(description="Example on using the frame transformer sensor.")
parser.add_argument("--num_envs", type=int, default=1, help="Number of environments to spawn.")
# append AppLauncher cli args
AppLauncher.add_app_launcher_args(parser)
......
......@@ -10,7 +10,7 @@ import argparse
from isaaclab.app import AppLauncher
# add argparse arguments
parser = argparse.ArgumentParser(description="Tutorial on adding sensors on a robot.")
parser = argparse.ArgumentParser(description="Example on using the IMU sensor.")
parser.add_argument("--num_envs", type=int, default=1, help="Number of environments to spawn.")
# append AppLauncher cli args
AppLauncher.add_app_launcher_args(parser)
......
......@@ -9,7 +9,7 @@ import numpy as np
from isaaclab.app import AppLauncher
# add argparse arguments
parser = argparse.ArgumentParser(description="Tutorial on adding sensors on a robot.")
parser = argparse.ArgumentParser(description="Example on using the raycaster sensor.")
parser.add_argument("--num_envs", type=int, default=1, help="Number of environments to spawn.")
# append AppLauncher cli args
AppLauncher.add_app_launcher_args(parser)
......
......@@ -6,6 +6,11 @@
"""
This script demonstrates how to create a simple environment with a cartpole. It combines the concepts of
scene, action, observation and event managers to create an environment.
.. code-block:: bash
./isaaclab.sh -p scripts/tutorials/03_envs/create_cartpole_base_env.py --num_envs 32
"""
"""Launch Isaac Sim Simulator first."""
......
......@@ -14,7 +14,8 @@ scene entities. The rest of the environment is similar to the previous tutorials
.. code-block:: bash
# Run the script
./isaaclab.sh -p scripts/tutorials/04_envs/create_cube_base_env.py --num_envs 32
./isaaclab.sh -p scripts/tutorials/03_envs/create_cube_base_env.py --num_envs 32
"""
from __future__ import annotations
......
......@@ -13,7 +13,7 @@ the terrain.
.. code-block:: bash
# Run the script
./isaaclab.sh -p scripts/tutorials/04_envs/create_quadruped_base_env.py --num_envs 32
./isaaclab.sh -p scripts/tutorials/03_envs/create_quadruped_base_env.py --num_envs 32
"""
......
......@@ -3,7 +3,14 @@
#
# SPDX-License-Identifier: BSD-3-Clause
"""This script demonstrates how to run the RL environment for the cartpole balancing task."""
"""
This script demonstrates how to run the RL environment for the cartpole balancing task.
.. code-block:: bash
./isaaclab.sh -p scripts/tutorials/03_envs/run_cartpole_rl_env.py --num_envs 32
"""
"""Launch Isaac Sim Simulator first."""
......
......@@ -163,7 +163,7 @@ class AppLauncher:
- ``0``: Disabled
- ``1``: `Native [DEPRECATED] <https://docs.isaacsim.omniverse.nvidia.com/latest/installation/manual_livestream_clients.html#omniverse-streaming-client-deprecated>`_
- ``2``: `WebRTC https://docs.isaacsim.omniverse.nvidia.com/latest/installation/manual_livestream_clients.html#isaac-sim-short-webrtc-streaming-client>`_
- ``2``: `WebRTC <https://docs.isaacsim.omniverse.nvidia.com/latest/installation/manual_livestream_clients.html#isaac-sim-short-webrtc-streaming-client>`_
* ``enable_cameras`` (bool): If True, the app will enable camera sensors and render them, even when in
headless mode. This flag must be set to True if the environments contains any camera sensors.
......
......@@ -5,7 +5,7 @@ version = "0.1.0"
# Description
title = "Isaac Lab RL"
description="Extension containing collection of wrappers for reinforcement learning."
description="Extension containing reinforcement learning related utilities."
readme = "docs/README.md"
repository = "https://github.com/isaac-sim/IsaacLab"
category = "robotics"
......
......@@ -3,7 +3,7 @@
#
# SPDX-License-Identifier: BSD-3-Clause
"""Module for environment wrappers to different learning frameworks.
"""Package for environment wrappers to different learning frameworks.
Wrappers allow you to modify the behavior of an environment without modifying the environment itself.
This is useful for modifying the observation space, action space, or reward function. Additionally,
......@@ -16,19 +16,8 @@ All wrappers work similar to the :class:`gymnasium.Wrapper` class. Using a wrapp
the initialized environment instance to the wrapper constructor. However, since learning frameworks
expect different input and output data structures, their wrapper classes are not compatible with each other.
Thus, they should always be used in conjunction with the respective learning framework.
"""
For instance, to wrap an environment in the `Stable-Baselines3`_ wrapper, you can do the following:
.. code-block:: python
from isaaclab_rl.sb3 import Sb3VecEnvWrapper
env = Sb3VecEnvWrapper(env)
.. _RL-Games: https://github.com/Denys88/rl_games
.. _RSL-RL: https://github.com/leggedrobotics/rsl_rl
.. _skrl: https://github.com/Toni-SM/skrl
.. _Stable-Baselines3: https://github.com/DLR-RM/stable-baselines3
from . import rl_games, rsl_rl, sb3, skrl
"""
__all__ = ["sb3", "skrl", "rsl_rl", "rl_games"]
......@@ -3,7 +3,7 @@
#
# SPDX-License-Identifier: BSD-3-Clause
"""Wrapper to configure a :class:`ManagerBasedRLEnv` or :class:`DirectRlEnv` instance to RL-Games vectorized environment.
"""Wrapper to configure an environment instance to RL-Games vectorized environment.
The following example shows how to wrap an environment for RL-Games and register the environment construction
for RL-Games :class:`Runner` class:
......
......@@ -3,7 +3,17 @@
#
# SPDX-License-Identifier: BSD-3-Clause
"""Wrappers and utilities to configure an :class:`ManagerBasedRLEnv` for RSL-RL library."""
"""Wrappers and utilities to configure an environment for RSL-RL library.
The following example shows how to wrap an environment for RSL-RL:
.. code-block:: python
from isaaclab_rl.rsl_rl import RslRlVecEnvWrapper
env = RslRlVecEnvWrapper(env)
"""
from .exporter import export_policy_as_jit, export_policy_as_onnx
from .rl_cfg import RslRlOnPolicyRunnerCfg, RslRlPpoActorCriticCfg, RslRlPpoAlgorithmCfg
......
......@@ -3,19 +3,6 @@
#
# SPDX-License-Identifier: BSD-3-Clause
"""Wrapper to configure a :class:`ManagerBasedRLEnv` or :class:`DirectRlEnv` instance to RSL-RL vectorized environment.
The following example shows how to wrap an environment for RSL-RL:
.. code-block:: python
from isaaclab_rl.rsl_rl import RslRlVecEnvWrapper
env = RslRlVecEnvWrapper(env)
"""
import gymnasium as gym
import torch
......
......@@ -3,7 +3,7 @@
#
# SPDX-License-Identifier: BSD-3-Clause
"""Wrapper to configure a :class:`ManagerBasedRLEnv` or :class:`DirectRLEnv` instance to Stable-Baselines3 vectorized environment.
"""Wrapper to configure an environment instance to Stable-Baselines3 vectorized environment.
The following example shows how to wrap an environment for Stable-Baselines3:
......
......@@ -3,7 +3,7 @@
#
# SPDX-License-Identifier: BSD-3-Clause
"""Wrapper to configure an Isaac Lab environment instance to skrl environment.
"""Wrapper to configure an environment instance to skrl environment.
The following example shows how to wrap an environment for skrl:
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment