Unverified Commit 454905bf authored by David Hoeller's avatar David Hoeller Committed by GitHub

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
parent ab7cdb81
...@@ -5,7 +5,7 @@ phases: ...@@ -5,7 +5,7 @@ phases:
commands: commands:
- echo "Building a docker image" - echo "Building a docker image"
- docker login -u \$oauthtoken -p $NGC_TOKEN nvcr.io - 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" - echo "Pushing the docker image"
- docker push $IMAGE_NAME:latest-1.0 - docker push $IMAGE_NAME:latest-1.0
- docker tag $IMAGE_NAME:latest-1.0 $IMAGE_NAME:latest-1.0-b$CODEBUILD_BUILD_NUMBER - docker tag $IMAGE_NAME:latest-1.0 $IMAGE_NAME:latest-1.0-b$CODEBUILD_BUILD_NUMBER
......
...@@ -40,7 +40,7 @@ phases: ...@@ -40,7 +40,7 @@ phases:
' '
- ssh ubuntu@$EC2_INSTANCE_IP "docker login -u \\\$oauthtoken -p $NGC_TOKEN nvcr.io" - ssh ubuntu@$EC2_INSTANCE_IP "docker login -u \\\$oauthtoken -p $NGC_TOKEN nvcr.io"
- ssh ubuntu@$EC2_INSTANCE_IP "cd IsaacLab; - 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 && docker run --rm --entrypoint bash --gpus all --network=host --name isaac-lab-test isaac-lab-dev ./isaaclab.sh -t &&
exit $?" exit $?"
post_build: post_build:
......
...@@ -41,6 +41,7 @@ Guidelines for modifications: ...@@ -41,6 +41,7 @@ Guidelines for modifications:
* Chenyu Yang * Chenyu Yang
* Jia Lin Yuan * Jia Lin Yuan
* Jingzhou Liu * Jingzhou Liu
* Johnson Sun
* Kourosh Darvish * Kourosh Darvish
* Lorenz Wellhausen * Lorenz Wellhausen
* Muhong Guo * Muhong Guo
...@@ -54,7 +55,6 @@ Guidelines for modifications: ...@@ -54,7 +55,6 @@ Guidelines for modifications:
* Vladimir Fokow * Vladimir Fokow
* Zhengyu Zhang * Zhengyu Zhang
* Ziqi Fan * Ziqi Fan
* Johnson Sun
## Acknowledgements ## Acknowledgements
......
...@@ -4,7 +4,7 @@ ...@@ -4,7 +4,7 @@
# Isaac Lab # 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) [![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/) [![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/) [![Windows platform](https://img.shields.io/badge/platform-windows--64-orange.svg)](https://www.microsoft.com/en-us/)
......
...@@ -4,8 +4,8 @@ ...@@ -4,8 +4,8 @@
# Accept the NVIDIA Omniverse EULA by default # Accept the NVIDIA Omniverse EULA by default
ACCEPT_EULA=Y ACCEPT_EULA=Y
# NVIDIA Isaac Sim version to use (e.g. 4.0.0, 2023.1.1) # NVIDIA Isaac Sim version to use (e.g. 4.1.0)
ISAACSIM_VERSION=4.0.0 ISAACSIM_VERSION=4.1.0
# Derived from the default path in the NVIDIA provided Isaac Sim container # Derived from the default path in the NVIDIA provided Isaac Sim container
DOCKER_ISAACSIM_ROOT_PATH=/isaac-sim DOCKER_ISAACSIM_ROOT_PATH=/isaac-sim
# The Isaac Lab path in the container # The Isaac Lab path in the container
......
...@@ -26,6 +26,7 @@ html[data-theme="light"] { ...@@ -26,6 +26,7 @@ html[data-theme="light"] {
--pst-color-link: var(--pst-color-primary); --pst-color-link: var(--pst-color-primary);
--pst-color-link-hover: #789841; --pst-color-link-hover: #789841;
--pst-color-table-row-hover-bg: #daedb9; --pst-color-table-row-hover-bg: #daedb9;
--pst-color-accent: var(--pst-color-primary);
} }
/* anything related to the dark theme */ /* anything related to the dark theme */
...@@ -51,6 +52,7 @@ html[data-theme="dark"] { ...@@ -51,6 +52,7 @@ html[data-theme="dark"] {
--pst-color-link: var(--pst-color-primary); --pst-color-link: var(--pst-color-primary);
--pst-color-link-hover: #aee354; --pst-color-link-hover: #aee354;
--pst-color-table-row-hover-bg: #3a550b; --pst-color-table-row-hover-bg: #3a550b;
--pst-color-accent: var(--pst-color-primary);
} }
a { a {
......
...@@ -94,21 +94,6 @@ Event Manager ...@@ -94,21 +94,6 @@ Event Manager
:members: :members:
:exclude-members: __init__ :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 Command Manager
--------------- ---------------
......
...@@ -9,7 +9,7 @@ Tiled Rendering ...@@ -9,7 +9,7 @@ Tiled Rendering
.. note:: .. 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. Tiled rendering requires heavy memory resources. We recommend running at most 256 cameras in the scene.
......
...@@ -4,7 +4,7 @@ Adding your own learning library ...@@ -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.). 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 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 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. to ensure that the library is available for Python 3.10.
Using a different version of a library Using a different version of a library
......
...@@ -11,6 +11,11 @@ As both IsaacGymEnvs and the Isaac Gym Preview Release are now deprecated, the f ...@@ -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 the key differences between IsaacGymEnvs and Isaac Lab, as well as differences in APIs between Isaac Gym Preview
Release and Isaac Sim. 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 Task Config Setup
~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~
...@@ -920,3 +925,4 @@ To launch inferencing in Isaac Lab, use the command: ...@@ -920,3 +925,4 @@ To launch inferencing in Isaac Lab, use the command:
.. _IsaacGymEnvs: https://github.com/isaac-sim/IsaacGymEnvs .. _IsaacGymEnvs: https://github.com/isaac-sim/IsaacGymEnvs
.. _Isaac Gym Preview Release: https://developer.nvidia.com/isaac-gym .. _Isaac Gym Preview Release: https://developer.nvidia.com/isaac-gym
.. _release notes: https://github.com/isaac-sim/IsaacLab/releases
...@@ -12,6 +12,10 @@ We have updated OmniIsaacGymEnvs to Isaac Sim version 4.0.0 to support the migra ...@@ -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 to Isaac Lab. Moving forward, OmniIsaacGymEnvs will be deprecated and future development
will continue in Isaac Lab. 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 Task Config Setup
~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~
...@@ -992,3 +996,4 @@ To launch inferencing in Isaac Lab, use the command: ...@@ -992,3 +996,4 @@ To launch inferencing in Isaac Lab, use the command:
.. _`OmniIsaacGymEnvs`: https://github.com/isaac-sim/OmniIsaacGymEnvs .. _`OmniIsaacGymEnvs`: https://github.com/isaac-sim/OmniIsaacGymEnvs
.. _release notes: https://github.com/isaac-sim/IsaacLab/releases
...@@ -8,6 +8,12 @@ From Orbit ...@@ -8,6 +8,12 @@ From Orbit
Since `Orbit`_ was used as basis for Isaac Lab, migrating from Orbit to Isaac Lab is straightforward. 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. 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 Renaming of the launch script
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
...@@ -129,3 +135,4 @@ should now be: ...@@ -129,3 +135,4 @@ should now be:
.. _Orbit: https://isaac-orbit.github.io/ .. _Orbit: https://isaac-orbit.github.io/
.. _release notes: https://github.com/isaac-sim/IsaacLab/releases
...@@ -136,7 +136,7 @@ to index the python modules and look for extensions shipped with Isaac Sim. ...@@ -136,7 +136,7 @@ to index the python modules and look for extensions shipped with Isaac Sim.
cd IsaacLab cd IsaacLab
# create a symbolic link # create a symbolic link
ln -s path_to_isaac_sim _isaac_sim 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 .. tab-item:: :icon:`fa-brands fa-windows` Windows
:sync: windows :sync: windows
...@@ -147,7 +147,7 @@ to index the python modules and look for extensions shipped with Isaac Sim. ...@@ -147,7 +147,7 @@ to index the python modules and look for extensions shipped with Isaac Sim.
cd IsaacLab cd IsaacLab
:: create a symbolic link - requires launching Command Prompt with Administrator access :: create a symbolic link - requires launching Command Prompt with Administrator access
mklink /D _isaac_sim path_to_isaac_sim 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) Setting up the conda environment (optional)
......
Installation Guide 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 :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 .. image:: https://img.shields.io/badge/python-3.10-blue.svg
:target: https://www.python.org/downloads/release/python-31013/ :target: https://www.python.org/downloads/release/python-31013/
...@@ -20,7 +20,7 @@ Installation Guide ...@@ -20,7 +20,7 @@ Installation Guide
.. caution:: .. caution::
We have dropped support for Isaac Sim versions 2023.1.1 and below. We recommend using the latest 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 For more information, please refer to the
`Isaac Sim release notes <https://docs.omniverse.nvidia.com/isaacsim/latest/release_notes.html>`__. `Isaac Sim release notes <https://docs.omniverse.nvidia.com/isaacsim/latest/release_notes.html>`__.
...@@ -31,7 +31,7 @@ Installation Guide ...@@ -31,7 +31,7 @@ Installation Guide
For the full list of system requirements for Isaac Sim, please refer to the For the full list of system requirements for Isaac Sim, please refer to the
`Isaac Sim system requirements <https://docs.omniverse.nvidia.com/isaacsim/latest/installation/requirements.html#system-requirements>`_. `Isaac Sim system requirements <https://docs.omniverse.nvidia.com/isaacsim/latest/installation/requirements.html#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 This simplifies the installation
process by avoiding the need to download the Omniverse Launcher and installing Isaac Sim through 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: the launcher. Therefore, there are two ways to install Isaac Lab:
......
...@@ -69,7 +69,7 @@ variables to your terminal for the remaining of the installation instructions: ...@@ -69,7 +69,7 @@ variables to your terminal for the remaining of the installation instructions:
.. code:: bash .. code:: bash
# Isaac Sim root directory # 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 # Isaac Sim python executable
export ISAACSIM_PYTHON_EXE="${ISAACSIM_PATH}/python.sh" export ISAACSIM_PYTHON_EXE="${ISAACSIM_PATH}/python.sh"
...@@ -79,7 +79,7 @@ variables to your terminal for the remaining of the installation instructions: ...@@ -79,7 +79,7 @@ variables to your terminal for the remaining of the installation instructions:
.. code:: batch .. code:: batch
:: Isaac Sim root directory :: 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 :: Isaac Sim python executable
set ISAACSIM_PYTHON_EXE="%ISAACSIM_PATH%\python.bat" set ISAACSIM_PYTHON_EXE="%ISAACSIM_PATH%\python.bat"
......
...@@ -88,6 +88,6 @@ reportPrivateUsage = "warning" ...@@ -88,6 +88,6 @@ reportPrivateUsage = "warning"
skip = '*.usd,*.svg,*.png,_isaac_sim*,*.bib,*.css,*/_build' skip = '*.usd,*.svg,*.png,_isaac_sim*,*.bib,*.css,*/_build'
quiet-level = 0 quiet-level = 0
# the world list should always have words in lower case # 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 # 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" exclude-file = "source/extensions/omni.isaac.lab/omni/isaac/lab/sim/spawners/from_files/from_files.py"
This diff is collapsed.
...@@ -14,7 +14,7 @@ keywords = ["experience", "app", "isaaclab", "python", "headless"] ...@@ -14,7 +14,7 @@ keywords = ["experience", "app", "isaaclab", "python", "headless"]
app.versionFile = "${exe-path}/VERSION" app.versionFile = "${exe-path}/VERSION"
app.folder = "${exe-path}/" app.folder = "${exe-path}/"
app.name = "Isaac-Sim" app.name = "Isaac-Sim"
app.version = "4.0.0" app.version = "4.1.0"
################################## ##################################
# Omniverse related dependencies # # Omniverse related dependencies #
...@@ -108,7 +108,7 @@ app.vulkan = true ...@@ -108,7 +108,7 @@ app.vulkan = true
################################ ################################
app.versionFile = "${app}/../VERSION" app.versionFile = "${app}/../VERSION"
app.name = "Isaac-Sim" app.name = "Isaac-Sim"
app.version = "4.0.0" app.version = "4.1.0"
# hide NonToggleable Exts # hide NonToggleable Exts
exts."omni.kit.window.extensions".hideNonToggleableExts = true exts."omni.kit.window.extensions".hideNonToggleableExts = true
......
...@@ -32,7 +32,7 @@ keywords = ["experience", "app", "isaaclab", "python", "camera", "minimal"] ...@@ -32,7 +32,7 @@ keywords = ["experience", "app", "isaaclab", "python", "camera", "minimal"]
app.versionFile = "${exe-path}/VERSION" app.versionFile = "${exe-path}/VERSION"
app.folder = "${exe-path}/" app.folder = "${exe-path}/"
app.name = "Isaac-Sim" app.name = "Isaac-Sim"
app.version = "4.0.0" app.version = "4.1.0"
# set the default ros bridge to disable on startup # set the default ros bridge to disable on startup
isaac.startup.ros_bridge_extension = "" isaac.startup.ros_bridge_extension = ""
......
...@@ -217,7 +217,7 @@ app.vulkan = true ...@@ -217,7 +217,7 @@ app.vulkan = true
app.versionFile = "${exe-path}/VERSION" app.versionFile = "${exe-path}/VERSION"
app.folder = "${exe-path}/" app.folder = "${exe-path}/"
app.name = "Isaac-Sim" app.name = "Isaac-Sim"
app.version = "4.0.0" app.version = "4.1.0"
# hide NonToggleable Exts # hide NonToggleable Exts
exts."omni.kit.window.extensions".hideNonToggleableExts = true exts."omni.kit.window.extensions".hideNonToggleableExts = true
......
...@@ -32,7 +32,7 @@ keywords = ["experience", "app", "isaaclab", "python", "camera", "minimal"] ...@@ -32,7 +32,7 @@ keywords = ["experience", "app", "isaaclab", "python", "camera", "minimal"]
app.versionFile = "${exe-path}/VERSION" app.versionFile = "${exe-path}/VERSION"
app.folder = "${exe-path}/" app.folder = "${exe-path}/"
app.name = "Isaac-Sim" app.name = "Isaac-Sim"
app.version = "4.0.0" app.version = "4.1.0"
# set the default ros bridge to disable on startup # set the default ros bridge to disable on startup
isaac.startup.ros_bridge_extension = "" isaac.startup.ros_bridge_extension = ""
......
[package] [package]
# Note: Semantic Versioning is used: https://semver.org/ # Note: Semantic Versioning is used: https://semver.org/
version = "0.19.4" version = "0.20.0"
# Description # Description
title = "Isaac Lab framework for Robot Learning" title = "Isaac Lab framework for Robot Learning"
......
Changelog 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) 0.19.4 (2024-07-13)
~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~
...@@ -81,7 +106,7 @@ Fixed ...@@ -81,7 +106,7 @@ Fixed
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 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 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. and used to compute the projection of the gravity vector on the object.
......
...@@ -564,8 +564,8 @@ class AppLauncher: ...@@ -564,8 +564,8 @@ class AppLauncher:
if self._livestream == 1: if self._livestream == 1:
# Enable Native Livestream extension # Enable Native Livestream extension
# Default App: Streaming Client from the Omniverse Launcher # Default App: Streaming Client from the Omniverse Launcher
enable_extension("omni.kit.streamsdk.plugins-3.2.1") enable_extension("omni.kit.streamsdk.plugins-4.5.1")
enable_extension("omni.kit.livestream.core-3.2.0") enable_extension("omni.kit.livestream.core-4.3.6")
enable_extension("omni.kit.livestream.native-4.1.0") enable_extension("omni.kit.livestream.native-4.1.0")
elif self._livestream == 2: elif self._livestream == 2:
# Enable WebRTC Livestream extension # Enable WebRTC Livestream extension
......
...@@ -22,18 +22,20 @@ class DifferentialIKController: ...@@ -22,18 +22,20 @@ class DifferentialIKController:
.. math:: .. math::
\Delta \mathbf{q} = \mathbf{J}^{\dagger} \Delta \mathbf{x} \Delta \mathbf{q} &= \mathbf{J}^{\dagger} \Delta \mathbf{x} \\
\mathbf{q}_{\text{desired}} = \mathbf{q}_{\text{current}} + \Delta \mathbf{q} \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}`, 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}}` :math:`\Delta \mathbf{x}` is the desired change in pose, and :math:`\mathbf{q}_{\text{current}}`
is the current joint positions. is the current joint positions.
To deal with singularity in Jacobian, the following methods are supported for computing inverse of the Jacobian: 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) - "pinv": Moore-Penrose pseudo-inverse
- "trans": Transpose of matrix - "svd": Adaptive singular-value decomposition (SVD)
- "dls": Damped version of Moore-Penrose pseudo-inverse (also called Levenberg-Marquardt) - "trans": Transpose of matrix
- "dls": Damped version of Moore-Penrose pseudo-inverse (also called Levenberg-Marquardt)
.. caution:: .. caution::
The controller does not assume anything about the frames of the current and desired end-effector pose, The controller does not assume anything about the frames of the current and desired end-effector pose,
...@@ -41,8 +43,12 @@ class DifferentialIKController: ...@@ -41,8 +43,12 @@ class DifferentialIKController:
in the correct format. in the correct format.
Reference: 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 <https://ethz.ch/content/dam/ethz/special-interest/mavt/robotics-n-intelligent-systems/rsl-dam/documents/RobotDynamics2017/RD_HS2017script.pdf>`_
by Marco Hutter (ETH Zurich)
2. `Introduction to Inverse Kinematics <https://www.cs.cmu.edu/~15464-s13/lectures/lecture6/iksurvey.pdf>`_
by Samuel R. Buss (University of California, San Diego)
""" """
def __init__(self, cfg: DifferentialIKControllerCfg, num_envs: int, device: str): def __init__(self, cfg: DifferentialIKControllerCfg, num_envs: int, device: str):
......
...@@ -5,7 +5,6 @@ ...@@ -5,7 +5,6 @@
import builtins import builtins
import torch import torch
import warnings
from collections.abc import Sequence from collections.abc import Sequence
from typing import Any from typing import Any
...@@ -201,17 +200,6 @@ class ManagerBasedEnv: ...@@ -201,17 +200,6 @@ class ManagerBasedEnv:
:meth:`SimulationContext.reset_async` and it isn't possible to call async functions in the constructor. :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 # prepare the managers
# -- action manager # -- action manager
self.action_manager = ActionManager(self.cfg.actions, self) self.action_manager = ActionManager(self.cfg.actions, self)
......
...@@ -15,7 +15,6 @@ the event introduced by the function. ...@@ -15,7 +15,6 @@ the event introduced by the function.
from __future__ import annotations from __future__ import annotations
import torch import torch
import warnings
from typing import TYPE_CHECKING, Literal from typing import TYPE_CHECKING, Literal
import carb import carb
...@@ -123,32 +122,6 @@ def randomize_rigid_body_material( ...@@ -123,32 +122,6 @@ def randomize_rigid_body_material(
asset.root_physx_view.set_material_properties(materials, env_ids) 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( def randomize_rigid_body_mass(
env: ManagerBasedEnv, env: ManagerBasedEnv,
env_ids: torch.Tensor | None, env_ids: torch.Tensor | None,
......
...@@ -13,7 +13,7 @@ designed to be modular and can be easily extended to support new functionality. ...@@ -13,7 +13,7 @@ designed to be modular and can be easily extended to support new functionality.
from .action_manager import ActionManager, ActionTerm from .action_manager import ActionManager, ActionTerm
from .command_manager import CommandManager, CommandTerm from .command_manager import CommandManager, CommandTerm
from .curriculum_manager import CurriculumManager from .curriculum_manager import CurriculumManager
from .event_manager import EventManager, RandomizationManager from .event_manager import EventManager
from .manager_base import ManagerBase, ManagerTermBase from .manager_base import ManagerBase, ManagerTermBase
from .manager_term_cfg import ( from .manager_term_cfg import (
ActionTermCfg, ActionTermCfg,
...@@ -23,7 +23,6 @@ from .manager_term_cfg import ( ...@@ -23,7 +23,6 @@ from .manager_term_cfg import (
ManagerTermBaseCfg, ManagerTermBaseCfg,
ObservationGroupCfg, ObservationGroupCfg,
ObservationTermCfg, ObservationTermCfg,
RandomizationTermCfg,
RewardTermCfg, RewardTermCfg,
TerminationTermCfg, TerminationTermCfg,
) )
......
...@@ -8,7 +8,6 @@ ...@@ -8,7 +8,6 @@
from __future__ import annotations from __future__ import annotations
import torch import torch
import warnings
from collections.abc import Sequence from collections.abc import Sequence
from prettytable import PrettyTable from prettytable import PrettyTable
from typing import TYPE_CHECKING from typing import TYPE_CHECKING
...@@ -285,41 +284,3 @@ class EventManager(ManagerBase): ...@@ -285,41 +284,3 @@ class EventManager(ManagerBase):
lower, upper = term_cfg.interval_range_s lower, upper = term_cfg.interval_range_s
time_left = torch.rand(self.num_envs, device=self.device) * (upper - lower) + lower time_left = torch.rand(self.num_envs, device=self.device) * (upper - lower) + lower
self._interval_mode_time_left.append(time_left) 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)
...@@ -8,7 +8,6 @@ ...@@ -8,7 +8,6 @@
from __future__ import annotations from __future__ import annotations
import torch import torch
import warnings
from collections.abc import Callable from collections.abc import Callable
from dataclasses import MISSING from dataclasses import MISSING
from typing import TYPE_CHECKING, Any from typing import TYPE_CHECKING, Any
...@@ -211,25 +210,6 @@ class EventTermCfg(ManagerTermBaseCfg): ...@@ -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. # Reward manager.
## ##
......
...@@ -4,7 +4,6 @@ ...@@ -4,7 +4,6 @@
# SPDX-License-Identifier: BSD-3-Clause # SPDX-License-Identifier: BSD-3-Clause
import torch import torch
import warnings
from dataclasses import dataclass from dataclasses import dataclass
...@@ -55,33 +54,3 @@ class FrameTransformerData: ...@@ -55,33 +54,3 @@ class FrameTransformerData:
Shape is (N, 4), where N is the number of environments. 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
...@@ -743,7 +743,7 @@ def modify_deformable_body_properties( ...@@ -743,7 +743,7 @@ def modify_deformable_body_properties(
.. caution:: .. caution::
The deformable body schema is still under development by the Omniverse team. The current implementation 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:: .. note::
This function is decorated with :func:`apply_nested` that sets the properties to all the prims This function is decorated with :func:`apply_nested` that sets the properties to all the prims
......
...@@ -52,8 +52,8 @@ setup( ...@@ -52,8 +52,8 @@ setup(
classifiers=[ classifiers=[
"Natural Language :: English", "Natural Language :: English",
"Programming Language :: Python :: 3.10", "Programming Language :: Python :: 3.10",
"Isaac Sim :: 4.1.0",
"Isaac Sim :: 4.0.0", "Isaac Sim :: 4.0.0",
"Isaac Sim :: 2023.1.1",
], ],
zip_safe=False, zip_safe=False,
) )
...@@ -443,22 +443,13 @@ class TestCamera(unittest.TestCase): ...@@ -443,22 +443,13 @@ class TestCamera(unittest.TestCase):
# Save images # Save images
with Timer(f"Time taken for writing data with shape {camera.image_shape} "): 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 # Pack data back into replicator format to save them using its writer
if self.sim.get_version()[0] == 4: rep_output = {"annotators": {}}
rep_output = {"annotators": {}} camera_data = convert_dict_to_backend(camera.data.output[0].to_dict(), backend="numpy")
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()):
for key, data, info in zip(camera_data.keys(), camera_data.values(), camera.data.info[0].values()): if info is not None:
if info is not None: rep_output["annotators"][key] = {"render_product": {"data": data, **info}}
rep_output["annotators"][key] = {"render_product": {"data": data, **info}} else:
else: rep_output["annotators"][key] = {"render_product": {"data": data}}
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
# Save images # Save images
rep_output["trigger_outputs"] = {"on_time": camera.frame[0]} rep_output["trigger_outputs"] = {"on_time": camera.frame[0]}
rep_writer.write(rep_output) rep_writer.write(rep_output)
......
...@@ -344,22 +344,13 @@ class TestWarpCamera(unittest.TestCase): ...@@ -344,22 +344,13 @@ class TestWarpCamera(unittest.TestCase):
# Save images # Save images
with Timer(f"Time taken for writing data with shape {camera.image_shape} "): 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 # Pack data back into replicator format to save them using its writer
if self.sim.get_version()[0] == 4: rep_output = {"annotators": {}}
rep_output = {"annotators": {}} camera_data = convert_dict_to_backend(camera.data.output[0].to_dict(), backend="numpy")
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()):
for key, data, info in zip(camera_data.keys(), camera_data.values(), camera.data.info[0].values()): if info is not None:
if info is not None: rep_output["annotators"][key] = {"render_product": {"data": data, **info}}
rep_output["annotators"][key] = {"render_product": {"data": data, **info}} else:
else: rep_output["annotators"][key] = {"render_product": {"data": data}}
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
# Save images # Save images
rep_output["trigger_outputs"] = {"on_time": camera.frame[0]} rep_output["trigger_outputs"] = {"on_time": camera.frame[0]}
rep_writer.write(rep_output) rep_writer.write(rep_output)
......
...@@ -30,8 +30,8 @@ setup( ...@@ -30,8 +30,8 @@ setup(
classifiers=[ classifiers=[
"Natural Language :: English", "Natural Language :: English",
"Programming Language :: Python :: 3.10", "Programming Language :: Python :: 3.10",
"Isaac Sim :: 4.1.0",
"Isaac Sim :: 4.0.0", "Isaac Sim :: 4.0.0",
"Isaac Sim :: 2023.1.1",
], ],
zip_safe=False, zip_safe=False,
) )
...@@ -2,12 +2,12 @@ Changelog ...@@ -2,12 +2,12 @@ Changelog
--------- ---------
0.7.10 (2024-07-02) 0.7.10 (2024-07-02)
~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~
Added 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) 0.7.9 (2024-07-01)
......
...@@ -6,9 +6,9 @@ ...@@ -6,9 +6,9 @@
import math import math
from omni.isaac.lab.envs import ManagerBasedRLEnvCfg 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 ObservationGroupCfg as ObsGroup
from omni.isaac.lab.managers import ObservationTermCfg as ObsTerm 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 RewardTermCfg as RewTerm
from omni.isaac.lab.managers import SceneEntityCfg from omni.isaac.lab.managers import SceneEntityCfg
from omni.isaac.lab.managers import TerminationTermCfg as DoneTerm from omni.isaac.lab.managers import TerminationTermCfg as DoneTerm
...@@ -25,7 +25,7 @@ LOW_LEVEL_ENV_CFG = AnymalCFlatEnvCfg() ...@@ -25,7 +25,7 @@ LOW_LEVEL_ENV_CFG = AnymalCFlatEnvCfg()
class EventCfg: class EventCfg:
"""Configuration for events.""" """Configuration for events."""
reset_base = RandTerm( reset_base = EventTerm(
func=mdp.reset_root_state_uniform, func=mdp.reset_root_state_uniform,
mode="reset", mode="reset",
params={ params={
......
...@@ -76,8 +76,8 @@ setup( ...@@ -76,8 +76,8 @@ setup(
classifiers=[ classifiers=[
"Natural Language :: English", "Natural Language :: English",
"Programming Language :: Python :: 3.10", "Programming Language :: Python :: 3.10",
"Isaac Sim :: 4.1.0",
"Isaac Sim :: 4.0.0", "Isaac Sim :: 4.0.0",
"Isaac Sim :: 2023.1.1",
], ],
zip_safe=False, zip_safe=False,
) )
...@@ -236,20 +236,12 @@ def run_simulator(sim: sim_utils.SimulationContext, scene_entities: dict): ...@@ -236,20 +236,12 @@ def run_simulator(sim: sim_utils.SimulationContext, scene_entities: dict):
single_cam_info = camera.data.info[camera_index] single_cam_info = camera.data.info[camera_index]
# Pack data back into replicator format to save them using its writer # Pack data back into replicator format to save them using its writer
if sim.get_version()[0] == 4: rep_output = {"annotators": {}}
rep_output = {"annotators": {}} for key, data, info in zip(single_cam_data.keys(), single_cam_data.values(), single_cam_info.values()):
for key, data, info in zip(single_cam_data.keys(), single_cam_data.values(), single_cam_info.values()): if info is not None:
if info is not None: rep_output["annotators"][key] = {"render_product": {"data": data, **info}}
rep_output["annotators"][key] = {"render_product": {"data": data, **info}} else:
else: rep_output["annotators"][key] = {"render_product": {"data": data}}
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
# Save images # Save images
# Note: We need to provide On-time data for Replicator to save the 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]} rep_output["trigger_outputs"] = {"on_time": camera.frame[camera_index]}
......
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