From 454905bf08c374b6162e6c4c64a320aa6261fbe6 Mon Sep 17 00:00:00 2001 From: David Hoeller Date: Fri, 26 Jul 2024 23:04:12 +0200 Subject: [PATCH] Updates code to Isaac Sim 4.1.0 release (#734) # Description Updates code to Isaac Sim 4.1.0 release. ## Type of change - New feature (non-breaking change which adds functionality) ## Checklist - [x] I have run the [`pre-commit` checks](https://pre-commit.com/) with `./isaaclab.sh --format` - [ ] 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 --- .github/workflows/postmerge-ci-buildspec.yml | 2 +- .github/workflows/premerge-ci-buildspec.yml | 2 +- CONTRIBUTORS.md | 2 +- README.md | 2 +- VERSION | 2 +- docker/.env.base | 4 +- docs/source/_static/css/custom.css | 2 + .../api/lab/omni.isaac.lab.managers.rst | 15 - docs/source/features/tiled_rendering.rst | 2 +- docs/source/how-to/add_own_library.rst | 2 +- .../migration/migrating_from_isaacgymenvs.rst | 6 + .../migrating_from_omniisaacgymenvs.rst | 5 + .../source/migration/migrating_from_orbit.rst | 7 + .../installation/binaries_installation.rst | 4 +- docs/source/setup/installation/index.rst | 8 +- .../installation/verifying_installation.rst | 4 +- pyproject.toml | 2 +- source/apps/isaaclab.backwards.compatible.kit | 479 ------------------ source/apps/isaaclab.python.headless.kit | 4 +- .../isaaclab.python.headless.rendering.kit | 2 +- source/apps/isaaclab.python.kit | 2 +- source/apps/isaaclab.python.rendering.kit | 2 +- .../omni.isaac.lab/config/extension.toml | 2 +- .../omni.isaac.lab/docs/CHANGELOG.rst | 27 +- .../omni/isaac/lab/app/app_launcher.py | 4 +- .../isaac/lab/controllers/differential_ik.py | 22 +- .../omni/isaac/lab/envs/manager_based_env.py | 12 - .../omni/isaac/lab/envs/mdp/events.py | 27 - .../omni/isaac/lab/managers/__init__.py | 3 +- .../omni/isaac/lab/managers/event_manager.py | 39 -- .../isaac/lab/managers/manager_term_cfg.py | 20 - .../frame_transformer_data.py | 31 -- .../omni/isaac/lab/sim/schemas/schemas.py | 2 +- source/extensions/omni.isaac.lab/setup.py | 2 +- .../test/sensors/test_camera.py | 23 +- .../test/sensors/test_ray_caster_camera.py | 23 +- .../extensions/omni.isaac.lab_assets/setup.py | 2 +- .../omni.isaac.lab_tasks/docs/CHANGELOG.rst | 4 +- .../config/anymal_c/navigation_env_cfg.py | 4 +- .../extensions/omni.isaac.lab_tasks/setup.py | 2 +- .../tutorials/04_sensors/run_usd_camera.py | 20 +- 41 files changed, 115 insertions(+), 714 deletions(-) delete mode 100644 source/apps/isaaclab.backwards.compatible.kit diff --git a/.github/workflows/postmerge-ci-buildspec.yml b/.github/workflows/postmerge-ci-buildspec.yml index c501165670..cdac847465 100644 --- a/.github/workflows/postmerge-ci-buildspec.yml +++ b/.github/workflows/postmerge-ci-buildspec.yml @@ -5,7 +5,7 @@ phases: commands: - echo "Building a docker image" - docker login -u \$oauthtoken -p $NGC_TOKEN nvcr.io - - docker build -t $IMAGE_NAME:latest-1.0 --build-arg ISAACSIM_VERSION_ARG=4.0.0 --build-arg ISAACSIM_ROOT_PATH_ARG=/isaac-sim --build-arg ISAACLAB_PATH_ARG=/workspace/isaaclab --build-arg DOCKER_USER_HOME_ARG=/root -f docker/Dockerfile.base . + - docker build -t $IMAGE_NAME:latest-1.0 --build-arg ISAACSIM_VERSION_ARG=4.1.0 --build-arg ISAACSIM_ROOT_PATH_ARG=/isaac-sim --build-arg ISAACLAB_PATH_ARG=/workspace/isaaclab --build-arg DOCKER_USER_HOME_ARG=/root -f docker/Dockerfile.base . - echo "Pushing the docker image" - docker push $IMAGE_NAME:latest-1.0 - docker tag $IMAGE_NAME:latest-1.0 $IMAGE_NAME:latest-1.0-b$CODEBUILD_BUILD_NUMBER diff --git a/.github/workflows/premerge-ci-buildspec.yml b/.github/workflows/premerge-ci-buildspec.yml index 19ac92d8a6..277c7d6767 100644 --- a/.github/workflows/premerge-ci-buildspec.yml +++ b/.github/workflows/premerge-ci-buildspec.yml @@ -40,7 +40,7 @@ phases: ' - ssh ubuntu@$EC2_INSTANCE_IP "docker login -u \\\$oauthtoken -p $NGC_TOKEN nvcr.io" - ssh ubuntu@$EC2_INSTANCE_IP "cd IsaacLab; - docker build -t isaac-lab-dev --build-arg ISAACSIM_VERSION_ARG=4.0.0 --build-arg ISAACSIM_ROOT_PATH_ARG=/isaac-sim --build-arg ISAACLAB_PATH_ARG=/workspace/isaaclab --build-arg DOCKER_USER_HOME_ARG=/root -f docker/Dockerfile.base . ; + docker build -t isaac-lab-dev --build-arg ISAACSIM_VERSION_ARG=4.1.0 --build-arg ISAACSIM_ROOT_PATH_ARG=/isaac-sim --build-arg ISAACLAB_PATH_ARG=/workspace/isaaclab --build-arg DOCKER_USER_HOME_ARG=/root -f docker/Dockerfile.base . ; docker run --rm --entrypoint bash --gpus all --network=host --name isaac-lab-test isaac-lab-dev ./isaaclab.sh -t && exit $?" post_build: diff --git a/CONTRIBUTORS.md b/CONTRIBUTORS.md index 1f3c40e47a..c05114014e 100644 --- a/CONTRIBUTORS.md +++ b/CONTRIBUTORS.md @@ -41,6 +41,7 @@ Guidelines for modifications: * Chenyu Yang * Jia Lin Yuan * Jingzhou Liu +* Johnson Sun * Kourosh Darvish * Lorenz Wellhausen * Muhong Guo @@ -54,7 +55,6 @@ Guidelines for modifications: * Vladimir Fokow * Zhengyu Zhang * Ziqi Fan -* Johnson Sun ## Acknowledgements diff --git a/README.md b/README.md index 4e0d0d9470..8dd6b4a7f7 100644 --- a/README.md +++ b/README.md @@ -4,7 +4,7 @@ # Isaac Lab -[![IsaacSim](https://img.shields.io/badge/IsaacSim-4.0-silver.svg)](https://docs.omniverse.nvidia.com/isaacsim/latest/overview.html) +[![IsaacSim](https://img.shields.io/badge/IsaacSim-4.1-silver.svg)](https://docs.omniverse.nvidia.com/isaacsim/latest/overview.html) [![Python](https://img.shields.io/badge/python-3.10-blue.svg)](https://docs.python.org/3/whatsnew/3.10.html) [![Linux platform](https://img.shields.io/badge/platform-linux--64-orange.svg)](https://releases.ubuntu.com/20.04/) [![Windows platform](https://img.shields.io/badge/platform-windows--64-orange.svg)](https://www.microsoft.com/en-us/) diff --git a/VERSION b/VERSION index 3eefcb9dd5..9084fa2f71 100644 --- a/VERSION +++ b/VERSION @@ -1 +1 @@ -1.0.0 +1.1.0 diff --git a/docker/.env.base b/docker/.env.base index bb5ee16c8c..d242691517 100644 --- a/docker/.env.base +++ b/docker/.env.base @@ -4,8 +4,8 @@ # Accept the NVIDIA Omniverse EULA by default ACCEPT_EULA=Y -# NVIDIA Isaac Sim version to use (e.g. 4.0.0, 2023.1.1) -ISAACSIM_VERSION=4.0.0 +# NVIDIA Isaac Sim version to use (e.g. 4.1.0) +ISAACSIM_VERSION=4.1.0 # Derived from the default path in the NVIDIA provided Isaac Sim container DOCKER_ISAACSIM_ROOT_PATH=/isaac-sim # The Isaac Lab path in the container diff --git a/docs/source/_static/css/custom.css b/docs/source/_static/css/custom.css index 0906259305..4cc0b914ff 100644 --- a/docs/source/_static/css/custom.css +++ b/docs/source/_static/css/custom.css @@ -26,6 +26,7 @@ html[data-theme="light"] { --pst-color-link: var(--pst-color-primary); --pst-color-link-hover: #789841; --pst-color-table-row-hover-bg: #daedb9; + --pst-color-accent: var(--pst-color-primary); } /* anything related to the dark theme */ @@ -51,6 +52,7 @@ html[data-theme="dark"] { --pst-color-link: var(--pst-color-primary); --pst-color-link-hover: #aee354; --pst-color-table-row-hover-bg: #3a550b; + --pst-color-accent: var(--pst-color-primary); } a { diff --git a/docs/source/api/lab/omni.isaac.lab.managers.rst b/docs/source/api/lab/omni.isaac.lab.managers.rst index d7ab8c5b22..cf6e14a7e4 100644 --- a/docs/source/api/lab/omni.isaac.lab.managers.rst +++ b/docs/source/api/lab/omni.isaac.lab.managers.rst @@ -94,21 +94,6 @@ Event Manager :members: :exclude-members: __init__ -Randomization Manager ---------------------- - -.. deprecated:: v0.3 - The Randomization Manager is deprecated and will be removed in v0.4. - Please use the :class:`EventManager` class instead. - -.. autoclass:: RandomizationManager - :members: - :inherited-members: - :show-inheritance: - -.. autoclass:: RandomizationTermCfg - :members: - :exclude-members: __init__ Command Manager --------------- diff --git a/docs/source/features/tiled_rendering.rst b/docs/source/features/tiled_rendering.rst index ac6285159a..5ee9ce7e2c 100644 --- a/docs/source/features/tiled_rendering.rst +++ b/docs/source/features/tiled_rendering.rst @@ -9,7 +9,7 @@ Tiled Rendering .. note:: - This feature is only available from Isaac Sim version 4.0.0. + This feature is only available from Isaac Sim version 4.0.0 onwards. Tiled rendering requires heavy memory resources. We recommend running at most 256 cameras in the scene. diff --git a/docs/source/how-to/add_own_library.rst b/docs/source/how-to/add_own_library.rst index 144ad2c074..32e2d5b63e 100644 --- a/docs/source/how-to/add_own_library.rst +++ b/docs/source/how-to/add_own_library.rst @@ -4,7 +4,7 @@ Adding your own learning library Isaac Lab comes pre-integrated with a number of libraries (such as RSL-RL, RL-Games, SKRL, Stable Baselines, etc.). However, you may want to integrate your own library with Isaac Lab or use a different version of the libraries than the one installed by Isaac Lab. This is possible as long as the library is available as Python package that supports -the Python version used by the underlying simulator. For instance, if you are using Isaac Sim 2023.1.1, you need +the Python version used by the underlying simulator. For instance, if you are using Isaac Sim 4.0.0 onwards, you need to ensure that the library is available for Python 3.10. Using a different version of a library diff --git a/docs/source/migration/migrating_from_isaacgymenvs.rst b/docs/source/migration/migrating_from_isaacgymenvs.rst index 23abb41c23..d04867112b 100644 --- a/docs/source/migration/migrating_from_isaacgymenvs.rst +++ b/docs/source/migration/migrating_from_isaacgymenvs.rst @@ -11,6 +11,11 @@ As both IsaacGymEnvs and the Isaac Gym Preview Release are now deprecated, the f the key differences between IsaacGymEnvs and Isaac Lab, as well as differences in APIs between Isaac Gym Preview Release and Isaac Sim. +.. note:: + + The following changes are with respect to Isaac Lab 1.0 release. Please refer to the `release notes`_ for any changes + in the future releases. + Task Config Setup ~~~~~~~~~~~~~~~~~ @@ -920,3 +925,4 @@ To launch inferencing in Isaac Lab, use the command: .. _IsaacGymEnvs: https://github.com/isaac-sim/IsaacGymEnvs .. _Isaac Gym Preview Release: https://developer.nvidia.com/isaac-gym +.. _release notes: https://github.com/isaac-sim/IsaacLab/releases diff --git a/docs/source/migration/migrating_from_omniisaacgymenvs.rst b/docs/source/migration/migrating_from_omniisaacgymenvs.rst index 66e3deacb8..7e176acb47 100644 --- a/docs/source/migration/migrating_from_omniisaacgymenvs.rst +++ b/docs/source/migration/migrating_from_omniisaacgymenvs.rst @@ -12,6 +12,10 @@ We have updated OmniIsaacGymEnvs to Isaac Sim version 4.0.0 to support the migra to Isaac Lab. Moving forward, OmniIsaacGymEnvs will be deprecated and future development will continue in Isaac Lab. +.. note:: + + The following changes are with respect to Isaac Lab 1.0 release. Please refer to the `release notes`_ for any changes + in the future releases. Task Config Setup ~~~~~~~~~~~~~~~~~ @@ -992,3 +996,4 @@ To launch inferencing in Isaac Lab, use the command: .. _`OmniIsaacGymEnvs`: https://github.com/isaac-sim/OmniIsaacGymEnvs +.. _release notes: https://github.com/isaac-sim/IsaacLab/releases diff --git a/docs/source/migration/migrating_from_orbit.rst b/docs/source/migration/migrating_from_orbit.rst index e4cf685fa1..1449a9fc47 100644 --- a/docs/source/migration/migrating_from_orbit.rst +++ b/docs/source/migration/migrating_from_orbit.rst @@ -8,6 +8,12 @@ From Orbit Since `Orbit`_ was used as basis for Isaac Lab, migrating from Orbit to Isaac Lab is straightforward. The following sections describe the changes that need to be made to your code to migrate from Orbit to Isaac Lab. +.. note:: + + The following changes are with respect to Isaac Lab 1.0 release. Please refer to the `release notes`_ for any changes + in the future releases. + + Renaming of the launch script ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ @@ -129,3 +135,4 @@ should now be: .. _Orbit: https://isaac-orbit.github.io/ +.. _release notes: https://github.com/isaac-sim/IsaacLab/releases diff --git a/docs/source/setup/installation/binaries_installation.rst b/docs/source/setup/installation/binaries_installation.rst index f8738c0547..3c53eb7dbd 100644 --- a/docs/source/setup/installation/binaries_installation.rst +++ b/docs/source/setup/installation/binaries_installation.rst @@ -136,7 +136,7 @@ to index the python modules and look for extensions shipped with Isaac Sim. cd IsaacLab # create a symbolic link ln -s path_to_isaac_sim _isaac_sim - # For example: ln -s /home/nvidia/.local/share/ov/pkg/isaac-sim-4.0.0 _isaac_sim + # For example: ln -s /home/nvidia/.local/share/ov/pkg/isaac-sim-4.1.0 _isaac_sim .. tab-item:: :icon:`fa-brands fa-windows` Windows :sync: windows @@ -147,7 +147,7 @@ to index the python modules and look for extensions shipped with Isaac Sim. cd IsaacLab :: create a symbolic link - requires launching Command Prompt with Administrator access mklink /D _isaac_sim path_to_isaac_sim - :: For example: mklink /D _isaac_sim C:/Users/nvidia/AppData/Local/ov/pkg/isaac-sim-4.0.0 + :: For example: mklink /D _isaac_sim C:/Users/nvidia/AppData/Local/ov/pkg/isaac-sim-4.1.0 Setting up the conda environment (optional) diff --git a/docs/source/setup/installation/index.rst b/docs/source/setup/installation/index.rst index afe8aebfb4..16a54c7fd8 100644 --- a/docs/source/setup/installation/index.rst +++ b/docs/source/setup/installation/index.rst @@ -1,9 +1,9 @@ Installation Guide =================== -.. image:: https://img.shields.io/badge/IsaacSim-4.0-silver.svg +.. image:: https://img.shields.io/badge/IsaacSim-4.1.0-silver.svg :target: https://developer.nvidia.com/isaac-sim - :alt: IsaacSim 4.0 + :alt: IsaacSim 4.1.0 .. image:: https://img.shields.io/badge/python-3.10-blue.svg :target: https://www.python.org/downloads/release/python-31013/ @@ -20,7 +20,7 @@ Installation Guide .. caution:: We have dropped support for Isaac Sim versions 2023.1.1 and below. We recommend using the latest - Isaac Sim 4.0 release to benefit from the latest features and improvements. + Isaac Sim 4.1.0 release to benefit from the latest features and improvements. For more information, please refer to the `Isaac Sim release notes `__. @@ -31,7 +31,7 @@ Installation Guide For the full list of system requirements for Isaac Sim, please refer to the `Isaac Sim system requirements `_. -As an experimental feature in Isaac Sim 4.0 release, Isaac Sim can also be installed through pip. +As an experimental feature since Isaac Sim 4.0 release, Isaac Sim can also be installed through pip. This simplifies the installation process by avoiding the need to download the Omniverse Launcher and installing Isaac Sim through the launcher. Therefore, there are two ways to install Isaac Lab: diff --git a/docs/source/setup/installation/verifying_installation.rst b/docs/source/setup/installation/verifying_installation.rst index 9a1730ddf5..6e89ba499a 100644 --- a/docs/source/setup/installation/verifying_installation.rst +++ b/docs/source/setup/installation/verifying_installation.rst @@ -69,7 +69,7 @@ variables to your terminal for the remaining of the installation instructions: .. code:: bash # Isaac Sim root directory - export ISAACSIM_PATH="${HOME}/.local/share/ov/pkg/isaac-sim-4.0.0" + export ISAACSIM_PATH="${HOME}/.local/share/ov/pkg/isaac-sim-4.1.0" # Isaac Sim python executable export ISAACSIM_PYTHON_EXE="${ISAACSIM_PATH}/python.sh" @@ -79,7 +79,7 @@ variables to your terminal for the remaining of the installation instructions: .. code:: batch :: Isaac Sim root directory - set ISAACSIM_PATH="C:\Users\user\AppData\Local\ov\pkg\isaac-sim-4.0.0" + set ISAACSIM_PATH="C:\Users\user\AppData\Local\ov\pkg\isaac-sim-4.1.0" :: Isaac Sim python executable set ISAACSIM_PYTHON_EXE="%ISAACSIM_PATH%\python.bat" diff --git a/pyproject.toml b/pyproject.toml index 905110f05c..402fcff6aa 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -88,6 +88,6 @@ reportPrivateUsage = "warning" skip = '*.usd,*.svg,*.png,_isaac_sim*,*.bib,*.css,*/_build' quiet-level = 0 # the world list should always have words in lower case -ignore-words-list = "haa,slq,collapsable" +ignore-words-list = "haa,slq,collapsable,buss" # todo: this is hack to deal with incorrect spelling of "Environment" in the Isaac Sim grid world asset exclude-file = "source/extensions/omni.isaac.lab/omni/isaac/lab/sim/spawners/from_files/from_files.py" diff --git a/source/apps/isaaclab.backwards.compatible.kit b/source/apps/isaaclab.backwards.compatible.kit deleted file mode 100644 index be3e9e9756..0000000000 --- a/source/apps/isaaclab.backwards.compatible.kit +++ /dev/null @@ -1,479 +0,0 @@ -# This experience must be used to run Isaac Lab with Isaac Sim 2023.1.1 - -[package] -title = "Isaac Lab Python" -description = "An app for running Isaac Lab with Isaac Sim 2023.1.1" -version = "2023.1.1" - -# That makes it browsable in UI with "experience" filter -keywords = ["experience", "app", "orbit", "python"] - -################# -# Basic Kit App # -################# -[settings] -# Note: This path was adapted to be respective to the kit-exe file location -app.versionFile = "${exe-path}/VERSION" -app.folder = "${exe-path}/" -app.name = "Isaac-Sim" -app.version = "2023.1.1" - -# set the default ros bridge to disable on startup -isaac.startup.ros_bridge_extension = "" - -################################## -# Omniverse related dependencies # -################################## -[dependencies] - -# The Main UI App -"omni.kit.uiapp" = {} -"omni.kit.renderer.core" = {} - -# Livestream - OV Streaming Client -"omni.kit.livestream.native" = {version = "2.4.0", exact = true} -"omni.kit.streamsdk.plugins" = {version = "2.5.2", exact = true} - -# Status Bar -"omni.kit.window.status_bar" = {} -"omni.stats" = {} -"omni.kit.telemetry" = {} - -# Kit Menu -"omni.kit.menu.utils" = {} -"omni.kit.menu.file" = {} -"omni.kit.menu.edit" = {} -"omni.kit.menu.create" = {} -"omni.kit.menu.common" = {} -"omni.kit.menu.stage" = {} - -"omni.kit.window.file" = {} -"omni.kit.context_menu" = {} - -"omni.kit.selection" = {} -"omni.kit.stage_templates" = {} - -# PhysX -"omni.physx.bundle" = {} -"omni.physx.tensors" = {} - -# "omni.kit.search.service" = {} -"omni.kit.primitive.mesh" = {} - -# Create Windows -"omni.kit.window.title" = {} -"omni.kit.widget.live" = {} -"omni.kit.window.stage" = {} -"omni.kit.widget.layers" = {} -"omni.kit.window.cursor" = {} -"omni.kit.window.toolbar" = {} -"omni.kit.window.commands" = {} - -# New Viewport, load the default bundle of extensions -"omni.kit.viewport.bundle" = {} -"omni.kit.viewport.menubar.lighting" = {} -# Load the rendering extensions -# "omni.renderer" = { tag = "rtx" } -# Load the RTX rendering bundle -"omni.kit.viewport.rtx" = {} -# Load the Storm rendering bundle -"omni.kit.viewport.pxr" = {} - -# Needed for Fabric delegate -"omni.resourcemonitor" = {} - -# Additional Viewport features (legacy grid etc, HUD GPU stats) -"omni.kit.viewport.legacy_gizmos" = {} -"omni.kit.viewport.ready" = {} -"omni.hydra.engine.stats" = {} - -"omni.rtx.settings.core" = {} # this is the new Render Settings 2.0 - -# "omni.kit.window.movie_capture" = { } - -"omni.kit.profiler.window" = {} - -"omni.kit.stage_column.variant" = {} -"omni.kit.stage_column.payload" = {} - -# Viewport Widgets and Collaboration -# "omni.kit.viewport_widgets_manager" = {} -"omni.kit.collaboration.channel_manager" = {} - -# "omni.kit.widgets.custom" = {} - -# utils window -"omni.kit.widget.filebrowser" = {} -"omni.kit.window.filepicker" = {} -"omni.kit.window.content_browser" = {} - -"omni.kit.window.stats" = { order = 1000 } - -"omni.kit.window.script_editor" = {} -"omni.kit.window.console" = {} - -"omni.kit.window.extensions" = {} - -# browsers -"omni.kit.browser.sample" = {} -# "omni.kit.browser.asset" = {} -# "omni.kit.browser.asset_store" = {} -# "omni.kit.browser.asset_provider.local" = {} -# "omni.kit.browser.asset_provider.sketchfab" = {} -# "omni.kit.browser.asset_provider.turbosquid" = {} -# "omni.kit.browser.asset_provider.actorcore" = {} - -# "omni.kit.window.environment" = {} # potentially increases startup times - -# Material -# "omni.kit.window.material" = { } -# "omni.kit.graph.delegate.default" = { } -# "omni.kit.window.material_graph" = { } - -# "omni.kit.window.usd_paths" = {} -# "omni.kit.window.preferences" = { order = 1000 } # so the menu is in the correct place - -# "omni.kit.renderer.capture" = {} -# "omni.kit.thumbnails.usd" = {} -# "omni.kit.thumbnails.images" = {} - -# bring all the property Widgets and Window -"omni.kit.window.property" = {} -"omni.kit.property.bundle" = {} -"omni.kit.property.layer" = {} - -# Manipulator -"omni.kit.manipulator.prim" = {} -"omni.kit.manipulator.transform" = {} -"omni.kit.manipulator.viewport" = {} -# "omni.kit.manipulator.tool.mesh_snap" = {} - -# Animation -# Needed to properly load navigation mesh -# "omni.anim.graph.schema" = {} -# "omni.anim.navigation.schema" = {} - -# OmniGraph -# "omni.graph.bundle.action" = {} -# "omni.graph.window.action" = {} -# "omni.graph.window.generic" = {} -# "omni.graph.visualization.nodes" = {} - -# Scene Visualization -"omni.usd.schema.scene.visualization" = {} -# "omni.scene.visualization.bundle" = {} - -# Hotkeys -"omni.kit.hotkeys.window" = {} - -# Needed for omni.kit.viewport.ready.viewport_ready -"omni.activity.profiler" = {} -"omni.activity.pump" = {} - -"omni.kit.widget.cache_indicator" = {} - - -[settings] -renderer.active = "rtx" -exts."omni.kit.viewport.menubar.camera".expand = true # Expand the extra-camera settings by default -exts."omni.kit.window.file".useNewFilePicker = true -exts."omni.kit.tool.asset_importer".useNewFilePicker = true -exts."omni.kit.tool.collect".useNewFilePicker = true -exts."omni.kit.widget.layers".useNewFilePicker = true -exts."omni.kit.renderer.core".imgui.enableMips = true -exts."omni.kit.browser.material".enabled = false -exts."omni.kit.browser.asset".visible_after_startup = false -exts."omni.kit.window.material".load_after_startup = true -exts."omni.kit.widget.cloud_share".require_access_code = false -exts."omni.kit.pipapi".installCheckIgnoreVersion = true -exts."omni.kit.viewport.window".startup.windowName="Viewport" # Rename from Viewport Next -exts."omni.kit.menu.utils".logDeprecated = false - -# app.content.emptyStageOnStart = false -app.file.ignoreUnsavedOnExit = true # prevents save dialog when exiting - -# deprecate support for old kit.ui.menu -app.menu.legacy_mode = false -# use omni.ui.Menu for the MenuBar -app.menu.compatibility_mode = false -# Setting the port for the embedded http server -exts."omni.services.transport.server.http".port = 8211 - -# default viewport is fill -app.runLoops.rendering_0.fillResolution = false -exts."omni.kit.window.viewport".blockingGetViewportDrawable = false - -exts."omni.kit.test".includeTests.1 = "*isaac*" - -[settings.app.settings] -persistent = false -dev_build = false -fabricDefaultStageFrameHistoryCount = 3 # needed for omni.syntheticdata TODO105 Still True? - -[settings.app.window] -title = "Isaac Sim Python" -hideUi = false -_iconSize = 256 -iconPath = "${exe-path}/../exts/omni.isaac.app.setup/data/nvidia-omniverse-isaacsim.ico" - -# Fonts -[setting.app.font] -file = "${fonts}/OpenSans-SemiBold.ttf" -size = 16 - -[settings.exts.'omni.kit.window.extensions'] -# List extensions here we want to show as featured when extension manager is opened -featuredExts = [] - -[settings.app.python] -# These disable the kit app from also printing out python output, which gets confusing -interceptSysStdOutput = false -logSysStdOutput = false - -[settings] -# MGPU is always on, you can turn it from the settings, and force this off to save even more resource if you -# only want to use a single GPU on your MGPU system -# False for Isaac Sim -renderer.multiGpu.enabled = true -renderer.multiGpu.autoEnable = true -'rtx-transient'.resourcemanager.enableTextureStreaming = true -# app.hydra.aperture.conform = 4 # in 105.1 pixels are square by default -app.hydraEngine.waitIdle = false -rtx.newDenoiser.enabled = true - -# Enable Iray and pxr by setting this to "rtx,iray,pxr" -renderer.enabled = "rtx" - -# Disable the simulation output window popup -physics.autoPopupSimulationOutputWindow=false - -### async rendering settings -omni.replicator.asyncRendering = false -app.asyncRendering = false -app.asyncRenderingLowLatency = false - -### Render thread settings -app.runLoops.main.rateLimitEnabled = false -app.runLoops.main.rateLimitFrequency = 120 -app.runLoops.main.rateLimitUsePrecisionSleep = true -app.runLoops.main.syncToPresent = false -app.runLoops.present.rateLimitFrequency = 120 -app.runLoops.present.rateLimitUsePrecisionSleep = true -app.runLoops.rendering_0.rateLimitFrequency = 120 -app.runLoops.rendering_0.rateLimitUsePrecisionSleep = true -app.runLoops.rendering_0.syncToPresent = false -app.runLoops.rendering_1.rateLimitFrequency = 120 -app.runLoops.rendering_1.rateLimitUsePrecisionSleep = true -app.runLoops.rendering_1.syncToPresent = false -app.runLoopsGlobal.syncToPresent = false -app.vsync = false -exts.omni.kit.renderer.core.present.enabled = false -exts.omni.kit.renderer.core.present.presentAfterRendering = false -persistent.app.viewport.defaults.tickRate = 120 -rtx-transient.dlssg.enabled = false - -privacy.externalBuild = true - -# hide NonToggleable Exts -exts."omni.kit.window.extensions".hideNonToggleableExts = true -exts."omni.kit.window.extensions".showFeatureOnly = false - -# Hang Detector -################################ -# app.hangDetector.enabled = false -# app.hangDetector.timeout = 120 - -############ -# Browsers # -############ -exts."omni.kit.browser.material".folders = [ - "Base::http://omniverse-content-production.s3-us-west-2.amazonaws.com/Materials/Base", - "vMaterials::http://omniverse-content-production.s3.us-west-2.amazonaws.com/Materials/vMaterials_2/", - "Twinbru Fabrics::https://twinbru.s3.eu-west-1.amazonaws.com/omniverse/Twinbru Fabrics/" -] - -exts."omni.kit.window.environment".folders = [ - "https://omniverse-content-production.s3.us-west-2.amazonaws.com/Assets/Skies/2022_1/Skies", - "http://omniverse-content-production.s3-us-west-2.amazonaws.com/Assets/Scenes/Templates", -] - -exts."omni.kit.browser.sample".folders = [ - "http://omniverse-content-production.s3-us-west-2.amazonaws.com//Samples" -] - -exts."omni.kit.browser.asset".folders = [ - "http://omniverse-content-production.s3-us-west-2.amazonaws.com/Assets/Vegetation", - "http://omniverse-content-production.s3-us-west-2.amazonaws.com/Assets/ArchVis/Commercial", - "http://omniverse-content-production.s3-us-west-2.amazonaws.com/Assets/ArchVis/Industrial", - "http://omniverse-content-production.s3-us-west-2.amazonaws.com/Assets/ArchVis/Residential", - "http://omniverse-content-production.s3-us-west-2.amazonaws.com/Assets/DigitalTwin/Assets/Warehouse/Equipment", - "http://omniverse-content-production.s3-us-west-2.amazonaws.com/Assets/DigitalTwin/Assets/Warehouse/Safety", - "http://omniverse-content-production.s3-us-west-2.amazonaws.com/Assets/DigitalTwin/Assets/Warehouse/Shipping", - "http://omniverse-content-production.s3-us-west-2.amazonaws.com/Assets/DigitalTwin/Assets/Warehouse/Storage", -] - -exts."omni.kit.browser.texture".folders = [ - "http://omniverse-content-production.s3-us-west-2.amazonaws.com/Assets/Vegetation", -] - -############################ -# Content Browser Settings # -############################ -[settings.exts."omni.kit.window.content_browser"] -enable_thumbnail_generation_images = false # temp fix to avoid leaking python processes - -####################### -# Extensions Settings # -####################### -[settings.exts."omni.kit.registry.nucleus"] -registries = [ - { name = "kit/default", url = "https://ovextensionsprod.blob.core.windows.net/exts/kit/prod/shared" }, - { name = "kit/sdk", url = "https://ovextensionsprod.blob.core.windows.net/exts/kit/prod/sdk/${kit_version_short}/${kit_git_hash}" }, - { name = "kit/community", url = "https://dw290v42wisod.cloudfront.net/exts/kit/community" }, -] - -[settings.app.extensions] -skipPublishVerification = false -registryEnabled = true - -[settings.exts."omni.kit.window.modifier.titlebar"] -titleFormatString = " Isaac Sim {version:${exe-path}/../SHORT_VERSION,font_color=0x909090,font_size=16} {separator} {file, board=true}" -showFileFullPath = true -icon.file = "${exe-path}/../exts/omni.isaac.app.setup/data/nvidia-omniverse-isaacsim.ico" -icon.size = 256 -defaultFont.name = "Arial" -defaultFont.size = 16 -defaultFont.color = 0xD0D0D0 -separator.color = 0x00B976 -separator.width = 1 -windowBorder.color = 0x0F0F0F -windowBorder.width = 2 -colors.caption = 0x0F0F0F -colors.client = 0x0F0F0F -respondOnMouseUp = true -changeWindowRegion = true - -# Register extension folder from this repo in kit -[settings.app.exts] -folders = [ - "${exe-path}/exts", # kit extensions - "${exe-path}/extscore", # kit core extensions - "${exe-path}/../exts", # isaac extensions - "${exe-path}/../extscache", # isaac cache extensions - "${exe-path}/../extsPhysics", # isaac physics extensions, - "${app}", # needed to find other app files - "${app}/../extensions", # needed to find extensions in Isaac Lab -] - -[settings.crashreporter.data] -experience = "Isaac Sim Python" - -###################### -# Isaac Sim Settings # -###################### -[settings.app.renderer] -skipWhileMinimized = false -sleepMsOnFocus = 0 -sleepMsOutOfFocus = 0 -resolution.width=1280 -resolution.height=720 - -[settings.app.livestream] -proto = "ws" -allowResize = true -outDirectory = "${data}" - -# default camera position in meters -[settings.app.viewport] -defaultCamPos.x = 5 -defaultCamPos.y = 5 -defaultCamPos.z = 5 - -################ -# RTX Settings # -################ -[settings.rtx] -translucency.worldEps = 0.005 -raytracing.fractionalCutoutOpacity = false -hydra.enableSemanticSchema = true -# descriptorSets=60000 -# reservedDescriptors=500000 -# sceneDb.maxInstances=1000000 - -# Enable this for static scenes, improves visual quality -# directLighting.sampledLighting.enabled = true - -[settings.persistent] -app.file.recentFiles = [] -app.stage.upAxis = "Z" -app.stage.movePrimInPlace = false -app.stage.instanceableOnCreatingReference = false -app.stage.materialStrength = "weakerThanDescendants" - -app.transform.gizmoUseSRT = true -app.viewport.grid.scale = 1.0 -app.viewport.pickingMode = "kind:model.ALL" -app.viewport.camMoveVelocity = 0.05 # 5 m/s -app.viewport.gizmo.scale = 0.01 # scaled to meters -app.viewport.previewOnPeek = false -app.viewport.snapToSurface = false -app.viewport.displayOptions = 31887 # Disable Frame Rate and Resolution by default -app.window.uiStyle = "NvidiaDark" -app.primCreation.DefaultXformOpType = "Scale, Orient, Translate" -app.primCreation.DefaultXformOpOrder="xformOp:translate, xformOp:orient, xformOp:scale" -app.primCreation.typedDefaults.camera.clippingRange = [0.01, 10000000.0] -simulation.minFrameRate = 15 -simulation.defaultMetersPerUnit = 1.0 -omnigraph.updateToUsd = false -omnigraph.useSchemaPrims = true -omnigraph.disablePrimNodes = true -physics.updateToUsd = true -physics.updateVelocitiesToUsd = true -physics.useFastCache = false -physics.visualizationDisplayJoints = false -physics.visualizationSimulationOutput = false -omni.replicator.captureOnPlay = true -omnihydra.useSceneGraphInstancing = true - -renderer.startupMessageDisplayed = true # hides the IOMMU popup window - -# Make Detail panel visible by default -app.omniverse.content_browser.options_menu.show_details = true -app.omniverse.filepicker.options_menu.show_details = true - - -[settings.ngx] -enabled=true # Enable this for DLSS - -######################## -# Isaac Sim Extensions # -######################## -[dependencies] -"omni.isaac.core" = {} -"omni.isaac.core_archive" = {} -"omni.pip.compute" = {} -"omni.pip.cloud" = {} -"omni.isaac.kit" = {} -"omni.isaac.ml_archive" = {} -"omni.kit.loop-isaac" = {} -"omni.isaac.utils" = {} -"omni.kit.property.isaac" = {} - -"omni.isaac.cloner" = {} -"omni.isaac.debug_draw" = {} - - -# linux only extensions -[dependencies."filter:platform"."linux-x86_64"] -# "omni.isaac.ocs2" = {} - -############################ -# Non-Isaac Sim Extensions # -############################ -[dependencies] -"omni.syntheticdata" = {} -"semantics.schema.editor" = {} -"semantics.schema.property" = {} -"omni.replicator.core" = {} -# "omni.importer.mjcf" = {} -# "omni.importer.urdf" = {} diff --git a/source/apps/isaaclab.python.headless.kit b/source/apps/isaaclab.python.headless.kit index fefdc87354..defc499cd6 100644 --- a/source/apps/isaaclab.python.headless.kit +++ b/source/apps/isaaclab.python.headless.kit @@ -14,7 +14,7 @@ keywords = ["experience", "app", "isaaclab", "python", "headless"] app.versionFile = "${exe-path}/VERSION" app.folder = "${exe-path}/" app.name = "Isaac-Sim" -app.version = "4.0.0" +app.version = "4.1.0" ################################## # Omniverse related dependencies # @@ -108,7 +108,7 @@ app.vulkan = true ################################ app.versionFile = "${app}/../VERSION" app.name = "Isaac-Sim" -app.version = "4.0.0" +app.version = "4.1.0" # hide NonToggleable Exts exts."omni.kit.window.extensions".hideNonToggleableExts = true diff --git a/source/apps/isaaclab.python.headless.rendering.kit b/source/apps/isaaclab.python.headless.rendering.kit index b88b446b72..8b31156c1a 100644 --- a/source/apps/isaaclab.python.headless.rendering.kit +++ b/source/apps/isaaclab.python.headless.rendering.kit @@ -32,7 +32,7 @@ keywords = ["experience", "app", "isaaclab", "python", "camera", "minimal"] app.versionFile = "${exe-path}/VERSION" app.folder = "${exe-path}/" app.name = "Isaac-Sim" -app.version = "4.0.0" +app.version = "4.1.0" # set the default ros bridge to disable on startup isaac.startup.ros_bridge_extension = "" diff --git a/source/apps/isaaclab.python.kit b/source/apps/isaaclab.python.kit index ba053af63a..6f11ae6958 100644 --- a/source/apps/isaaclab.python.kit +++ b/source/apps/isaaclab.python.kit @@ -217,7 +217,7 @@ app.vulkan = true app.versionFile = "${exe-path}/VERSION" app.folder = "${exe-path}/" app.name = "Isaac-Sim" -app.version = "4.0.0" +app.version = "4.1.0" # hide NonToggleable Exts exts."omni.kit.window.extensions".hideNonToggleableExts = true diff --git a/source/apps/isaaclab.python.rendering.kit b/source/apps/isaaclab.python.rendering.kit index 38dcc67d92..c74a80390f 100644 --- a/source/apps/isaaclab.python.rendering.kit +++ b/source/apps/isaaclab.python.rendering.kit @@ -32,7 +32,7 @@ keywords = ["experience", "app", "isaaclab", "python", "camera", "minimal"] app.versionFile = "${exe-path}/VERSION" app.folder = "${exe-path}/" app.name = "Isaac-Sim" -app.version = "4.0.0" +app.version = "4.1.0" # set the default ros bridge to disable on startup isaac.startup.ros_bridge_extension = "" diff --git a/source/extensions/omni.isaac.lab/config/extension.toml b/source/extensions/omni.isaac.lab/config/extension.toml index 283d1bc921..124ec30cef 100644 --- a/source/extensions/omni.isaac.lab/config/extension.toml +++ b/source/extensions/omni.isaac.lab/config/extension.toml @@ -1,7 +1,7 @@ [package] # Note: Semantic Versioning is used: https://semver.org/ -version = "0.19.4" +version = "0.20.0" # Description title = "Isaac Lab framework for Robot Learning" diff --git a/source/extensions/omni.isaac.lab/docs/CHANGELOG.rst b/source/extensions/omni.isaac.lab/docs/CHANGELOG.rst index 93699ee7b4..d85785e044 100644 --- a/source/extensions/omni.isaac.lab/docs/CHANGELOG.rst +++ b/source/extensions/omni.isaac.lab/docs/CHANGELOG.rst @@ -1,6 +1,31 @@ Changelog --------- +0.20.0 (2024-07-26) +~~~~~~~~~~~~~~~~~~~ + +Added +^^^^^ + +* Support for the Isaac Sim 4.1.0 release. + +Removed +^^^^^^^ + +* The ``mdp.add_body_mass`` method in the events. Please use the + :meth:`omni.isaac.lab.envs.mdp.randomize_rigid_body_mass` method instead. +* The classes ``managers.RandomizationManager`` and ``managers.RandomizationTermCfg`` are replaced with + :class:`omni.isaac.lab.managers.EventManager` and :class:`omni.isaac.lab.managers.EventTermCfg` classes. +* The following properties in :class:`omni.isaac.lab.sensors.FrameTransformerData`: + + * ``target_rot_source`` --> :attr:`~omni.isaac.lab.sensors.FrameTransformerData.target_quat_w` + * ``target_rot_w`` --> :attr:`~omni.isaac.lab.sensors.FrameTransformerData.target_quat_source` + * ``source_rot_w`` --> :attr:`~omni.isaac.lab.sensors.FrameTransformerData.source_quat_w` + +* The kit experience file ``isaaclab.backwards.compatible.kit``. This is followed by dropping the support for + Isaac Sim 2023.1.1 completely. + + 0.19.4 (2024-07-13) ~~~~~~~~~~~~~~~~~~~ @@ -81,7 +106,7 @@ Fixed Fixed ^^^^^ -* Fixed the gravity vector direction used inside the :class:`omni.isaac.lab.assets.RigidObjectData`class. +* Fixed the gravity vector direction used inside the :class:`omni.isaac.lab.assets.RigidObjectData` class. Earlier, the gravity direction was hard-coded as (0, 0, -1) which may be different from the actual gravity direction in the simulation. Now, the gravity direction is obtained from the simulation context and used to compute the projection of the gravity vector on the object. diff --git a/source/extensions/omni.isaac.lab/omni/isaac/lab/app/app_launcher.py b/source/extensions/omni.isaac.lab/omni/isaac/lab/app/app_launcher.py index c0c57184d8..e6034068f5 100644 --- a/source/extensions/omni.isaac.lab/omni/isaac/lab/app/app_launcher.py +++ b/source/extensions/omni.isaac.lab/omni/isaac/lab/app/app_launcher.py @@ -564,8 +564,8 @@ def _load_extensions(self): if self._livestream == 1: # Enable Native Livestream extension # Default App: Streaming Client from the Omniverse Launcher - enable_extension("omni.kit.streamsdk.plugins-3.2.1") - enable_extension("omni.kit.livestream.core-3.2.0") + enable_extension("omni.kit.streamsdk.plugins-4.5.1") + enable_extension("omni.kit.livestream.core-4.3.6") enable_extension("omni.kit.livestream.native-4.1.0") elif self._livestream == 2: # Enable WebRTC Livestream extension diff --git a/source/extensions/omni.isaac.lab/omni/isaac/lab/controllers/differential_ik.py b/source/extensions/omni.isaac.lab/omni/isaac/lab/controllers/differential_ik.py index cbb32e1a7e..0bdff8316f 100644 --- a/source/extensions/omni.isaac.lab/omni/isaac/lab/controllers/differential_ik.py +++ b/source/extensions/omni.isaac.lab/omni/isaac/lab/controllers/differential_ik.py @@ -22,18 +22,20 @@ class DifferentialIKController: .. math:: - \Delta \mathbf{q} = \mathbf{J}^{\dagger} \Delta \mathbf{x} - \mathbf{q}_{\text{desired}} = \mathbf{q}_{\text{current}} + \Delta \mathbf{q} + \Delta \mathbf{q} &= \mathbf{J}^{\dagger} \Delta \mathbf{x} \\ + \mathbf{q}_{\text{desired}} &= \mathbf{q}_{\text{current}} + \Delta \mathbf{q} where :math:`\mathbf{J}^{\dagger}` is the pseudo-inverse of the Jacobian matrix :math:`\mathbf{J}`, :math:`\Delta \mathbf{x}` is the desired change in pose, and :math:`\mathbf{q}_{\text{current}}` is the current joint positions. To deal with singularity in Jacobian, the following methods are supported for computing inverse of the Jacobian: - - "pinv": Moore-Penrose pseudo-inverse - - "svd": Adaptive singular-value decomposition (SVD) - - "trans": Transpose of matrix - - "dls": Damped version of Moore-Penrose pseudo-inverse (also called Levenberg-Marquardt) + + - "pinv": Moore-Penrose pseudo-inverse + - "svd": Adaptive singular-value decomposition (SVD) + - "trans": Transpose of matrix + - "dls": Damped version of Moore-Penrose pseudo-inverse (also called Levenberg-Marquardt) + .. caution:: The controller does not assume anything about the frames of the current and desired end-effector pose, @@ -41,8 +43,12 @@ class DifferentialIKController: in the correct format. Reference: - [1] https://ethz.ch/content/dam/ethz/special-interest/mavt/robotics-n-intelligent-systems/rsl-dam/documents/RobotDynamics2017/RD_HS2017script.pdf - [2] https://www.cs.cmu.edu/~15464-s13/lectures/lecture6/iksurvey.pdf + + 1. `Robot Dynamics Lecture Notes `_ + by Marco Hutter (ETH Zurich) + 2. `Introduction to Inverse Kinematics `_ + by Samuel R. Buss (University of California, San Diego) + """ def __init__(self, cfg: DifferentialIKControllerCfg, num_envs: int, device: str): diff --git a/source/extensions/omni.isaac.lab/omni/isaac/lab/envs/manager_based_env.py b/source/extensions/omni.isaac.lab/omni/isaac/lab/envs/manager_based_env.py index c7603cf317..ecd1fea464 100644 --- a/source/extensions/omni.isaac.lab/omni/isaac/lab/envs/manager_based_env.py +++ b/source/extensions/omni.isaac.lab/omni/isaac/lab/envs/manager_based_env.py @@ -5,7 +5,6 @@ import builtins import torch -import warnings from collections.abc import Sequence from typing import Any @@ -201,17 +200,6 @@ def load_managers(self): :meth:`SimulationContext.reset_async` and it isn't possible to call async functions in the constructor. """ - # check the configs - if self.cfg.randomization is not None: - msg = ( - "The 'randomization' attribute is deprecated and will be removed in a future release. " - "Please use the 'events' attribute to configure the randomization settings." - ) - warnings.warn(msg, category=DeprecationWarning) - carb.log_warn(msg) - # set the randomization as events (for backward compatibility) - self.cfg.events = self.cfg.randomization - # prepare the managers # -- action manager self.action_manager = ActionManager(self.cfg.actions, self) diff --git a/source/extensions/omni.isaac.lab/omni/isaac/lab/envs/mdp/events.py b/source/extensions/omni.isaac.lab/omni/isaac/lab/envs/mdp/events.py index 6bac26db0d..a9ae9d40d3 100644 --- a/source/extensions/omni.isaac.lab/omni/isaac/lab/envs/mdp/events.py +++ b/source/extensions/omni.isaac.lab/omni/isaac/lab/envs/mdp/events.py @@ -15,7 +15,6 @@ from __future__ import annotations import torch -import warnings from typing import TYPE_CHECKING, Literal import carb @@ -123,32 +122,6 @@ def randomize_rigid_body_material( asset.root_physx_view.set_material_properties(materials, env_ids) -def add_body_mass( - env: ManagerBasedEnv, - env_ids: torch.Tensor | None, - mass_distribution_params: tuple[float, float], - asset_cfg: SceneEntityCfg, -): - """Randomize the mass of the bodies by adding a random value sampled from the given range. - - .. tip:: - This function uses CPU tensors to assign the body masses. It is recommended to use this function - only during the initialization of the environment. - - .. deprecated:: v0.4 - This function is deprecated. Please use :func:`randomize_rigid_body_mass` with ``operation="add"`` instead. - - """ - msg = "Event term 'add_body_mass' is deprecated. Please use 'randomize_rigid_body_mass' with operation='add'." - warnings.warn(msg, DeprecationWarning) - carb.log_warn(msg) - - # call the new function - randomize_rigid_body_mass( - env, env_ids, asset_cfg, mass_distribution_params, operation="add", distribution="uniform" - ) - - def randomize_rigid_body_mass( env: ManagerBasedEnv, env_ids: torch.Tensor | None, diff --git a/source/extensions/omni.isaac.lab/omni/isaac/lab/managers/__init__.py b/source/extensions/omni.isaac.lab/omni/isaac/lab/managers/__init__.py index ff67be2a5a..d06f832b52 100644 --- a/source/extensions/omni.isaac.lab/omni/isaac/lab/managers/__init__.py +++ b/source/extensions/omni.isaac.lab/omni/isaac/lab/managers/__init__.py @@ -13,7 +13,7 @@ from .action_manager import ActionManager, ActionTerm from .command_manager import CommandManager, CommandTerm from .curriculum_manager import CurriculumManager -from .event_manager import EventManager, RandomizationManager +from .event_manager import EventManager from .manager_base import ManagerBase, ManagerTermBase from .manager_term_cfg import ( ActionTermCfg, @@ -23,7 +23,6 @@ ManagerTermBaseCfg, ObservationGroupCfg, ObservationTermCfg, - RandomizationTermCfg, RewardTermCfg, TerminationTermCfg, ) diff --git a/source/extensions/omni.isaac.lab/omni/isaac/lab/managers/event_manager.py b/source/extensions/omni.isaac.lab/omni/isaac/lab/managers/event_manager.py index f8387abef0..1fbccd5bd5 100644 --- a/source/extensions/omni.isaac.lab/omni/isaac/lab/managers/event_manager.py +++ b/source/extensions/omni.isaac.lab/omni/isaac/lab/managers/event_manager.py @@ -8,7 +8,6 @@ from __future__ import annotations import torch -import warnings from collections.abc import Sequence from prettytable import PrettyTable from typing import TYPE_CHECKING @@ -285,41 +284,3 @@ def _prepare_terms(self): lower, upper = term_cfg.interval_range_s time_left = torch.rand(self.num_envs, device=self.device) * (upper - lower) + lower self._interval_mode_time_left.append(time_left) - - -class RandomizationManager(EventManager): - """Manager for applying event specific operations to different elements in the scene. - - .. deprecated:: v0.4.0 - As the RandomizationManager also handles events such as resetting the environment, the class has been - renamed to EventManager as it is more general purpose. The RandomizationManager will be removed in v0.4.0. - """ - - def __init__(self, cfg: object, env: ManagerBasedEnv): - """Initialize the randomization manager. - - Args: - cfg: A configuration object or dictionary (``dict[str, EventTermCfg]``). - env: An environment object. - """ - dep_msg = "The class 'RandomizationManager' will be removed in v0.4.0. Please use 'EventManager' instead." - warnings.warn(dep_msg, DeprecationWarning) - carb.log_error(dep_msg) - - super().__init__(cfg, env) - - def randomize(self, mode: str, env_ids: Sequence[int] | None = None, dt: float | None = None): - """Randomize the environment. - - .. deprecated:: v0.4.0 - This method will be removed in v0.4.0. Please use the method :meth:`EventManager.apply` - instead. - """ - dep_msg = ( - "The class 'RandomizationManager' including its method 'randomize' will be removed in v0.4.0. Please use " - "the class 'EventManager' with the method 'apply' instead." - ) - warnings.warn(dep_msg, DeprecationWarning) - carb.log_error(dep_msg) - - self.apply(mode, env_ids, dt) diff --git a/source/extensions/omni.isaac.lab/omni/isaac/lab/managers/manager_term_cfg.py b/source/extensions/omni.isaac.lab/omni/isaac/lab/managers/manager_term_cfg.py index 8d6fdf3c7e..e2f7c1c7f0 100644 --- a/source/extensions/omni.isaac.lab/omni/isaac/lab/managers/manager_term_cfg.py +++ b/source/extensions/omni.isaac.lab/omni/isaac/lab/managers/manager_term_cfg.py @@ -8,7 +8,6 @@ from __future__ import annotations import torch -import warnings from collections.abc import Callable from dataclasses import MISSING from typing import TYPE_CHECKING, Any @@ -211,25 +210,6 @@ class EventTermCfg(ManagerTermBaseCfg): """ -@configclass -class RandomizationTermCfg(EventTermCfg): - """Configuration for a randomization term. - - .. deprecated:: v0.3.0 - - This class is deprecated and will be removed in v0.4.0. Please use :class:`EventTermCfg` instead. - """ - - def __init__(self, *args, **kwargs): - super().__init__(*args, **kwargs) - # Deprecation warning. - warnings.warn( - "The RandomizationTermCfg has been renamed to EventTermCfg and will be removed in v0.4.0. Please use" - " EventTermCfg instead.", - DeprecationWarning, - ) - - ## # Reward manager. ## diff --git a/source/extensions/omni.isaac.lab/omni/isaac/lab/sensors/frame_transformer/frame_transformer_data.py b/source/extensions/omni.isaac.lab/omni/isaac/lab/sensors/frame_transformer/frame_transformer_data.py index 288ebdcf35..0f4f4e0171 100644 --- a/source/extensions/omni.isaac.lab/omni/isaac/lab/sensors/frame_transformer/frame_transformer_data.py +++ b/source/extensions/omni.isaac.lab/omni/isaac/lab/sensors/frame_transformer/frame_transformer_data.py @@ -4,7 +4,6 @@ # SPDX-License-Identifier: BSD-3-Clause import torch -import warnings from dataclasses import dataclass @@ -55,33 +54,3 @@ class FrameTransformerData: Shape is (N, 4), where N is the number of environments. """ - - @property - def target_rot_source(self) -> torch.Tensor: - """Alias for :attr:`target_quat_source`. - - .. deprecated:: v0.2.1 - Use :attr:`target_quat_source` instead. Will be removed in v0.3.0. - """ - warnings.warn("'target_rot_source' is deprecated, use 'target_quat_source' instead.", DeprecationWarning) - return self.target_quat_source - - @property - def target_rot_w(self) -> torch.Tensor: - """Alias for :attr:`target_quat_w`. - - .. deprecated:: v0.2.1 - Use :attr:`target_quat_w` instead. Will be removed in v0.3.0. - """ - warnings.warn("'target_rot_w' is deprecated, use 'target_quat_w' instead.", DeprecationWarning) - return self.target_quat_w - - @property - def source_rot_w(self) -> torch.Tensor: - """Alias for :attr:`source_quat_w`. - - .. deprecated:: v0.2.1 - Use :attr:`source_quat_w` instead. Will be removed in v0.3.0. - """ - warnings.warn("'source_rot_w' is deprecated, use 'source_quat_w' instead.", DeprecationWarning) - return self.source_quat_w diff --git a/source/extensions/omni.isaac.lab/omni/isaac/lab/sim/schemas/schemas.py b/source/extensions/omni.isaac.lab/omni/isaac/lab/sim/schemas/schemas.py index 9103e4cb6f..be61cb6bd1 100644 --- a/source/extensions/omni.isaac.lab/omni/isaac/lab/sim/schemas/schemas.py +++ b/source/extensions/omni.isaac.lab/omni/isaac/lab/sim/schemas/schemas.py @@ -743,7 +743,7 @@ def modify_deformable_body_properties( .. caution:: The deformable body schema is still under development by the Omniverse team. The current implementation - works with the PhysX schemas shipped with Isaac Sim 4.0.0. It may change in future releases. + works with the PhysX schemas shipped with Isaac Sim 4.0.0 and 4.1.0. It may change in future releases. .. note:: This function is decorated with :func:`apply_nested` that sets the properties to all the prims diff --git a/source/extensions/omni.isaac.lab/setup.py b/source/extensions/omni.isaac.lab/setup.py index c63d1fb586..70ad504134 100644 --- a/source/extensions/omni.isaac.lab/setup.py +++ b/source/extensions/omni.isaac.lab/setup.py @@ -52,8 +52,8 @@ classifiers=[ "Natural Language :: English", "Programming Language :: Python :: 3.10", + "Isaac Sim :: 4.1.0", "Isaac Sim :: 4.0.0", - "Isaac Sim :: 2023.1.1", ], zip_safe=False, ) diff --git a/source/extensions/omni.isaac.lab/test/sensors/test_camera.py b/source/extensions/omni.isaac.lab/test/sensors/test_camera.py index 715edd9308..686afc7376 100644 --- a/source/extensions/omni.isaac.lab/test/sensors/test_camera.py +++ b/source/extensions/omni.isaac.lab/test/sensors/test_camera.py @@ -443,22 +443,13 @@ def test_throughput(self): # Save images with Timer(f"Time taken for writing data with shape {camera.image_shape} "): # Pack data back into replicator format to save them using its writer - if self.sim.get_version()[0] == 4: - rep_output = {"annotators": {}} - camera_data = convert_dict_to_backend(camera.data.output[0].to_dict(), backend="numpy") - for key, data, info in zip(camera_data.keys(), camera_data.values(), camera.data.info[0].values()): - if info is not None: - rep_output["annotators"][key] = {"render_product": {"data": data, **info}} - else: - rep_output["annotators"][key] = {"render_product": {"data": data}} - else: - rep_output = dict() - camera_data = convert_dict_to_backend(camera.data.output[0].to_dict(), backend="numpy") - for key, data, info in zip(camera_data.keys(), camera_data.values(), camera.data.info[0].values()): - if info is not None: - rep_output[key] = {"data": data, "info": info} - else: - rep_output[key] = data + rep_output = {"annotators": {}} + camera_data = convert_dict_to_backend(camera.data.output[0].to_dict(), backend="numpy") + for key, data, info in zip(camera_data.keys(), camera_data.values(), camera.data.info[0].values()): + if info is not None: + rep_output["annotators"][key] = {"render_product": {"data": data, **info}} + else: + rep_output["annotators"][key] = {"render_product": {"data": data}} # Save images rep_output["trigger_outputs"] = {"on_time": camera.frame[0]} rep_writer.write(rep_output) diff --git a/source/extensions/omni.isaac.lab/test/sensors/test_ray_caster_camera.py b/source/extensions/omni.isaac.lab/test/sensors/test_ray_caster_camera.py index 7e4f420ab1..16a97d8387 100644 --- a/source/extensions/omni.isaac.lab/test/sensors/test_ray_caster_camera.py +++ b/source/extensions/omni.isaac.lab/test/sensors/test_ray_caster_camera.py @@ -344,22 +344,13 @@ def test_throughput(self): # Save images with Timer(f"Time taken for writing data with shape {camera.image_shape} "): # Pack data back into replicator format to save them using its writer - if self.sim.get_version()[0] == 4: - rep_output = {"annotators": {}} - camera_data = convert_dict_to_backend(camera.data.output[0].to_dict(), backend="numpy") - for key, data, info in zip(camera_data.keys(), camera_data.values(), camera.data.info[0].values()): - if info is not None: - rep_output["annotators"][key] = {"render_product": {"data": data, **info}} - else: - rep_output["annotators"][key] = {"render_product": {"data": data}} - else: - rep_output = dict() - camera_data = convert_dict_to_backend(camera.data.output[0].to_dict(), backend="numpy") - for key, data, info in zip(camera_data.keys(), camera_data.values(), camera.data.info[0].values()): - if info is not None: - rep_output[key] = {"data": data, "info": info} - else: - rep_output[key] = data + rep_output = {"annotators": {}} + camera_data = convert_dict_to_backend(camera.data.output[0].to_dict(), backend="numpy") + for key, data, info in zip(camera_data.keys(), camera_data.values(), camera.data.info[0].values()): + if info is not None: + rep_output["annotators"][key] = {"render_product": {"data": data, **info}} + else: + rep_output["annotators"][key] = {"render_product": {"data": data}} # Save images rep_output["trigger_outputs"] = {"on_time": camera.frame[0]} rep_writer.write(rep_output) diff --git a/source/extensions/omni.isaac.lab_assets/setup.py b/source/extensions/omni.isaac.lab_assets/setup.py index dcd0f0d647..47c2a1206e 100644 --- a/source/extensions/omni.isaac.lab_assets/setup.py +++ b/source/extensions/omni.isaac.lab_assets/setup.py @@ -30,8 +30,8 @@ classifiers=[ "Natural Language :: English", "Programming Language :: Python :: 3.10", + "Isaac Sim :: 4.1.0", "Isaac Sim :: 4.0.0", - "Isaac Sim :: 2023.1.1", ], zip_safe=False, ) diff --git a/source/extensions/omni.isaac.lab_tasks/docs/CHANGELOG.rst b/source/extensions/omni.isaac.lab_tasks/docs/CHANGELOG.rst index ddc9d33398..febc55c15f 100644 --- a/source/extensions/omni.isaac.lab_tasks/docs/CHANGELOG.rst +++ b/source/extensions/omni.isaac.lab_tasks/docs/CHANGELOG.rst @@ -2,12 +2,12 @@ Changelog --------- 0.7.10 (2024-07-02) -~~~~~~~~~~~~~~~~~~ +~~~~~~~~~~~~~~~~~~~ Added ^^^^^ -* Extended skrl wrapper to support training/evaluation using JAX +* Extended skrl wrapper to support training/evaluation using JAX. 0.7.9 (2024-07-01) diff --git a/source/extensions/omni.isaac.lab_tasks/omni/isaac/lab_tasks/manager_based/navigation/config/anymal_c/navigation_env_cfg.py b/source/extensions/omni.isaac.lab_tasks/omni/isaac/lab_tasks/manager_based/navigation/config/anymal_c/navigation_env_cfg.py index 61acf925c4..6f5f00a025 100644 --- a/source/extensions/omni.isaac.lab_tasks/omni/isaac/lab_tasks/manager_based/navigation/config/anymal_c/navigation_env_cfg.py +++ b/source/extensions/omni.isaac.lab_tasks/omni/isaac/lab_tasks/manager_based/navigation/config/anymal_c/navigation_env_cfg.py @@ -6,9 +6,9 @@ import math from omni.isaac.lab.envs import ManagerBasedRLEnvCfg +from omni.isaac.lab.managers import EventTermCfg as EventTerm from omni.isaac.lab.managers import ObservationGroupCfg as ObsGroup from omni.isaac.lab.managers import ObservationTermCfg as ObsTerm -from omni.isaac.lab.managers import RandomizationTermCfg as RandTerm from omni.isaac.lab.managers import RewardTermCfg as RewTerm from omni.isaac.lab.managers import SceneEntityCfg from omni.isaac.lab.managers import TerminationTermCfg as DoneTerm @@ -25,7 +25,7 @@ class EventCfg: """Configuration for events.""" - reset_base = RandTerm( + reset_base = EventTerm( func=mdp.reset_root_state_uniform, mode="reset", params={ diff --git a/source/extensions/omni.isaac.lab_tasks/setup.py b/source/extensions/omni.isaac.lab_tasks/setup.py index c6c742f566..e809fc2943 100644 --- a/source/extensions/omni.isaac.lab_tasks/setup.py +++ b/source/extensions/omni.isaac.lab_tasks/setup.py @@ -76,8 +76,8 @@ classifiers=[ "Natural Language :: English", "Programming Language :: Python :: 3.10", + "Isaac Sim :: 4.1.0", "Isaac Sim :: 4.0.0", - "Isaac Sim :: 2023.1.1", ], zip_safe=False, ) diff --git a/source/standalone/tutorials/04_sensors/run_usd_camera.py b/source/standalone/tutorials/04_sensors/run_usd_camera.py index e798c98828..4f93ebf7dd 100644 --- a/source/standalone/tutorials/04_sensors/run_usd_camera.py +++ b/source/standalone/tutorials/04_sensors/run_usd_camera.py @@ -236,20 +236,12 @@ def run_simulator(sim: sim_utils.SimulationContext, scene_entities: dict): single_cam_info = camera.data.info[camera_index] # Pack data back into replicator format to save them using its writer - if sim.get_version()[0] == 4: - rep_output = {"annotators": {}} - for key, data, info in zip(single_cam_data.keys(), single_cam_data.values(), single_cam_info.values()): - if info is not None: - rep_output["annotators"][key] = {"render_product": {"data": data, **info}} - else: - rep_output["annotators"][key] = {"render_product": {"data": data}} - else: - rep_output = dict() - for key, data, info in zip(single_cam_data.keys(), single_cam_data.values(), single_cam_info.values()): - if info is not None: - rep_output[key] = {"data": data, "info": info} - else: - rep_output[key] = data + rep_output = {"annotators": {}} + for key, data, info in zip(single_cam_data.keys(), single_cam_data.values(), single_cam_info.values()): + if info is not None: + rep_output["annotators"][key] = {"render_product": {"data": data, **info}} + else: + rep_output["annotators"][key] = {"render_product": {"data": data}} # Save images # Note: We need to provide On-time data for Replicator to save the images. rep_output["trigger_outputs"] = {"on_time": camera.frame[camera_index]}