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:
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
......
......@@ -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:
......
......@@ -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
......
......@@ -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/)
......
......@@ -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
......
......@@ -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 {
......
......@@ -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
---------------
......
......@@ -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.
......
......@@ -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
......
......@@ -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
......@@ -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
......@@ -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
......@@ -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)
......
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 <https://docs.omniverse.nvidia.com/isaacsim/latest/release_notes.html>`__.
......@@ -31,7 +31,7 @@ Installation Guide
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>`_.
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:
......
......@@ -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"
......
......@@ -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"
This diff is collapsed.
......@@ -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
......
......@@ -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 = ""
......
......@@ -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
......
......@@ -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 = ""
......
[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"
......
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.
......
......@@ -564,8 +564,8 @@ class AppLauncher:
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
......
......@@ -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 <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):
......
......@@ -5,7 +5,6 @@
import builtins
import torch
import warnings
from collections.abc import Sequence
from typing import Any
......@@ -201,17 +200,6 @@ class ManagerBasedEnv:
: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)
......
......@@ -15,7 +15,6 @@ the event introduced by the function.
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,
......
......@@ -13,7 +13,7 @@ designed to be modular and can be easily extended to support new functionality.
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 @@ from .manager_term_cfg import (
ManagerTermBaseCfg,
ObservationGroupCfg,
ObservationTermCfg,
RandomizationTermCfg,
RewardTermCfg,
TerminationTermCfg,
)
......
......@@ -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 @@ class EventManager(ManagerBase):
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)
......@@ -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.
##
......
......@@ -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
......@@ -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
......
......@@ -52,8 +52,8 @@ setup(
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,
)
......@@ -443,22 +443,13 @@ class TestCamera(unittest.TestCase):
# 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)
......
......@@ -344,22 +344,13 @@ class TestWarpCamera(unittest.TestCase):
# 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)
......
......@@ -30,8 +30,8 @@ setup(
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,
)
......@@ -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)
......
......@@ -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 @@ LOW_LEVEL_ENV_CFG = AnymalCFlatEnvCfg()
class EventCfg:
"""Configuration for events."""
reset_base = RandTerm(
reset_base = EventTerm(
func=mdp.reset_root_state_uniform,
mode="reset",
params={
......
......@@ -76,8 +76,8 @@ setup(
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,
)
......@@ -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]}
......
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