Skip to content

Releases: isaac-sim/IsaacLab

v2.0.0

30 Jan 22:56
Compare
Choose a tag to compare

👀 Overview

Isaac Lab 2.0 brings some exciting new features, including a new addition to the Imitation Learning workflow with the Isaac Lab Mimic extension.

Isaac Lab Mimic provides the ability to automatically generate additional trajectories based on just a few human collected demonstrations, allowing for larger training datasets with less human effort. This work is based on the MimicGen work for Scalable Robot Learning using Human Demonstrations.

Additionally, we introduced a new set of AMP tasks based on Adversarial Motion Priors, training humanoid robots to walk, run, and dance 👯

Along with Isaac Lab 2.0, Isaac Sim 4.5 brings several new and breaking changes, including a full refactor of the Isaac Sim extensions, an improved URDF importer, an update to the PyTorch dependency to version 2.5.1, and many fixes for tiled rendering that now supports multiple tiled cameras at different resolutions.

To follow the refactoring in Isaac Sim, we made similar refactoring and restructuring changes to Isaac Lab. These breaking changes will no longer be compatible with previous Isaac Sim versions. Please make sure to update to Isaac Sim 4.5 when using the Isaac Lab 2.0 release.

Full Changelog: v1.4.1...v2.0.0

🌟 Highlights from the Isaac Sim 4.5 release:

  • Support for multiple TiledCamera instances and varying resolutions
  • Improved rendering performance by up to 1.2x
  • Faster startup time through optimizations in the Cloner class that improves startup time by 30%
  • Enhanced OmniPVD for debugging physics simulation, enabling capturing reinforcement learning simulation workloads of up to 2000 environments
  • Physics simulation performance optimizations improving throughput of up to 70%
  • Physics support for dedicated cylinder and cone geometry designed for robot wheels that is fully GPU accelerated
  • A new physics GPU filtering mechanism allowing co-location of reinforcement learning environments at the origin with minimal performance loss for scenes with limited collider counts
  • Improvements in simulation stability for mimic joints at high joint gains

🔆 Highlighted Features

stack-mimic-dataset.mp4
amp-humanoid-walk.mp4
amp-humanoid-dance.mp4
factory-gear-insert.mp4

✨ New Features

  • Adds humanoid AMP tasks for direct workflow by @Toni-SM
  • Adds Isaac Lab Mimic based on MimicGen data generation for Imitation Learning by @peterd-NV @nvcyc @ashwinvkNV @karsten-nvidia
  • Adds consolidated demo script for showcasing recording and mimic dataset generation in real-time in one simulation script by @nvcyc
  • Adds Franka stacking environment for GR00T mimic by @peterd-NV @nvcyc
  • Adds option to filter collisions and real-time playback by @kellyguo11

🔧 Improvements

  • Adds a tutorial for policy inference in a prebuilt USD scene by @oahmednv
  • Adds unit tests for multi-tiled cameras by @matthewtrepte
  • Updates render setting defaults for better quality by @kellyguo11
  • Adds a flag to wait for texture loading completion when reset by @oahmednv
  • Adds pre-trained checkpoints and tools for generating and uploading checkpoints by @nv-cupright
  • Adds new denoiser optimization flags for rendering by @kellyguo11
  • Updates torch to 2.5.1 by @kellyguo11

🐛 Bug Fixes

  • Fixes external force buffers to set to zero when no forces/torques are applied by @matthewtrepte

💔 Breaking Changes

  • Updates the URDF and MJCF importers for Isaac Sim 4.5 by @Dhoeller19
  • Renames Isaac Lab extensions and folders by @kellyguo11
  • Restructures extension folders and removes old imitation learning scripts by @kellyguo11

✈️ Migration Guide

Renaming of Isaac Sim Extensions

Details

Previously, Isaac Sim extensions have been following the convention of omni.isaac.*,
such as omni.isaac.core. In Isaac Sim 4.5, Isaac Sim extensions have been renamed
to use the prefix isaacsim, replacing omni.isaac. In addition, many extensions
have been renamed and split into multiple extensions to prepare for a more modular
framework that can be customized by users through the use of app templates.

Notably, the following commonly used Isaac Sim extensions in Isaac Lab are renamed as follow:

  • omni.isaac.cloner --> isaacsim.core.cloner
  • omni.isaac.core.prims --> isaacsim.core.prims
  • omni.isaac.core.simulation_context --> isaacsim.core.api.simulation_context
  • omni.isaac.core.utils --> isaacsim.core.utils
  • omni.isaac.core.world --> isaacsim.core.api.world
  • omni.isaac.kit.SimulationApp --> isaacsim.SimulationApp
  • omni.isaac.ui --> isaacsim.gui.components

Renaming of the URDF and MJCF Importers

Details

Starting from Isaac Sim 4.5, the URDF and MJCF importers have been renamed to be more consistent
with the other extensions in Isaac Sim. The importers are available on isaac-sim GitHub
as open source projects.

Due to the extension name change, the Python module names have also been changed:

  • URDF Importer: isaacsim.asset.importer.urdf (previously omni.importer.urdf)
  • MJCF Importer: isaacsim.asset.importer.mjcf (previously omni.importer.mjcf)

From the Isaac Sim UI, both URDF and MJCF importers can now be accessed directly from the File > Import
menu when selecting a corresponding .urdf or .xml file in the file browser.

Changes in URDF Importer

Details

Isaac Sim 4.5 brings some updates to the URDF Importer, with a fresh UI to allow for better configurations
when importing robots from URDF. As a result, the Isaac Lab URDF Converter has also been updated to
reflect these changes. The UrdfConverterCfg includes some new settings, such as PDGainsCfg
and NaturalFrequencyGainsCfg classes for configuring the gains of the drives.

One breaking change to note is that the UrdfConverterCfg.JointDriveCfg.gains attribute must
be of class type PDGainsCfg or NaturalFrequencyGainsCfg.

The stiffness of the PDGainsCfg must be specified, as such:

    joint_drive=sim_utils.UrdfConverterCfg.JointDriveCfg(
        gains=sim_utils.UrdfConverterCfg.JointDriveCfg.PDGainsCfg(stiffness=None, damping=None)
    )

The natural_frequency attribute must be specified for NaturalFrequencyGainsCfg.

Renaming of Isaac Lab Extensions and Folders

Details

Corresponding to Isaac Sim 4.5 changes, we have also made some updates to the Isaac Lab directories and extensions.
All extensions that were previously under source/extensions are now under the source/ directory directly.
The source/apps and source/standalone folders have been moved to the root directory and are now called
apps/ and scripts/.

Isaac Lab extensions have been renamed to:

  • omni.isaac.lab --> isaaclab
  • omni.isaac.lab_assets --> isaaclab_assets
  • omni.isaac.lab_tasks --> isaaclab_tasks

In addition, we have split up the previous source/standalone/workflows directory into scripts/imitation_learning
and scripts/reinforcement_learning directories. The RSL RL, Stable-Baselines, RL_Games, SKRL, and Ray directories
are under scripts/reinforcement_learning, while Robomimic and the new Isaac Lab Mimic directories are under
scripts/imitation_learning.

To assist with the renaming of Isaac Lab extensions in your project, we have provided a simple script that will traverse
through the source and docs directories in your local Isaac Lab project and replace any instance of the renamed
directories and imports. Please use the script at your own risk as it will overwrite source files directly.

Restructuring of Isaac Lab Extensions

Details

With the introduction of isaaclab_mimic, designed for supporting data generation workflows for imitation learning,
we have also split out the previous wrappers folder under isaaclab_tasks to its own module, named isaaclab_rl.
This new extension will contain reinforcement learning specific wrappers for the various RL libraries supported by Isaac Lab.

The new isaaclab_mimic extension will also replace the previous imitation learning scripts under the robomimic folder.
We have removed the old scripts for data collection and dataset preparation in favor of the new mimic workflow. For users
who prefer to use the previous scripts, they will be available in previous release branches.

Additionally, we have also restructured the isaaclab_assets extension to be split into robots and sensors
subdirectories. This allows for clearer separation between the pre-defined configurations provided in the extension.
For any existing imports such as from omni.isaac.lab_assets.anymal import ANYMAL_C_CFG, please replace it with
from isaaclab.robots.anymal import ANYMAL_C_CFG.

🤗 New Contributors

We have expanded our internal efforts towards Isaac Lab and Gr00t developments. We sincerely thank the different teams involved in adding these new features into the framework.

v1.4.1

30 Jan 20:59
Compare
Choose a tag to compare

👀 Overview

This release contains a set of improvements and bug fixes.

Most importantly, we reverted one of the changes from the previous release (#966) to ensure the training throughput performance remains the same.

Full Changelog: v1.4.0...v1.4.1

This is the final release compatible with Isaac Sim 4.2. The next release will target Isaac Sim 4.5, which introduces breaking changes that will make Isaac Lab incompatible with earlier versions of Isaac Sim.

✨ New Features

🔧 Improvements

  • Removes deprecation for root_state_w properties and setters by @jtigue-bdai in #1695
  • Fixes MARL workflows for recording videos during training/inferencing by @Rishi-V in #1596
  • Adds body tracking option to ViewerCfg by @KyleM73 in #1620
  • Fixes the joint_parameter_lookup type in RemotizedPDActuatorCfg to support list format by @fan-ziqi in #1626
  • Updates pip installation documentation to clarify options by @steple in #1621
  • Fixes docstrings in Articulation Data that report wrong return dimension by @zoctipus in #1652
  • Fixes documentation error for PD Actuator by @kellyguo11 in #1668
  • Clarifies ray documentation and fixes minor issues by @garylvov in #1717
  • Updates code snippets in documentation to reference scripts by @mpgussert in #1693
  • Adds dict conversion test for ActuatorBase configs by @mschweig in #1608

🐛 Bug Fixes

  • Fixes JointAction not preserving order when using all joints by @T-K-233 in #1587
  • Fixes event term for pushing root by setting velocity by @Mayankm96 in #1584
  • Fixes error in Articulation where default_joint_stiffness and default_joint_damping are not correctly set for implicit actuator by @zoctipus in #1580
  • Fixes action reset of pre_trained_policy_action in navigation environment by @nicolaloi in #1623
  • Fixes rigid object's root com velocities timestamp check by @ori-gadot in #1674
  • Adds interval resampling on event manager's reset call by @Mayankm96 in #1750
  • Corrects calculation of target height adjustment based on sensor data by @fan-ziqi in #1710
  • Fixes infinite loop in repeated_objects_terrain method by @nicolaloi in #1612
  • Fixes issue where the indices were not created correctly for articulation setters by @AntoineRichard in #1660

🤗 New Contributors

v1.4.0

20 Dec 16:10
dd044a4
Compare
Choose a tag to compare

👀 Overview

Due to a great amount of amazing updates, we are putting out one more Isaac Lab release based off of Isaac Sim 4.2. This release contains many great new additions and bug fixes, including several new environments, distributed training and hyperparameter support with Ray, new live plot feature for Manager-based environments, and more.

We will now spend more focus on the next Isaac Lab release geared towards the new Isaac Sim 4.5 release coming soon. The upcoming release will contain breaking changes in both Isaac Lab and Isaac Sim and breaks backwards compatibility, but will come with many great fixes and improvements.

Full Changelog: v1.3.0...v1.4.0

✨ New Features

  • Adds Factory contact-rich manipulation tasks to IsaacLab by @noseworm in #1520
  • Adds a Franka stacking ManagerBasedRLEnv by @peterd-NV in #1494
  • Adds recorder manager in manager-based environments by @nvcyc in #1336
  • Adds Ray Workflow: Multiple Run Support, Distributed Hyperparameter Tuning, and Consistent Setup Across Local/Cloud by @glvov-bdai in #1301
  • Adds OperationSpaceController to docs and tests and implement corresponding action/action_cfg classes by @ozhanozen in #913
  • Adds null-space control option within OperationSpaceController by @ozhanozen in #1557
  • Adds observation term history support to Observation Manager by @jtigue-bdai in #1439
  • Adds live plots to managers by @pascal-roth in #893

🔧 Improvements

  • Adds documentation and example scripts for sensors by @mpgussert in #1443
  • Removes duplicated TerminationsCfg code in G1 and H1 RoughEnvCfg by @fan-ziqi in #1484
  • Adds option to change the clipping behavior for all Cameras and unifies the default by @pascal-roth in #891
  • Adds check that no articulation root API is applied on rigid bodies by @lgulich in #1358
  • Adds RayCaster rough terrain base height to reward by @Andy-xiong6 in #1525
  • Adds position threshold check for state transitions by @DorsaRoh in #1544
  • Adds clip range for JointAction by @fan-ziqi in #1476

🐛 Bug Fixes

  • Fixes noise_model initialized in direct_marl_env by @NoneJou072 in #1480
  • Fixes entry_point and kwargs in isaaclab_tasks README by @fan-ziqi in #1485
  • Fixes syntax for checking if pre-commit is installed in isaaclab.sh by @louislelay in #1422
  • Corrects fisheye camera projection types in spawner configuration by @command-z-z in #1361
  • Fixes actuator velocity limits propagation down the articulation root_physx_view by @jtigue-bdai in #1509
  • Computes Jacobian in the root frame inside the DifferentialInverseKinematicsAction class by @zoctipus in #967
  • Adds transform for mesh_prim of ray caster sensor by @clearsky-mio in #1448
  • Fixes configclass dict conversion for torch tensors by @lgulich in #1530
  • Fixes error in apply_actions method in NonHolonomicAction action term. by @KyleM73 in #1513
  • Fixes outdated sensor data after reset by @kellyguo11 in #1276
  • Fixes order of logging metrics and sampling commands in command manager by @Mayankm96 in #1352

💔 Breaking Changes

  • Refactors pose and velocities to link frame and COM frame APIs by @jtigue-bdai in #966

🤗 New Contributors

v1.3.0

21 Nov 23:01
d603b67
Compare
Choose a tag to compare

👀 Overview

This release will be a final release based on Isaac Sim 4.2 before the transition to Isaac Sim 4.5, which will likely contain breaking changes and no longer backwards compatible with Isaac Sim 4.2 and earlier. In this release, we introduce many features, improvements, and bug fixes, including IMU sensors, support for various types of gymnasium spaces, manager-based perception environments, and more.

Full Changelog: v1.2.0...v1.3.0

✨ New Features

  • Adds IMU sensor by @pascal-roth in #619
  • Add Camera Benchmark Tool and Allow Correct Unprojection of distance_to_camera depth image by @glvov-bdai in #976
  • Creates Manager Based Cartpole Vision Example Environments by @glvov-bdai in #995
  • Adds image extracted features observation term and cartpole examples for it by @glvov-bdai in #1191
  • Supports other gymnasium spaces in Direct workflow by @Toni-SM in #1117
  • Adds configuration classes for spawning different assets at prim paths by @Mayankm96 in #1164
  • Adds a rigid body collection class by @Dhoeller19 in #1288
  • Adds option to scale/translate/rotate meshes in the mesh_converter by @pascal-roth in #1228
  • Adds event term to randomize gains of explicit actuators by @MoreTore in #1005
  • Adds Isaac Lab Reference Architecture documentation by @OOmotuyi in #1371

🔧 Improvements

  • Expands functionality of FrameTransformer to allow multi-body transforms by @jsmith-bdai in #858
  • Inverts SE-2 keyboard device actions (Z, X) for yaw command by @riccardorancan in #1030
  • Disables backward pass compilation of warp kernels by @Mayankm96 in #1222
  • Replaces TensorDict with native dictionary by @Toni-SM in #1348
  • Improves omni.isaac.lab_tasks loading time by @Toni-SM in #1353
  • Caches PhysX view's joint paths when processing fixed articulation tendons by @Toni-SM in #1347
  • Replaces hardcoded module paths with __name__ dunder by @Mayankm96 in #1357
  • Expands observation term scaling to support list of floats by @pascal-roth in #1269
  • Removes extension startup messages from the Simulation App by @Mayankm96 in #1217
  • Adds a render config to the simulation and tiledCamera limitations to the docs by @kellyguo11 in #1246
  • Adds Kit command line argument support by @kellyguo11 in #1293
  • Modifies workflow scripts to generate random seed when seed=-1 by @kellyguo11 in #1048
  • Adds benchmark script to measure robot loading by @Mayankm96 in #1195
  • Switches from carb to omni.log for logging by @Mayankm96 in #1215
  • Excludes cache files from vscode explorer by @Divelix in #1131
  • Adds versioning to the docs by @sheikh-nv in #1247
  • Adds better error message for invalid actuator parameters by @lgulich in #1235
  • Updates tested docker and apptainer versions for cluster deployment by @pascal-roth in #1230
  • Removes ml_archive as a dependency of omni.isaac.lab extension by @fan-ziqi in #1266
  • Adds a validity check for configclasses by @Dhoeller19 in #1214
  • Ensures mesh name is compatible with USD convention in mesh converter by @fan-ziqi in #1302
  • Adds sanity check for the term type inside the command manager by @command-z-z in #1315
  • Allows configclass to_dict operation to handle a list of configclasses by @jtigue-bdai in #1227

🐛 Bug Fixes

  • Disables replicate physics for deformable teddy lift environment by @Mayankm96 in #1026
  • Fixes Jacobian joint indices for floating base articulations by @lorenwel in #1033
  • Fixes setting the seed from CLI for RSL-RL by @kaixi287 in #1084
  • Fixes camera MDP term name and reprojection docstrings by @Mayankm96 in #1130
  • Fixes deprecation notice for using pxr.Semantics by @Mayankm96 in #1129
  • Fixes scaling of default ground plane by @kellyguo11 in #1133
  • Fixes Isaac Sim executable on pip installation by @Toni-SM in #1172
  • Passes device from CLI args to simulation config in standalone scripts by @Mayankm96 in #1114
  • Fixes the event for randomizing rigid body material by @pascal-roth in #1140
  • Fixes the ray_caster_camera tutorial script when saving the data by @mpgussert in #1198
  • Fixes running the docker container when the DISPLAY env variable is not defined by @GiulioRomualdi in #1163
  • Fixes default joint pos when setting joint limits by @kellyguo11 in #1040
  • Fixes device propogation for noise and adds noise tests by @jtigue-bdai in #1175
  • Removes additional sbatch and fixes default profile in cluster deployment by @pascal-roth in #1229
  • Fixes the checkpoint loading error in RSL-RL training script by @bearpaw in #1210
  • Fixes pytorch broadcasting issue in EMAJointPositionToLimitsAction by @bearpaw in #1207
  • Fixes body IDs selection when computing feet_slide reward for locomotion-velocity task by @dtc103 in #1277
  • Fixes broken URLs in markdown files by @DorsaRoh in #1272
  • Fixes net_arch in sb3_ppo_cfg.yaml for Isaac-Lift-Cube-Franka-v0 task by @LinghengMeng in #1249

🤗 New Contributors

v1.2.0

20 Sep 17:44
e00d625
Compare
Choose a tag to compare

👀 Overview

We leverage the new release of Isaac Sim, 4.2.0, and bring RTX-based tiled rendering, support for multi-agent environments, and introduce many bug fixes and improvements.

Additionally, we have published an example for generating rewards using an LLM based on Eureka, available here https://github.com/isaac-sim/IsaacLabEureka.

Full Changelog: v1.1.0...v1.2.0

🔆 Highlighted Features

shadowhand_cube_tiled_rendering.mp4
shadowhand_multi_agent_hand_over.mp4
deformable_teddy_pick_up.mp4

✨ New Features

  • Adds RTX-based tiled rendering. This improves the overall rendering speed and quality.
  • Adds the direct workflow perceptive Shadowhand Cube Repose environment Isaac-Repose-Cube-Shadow-Vision-Direct-v0 by @kellyguo11.
  • Adds support for multi-agent environments with the Direct workflow, with support for MAPPO and IPPO in SKRL by @Toni-SM
  • Adds the direct workflow multi-agent environments Isaac-Cart-Double-Pendulum-Direct-v0 and Isaac-Shadow-Hand-Over-Direct-v0 by @Toni-SM
  • Adds throughput benchmarking scripts for the different learning workflows by @kellyguo11 in #759
  • Adds results for the benchmarks in the documentation here for different types of hardware by @kellyguo11
  • Adds the direct workflow Allegro hand environment by @kellyguo11 in #709
  • Adds video recording to the play scripts in RL workflows by @j3soon in #763
  • Adds comparison tables for the supported RL libraries here by @kellyguo11
  • Add APIs for deformable asset by @masoudmoghani in #630
  • Adds support for MJCF converter by @qqqwan in #957
  • Adds a function to define camera configs through intrinsic matrix by @pascal-roth in #617
  • Adds configurable modifiers to observation manager by @jtigue-bdai in #830
  • Adds the Hydra configuration system for RL training by @Dhoeller19 in #700

🔧 Improvements

  • Uses PhysX accelerations for rigid body acceleration data by @Mayankm96 in #760
  • Adds documentation on the frames for asset data by @Mayankm96 in #742
  • Renames Unitree configs in locomotion tasks to match properly by @Mayankm96 in #714
  • Adds option to set the height of the border in the TerrainGenerator by @pascal-roth in #744
  • Adds a cli arg to run_all_tests.py for testing a selected extension by @jsmith-bdai in #753
  • Decouples rigid object and articulation asset classes by @Mayankm96 in #644
  • Adds performance optimizations for domain randomization by @kellyguo11 in #494
  • Allows having hybrid dimensional terms inside an observation group by @Mayankm96 in #772
  • Adds a flag to preserve joint order inside JointActionCfg action term by @xav-nal in #787
  • Adds the ability to resume training from a checkpoint with rl_games by @sizsJEon in #797
  • Adds windows configuration to VS code tasks by @johnBuffer in #963
  • Adapts A and D button bindings in the keyboard device by @zoctipus in #910
  • Uses torch.einsum for quat_rotate and quat_rotate_inverse operations by @dxyy1 in #900
  • Expands on articulation test for multiple instances and devices by @jsmith-bdai in #872
  • Adds setting of environment seed at initialization by @Mayankm96 in #940
  • Disables default viewport when headless but cameras are enabled by @kellyguo11 in #851
  • Simplifies the return type for parse_env_cfg method by @Mayankm96 in #965
  • Simplifies the if-elses inside the event manager apply method by @Mayankm96 in #948

🐛 Bug Fixes

  • Fixes rendering frame delays. Rendered images now faithfully represent the latest state of the physics scene. We added the flag
    rerender_on_reset in the environment configs to toggle an additional render step when a reset happens. When activated, the images/observation always represent the latest state of the environment, but this also reduces performance.
  • Fixes wrap_to_pi function in math utilities by @Mayankm96 in #771
  • Fixes setting of pose when spawning a mesh by @masoudmoghani in #692
  • Fixes caching of the terrain using the terrain generator by @Mayankm96 in #757
  • Fixes running train scripts when rsl_rl is not installed by @Dhoeller19 in #784, #789
  • Adds flag to recompute inertia when randomizing the mass of a rigid body by @Mayankm96 in #989
  • Fixes support for classmethod when defining a configclass by @Mayankm96 in #901
  • Fixes Sb3VecEnvWrapper to clear buffer on reset by @EricJin2002 in #974
  • Fixes venv and conda pip installation on windows by @kellyguo11 in #970
  • Sets native livestream extensions to Isaac Sim 4.1-4.0 defaults by @jtigue-bdai in #954
  • Defaults the gym video recorder fps to match episode decimation by @ozhanozen in #894
  • Fixes the event manager's apply method by @kellyguo11 in #936
  • Updates camera docs with world units and introduces new test for intrinsics by @pascal-roth in #886
  • Adds the ability to resume training from a checkpoint with rl_games by @sizsJEon in #797

💔 Breaking Changes

  • Simplifies device setting in SimulationCfg and AppLauncher by @Dhoeller19 in #696
  • Fixes conflict in teleop-device command line argument in scripts by @Dhoeller19 in #791
  • Converts container.sh into Python utilities by @hhansen-bdai in f565c33
  • Drops support for TiledCamera for Isaac Sim 4.1

✈️ Migration Guide

Setting the simulation device into the simulation context

Details

Previously, changing the simulation device to CPU required users to set other simulation parameters (such as disabling GPU physics and GPU pipelines). This made setting up the device appear complex. We now simplify the checks for device directly inside the simulation context, so users only need to specify the device through the configuration object.

Before:

sim_utils.SimulationCfg(device="cpu", use_gpu_pipeline=False, dt=0.01, physx=sim_utils.PhysxCfg(use_gpu=False))

Now:

sim_utils.SimulationCfg(device="cpu", dt=0.01, physx=sim_utils.PhysxCfg())

Setting the simulation device from CLI

Details

Previously, users could specify the device through the command line argument --device_id. However, this made it ambiguous when users wanted to set the device to CPU. Thus, instead of the device ID, users need to specify the device explicitly through the argument --device. The valid options for the device name are:

  • "cpu": runs simulation on CPU
  • "cuda": runs simulation on GPU with device ID at default index
  • "cuda:N": runs simulation on GPU with device ID at N. For instance, "cuda:0" will use device at index "0".

Due to the above change, the command line interaction with some of the scripts has changed.

Before:

./isaaclab.sh -p source/standalone/workflows/sb3/train.py --task Isaac-Cartpole-v0 --headless --cpu

Now:

./isaaclab.sh -p source/standalone/workflows/sb3/train.py --task Isaac-Cartpole-v0 --headless --device cpu

Renaming of teleoperation device CLI in standalone scripts

Details

Since --device is now an argument provided by the AppLauncher, it conflicted with the command-line argument used for specifying the teleoperation-device in some of the standalone scripts. Thus, to fix this conflict, the teleoperation-device now needs to be specified through --teleop_device argument.

Before:

./isaaclab.sh -p source/standalone/environments/teleoperation/teleop_se3_agent.py --task Isaac-Lift-Cube-Franka-IK-Rel-v0 --num_envs 1 --device keyboard

Now:

./isaaclab.sh -p source/standalone/environments/teleoperation/teleop_se3_agent.py --task Isaac-Lift-Cube-Franka-IK-Rel-v0 --num_envs 1 --teleop_device k...
Read more

v1.1.0

26 Jul 21:06
454905b
Compare
Choose a tag to compare

👀 Overview

With the release of Isaac Sim 4.0 and 4.1, support for Isaac Sim 2023.1.1 has been discontinued. We strongly encourage all users to upgrade to Isaac Sim 4.1 to take advantage of the latest features and improvements. For detailed information on this upgrade, please refer to the release notes available here.

Besides the above, the Isaac Lab release brings new features and improvements, as detailed below. We thank all our contributors for their continued support.

Full Changelog: v1.0.0...v1.1.0

✨ New Features

  • Adds distributed multi-GPU learning support for skrl by @Toni-SM in #574
  • Updates skrl integration to support training/evaluation using JAX by @Toni-SM in #592
  • Adds lidar pattern for raycaster sensor by @pascal-roth in #616
  • Adds support for PBS job scheduler-based clusters by @shafeef901 in #605
  • Adds APIs for spawning deformable meshes by @Mayankm96 in #613

🔧 Improvements

  • Changes documentation color to the green theme by @Mayankm96 in #585
  • Fixes sphinx tabs to make them work in dark theme by @Mayankm96 in #584
  • Fixes VSCode settings to work with pip installation of Isaac Sim by @Mayankm96 in #628
  • Fixes isaaclab scripts to deal with Isaac Sim pip installation by @Mayankm96 in #631
  • Optimizes interactive scene for homogeneous cloning by @kellyguo11 in #636
  • Improves docker X11 forwarding documentation by @j3soon in #685

🐛 Bug Fixes

  • Reads gravity direction from simulation inside RigidObjectData by @Mayankm96 in #582
  • Fixes reference count in asset instances due to circular references by @Mayankm96 in #580
  • Fixes issue with asset deinitialization due to torch > 2.1 by @Mayankm96 in #640
  • Fixes the rendering logic regression in environments by @Dhoeller19 in #614
  • Fixes the check for action-space inside Stable-Baselines3 wrapper by @Mayankm96 in #610
  • Fixes warning message in Articulation config processing by @locoxsoco in #699
  • Fixes action term in the reach environment by @masoudmoghani in #710
  • Fixes training UR10 reach with RL_GAMES and SKRL by @sudhirpratapyadav in #678
  • Adds event manager call to simple manage-based env by @Mayankm96 in #666

💔 Breaking Changes

  • Drops official support for Isaac Sim 2023.1.1
  • Removes the use of body view inside the asset classes by @Mayankm96 in #643
  • Renames SimulationCfg.substeps to SimulationCfg.render_interval by @Dhoeller19 in #515

✈️ Migration Guide

Renaming of SimulationCfg.substeps

Previously, the users set both omni.isaac.lab.sim.SimulationCfg.dt and omni.isaac.lab.sim.SimulationCfg.substeps, which marked the physics insulation time-step and sub-steps, respectively. It was unclear whether sub-steps meant the number of integration steps inside the physics time-step dt or the number of physics steps inside a rendering step.

Since in the code base, the attribute was used as the latter, it has been renamed to render_interval for clarity.

Removal of Deprecated Attributes

As notified in previous releases, we removed the classes and attributes marked as deprecated. These are as follows:

  • The mdp.add_body_mass method in the events. Please use the mdp.randomize_rigid_body_mass instead.
  • The classes managers.RandomizationManager and managers.RandomizationTermCfg. Please use the managers.EventManager and managers.EventTermCfg classes instead.
  • The following properties in omni.isaac.lab.sensors.FrameTransformerData:
    • target_rot_source --> target_quat_w
    • target_rot_w --> target_quat_source
    • source_rot_w --> source_quat_w
  • The attribute body_physx_view from the omni.isaac.lab.assets.Articulation and omni.isaac.lab.assets.RigidObject classes. These caused confusion when used with the articulation view since the body names did not follow the same ordering.

🤗 New Contributors

v1.0.0

26 Jun 08:37
Compare
Choose a tag to compare

👀 Overview

Welcome to the first official release of Isaac Lab!

Building upon the foundation of the Orbit framework, we have integrated the RL environment designing workflow from OmniIsaacGymEnvs. This allows users to choose a suitable task-design approach for their applications.

While we maintain backward compatibility with Isaac Sim 2023.1.1, we highly recommend using Isaac Lab with Isaac Sim 4.0.0 version for the latest features and improvements.

Full Changelog: v0.3.1...v1.0.0

✨ New Features

  • Integrated CI/CD pipeline, which is triggered on pull requests and publishes the results publicly
  • Extended support for Windows OS platforms
  • Added tiled rendered based Camera sensor implementation. This provides optimized RGB-D rendering throughputs of up to 10k frames per second.
  • Added support for multi-GPU and multi-node training for the RL-Games library
  • Integrated APIs for environment designing (direct workflow) without relying on managers
  • Added implementation of delayed PD actuator model
  • Added various new learning environments :
    • Cartpole balancing using images
    • Shadow hand cube reorientation
    • Boston Dynamics Spot locomotion
    • Unitree H1 and G1 locomotion
    • ANYmal-C navigation
    • Quadcopter target reaching

🔧 Improvements

  • Reduced start-up time for scripts (inherited from Isaac Sim 4.0 improvements)
  • Added lazy buffer implementation for rigid object and articulation data. Instead of updating all the quantities at every step call, the lazy buffers are updated only when the user queries them
  • Added SKRL support to more environments

💔 Breaking Change

For users coming from Orbit, this release brings certain breaking changes. Please check the migration guide for more information.

✈️ Migration Guide

Please find detailed migration guides as follows:

🤗 New Contributors

🌟 Acknowledgements

We wholeheartedly thank @Mayankm96, @kellyguo11 and the Boston Dynamics AI Institute for their significant contributions to the framework.

v0.3.1

31 May 13:05
Compare
Choose a tag to compare

👀 Overview

This is an intermediate release with minor patch fixes and improvements.

Note: This is the final release of the framework under the name "Orbit". The framework will soon be renamed to "Isaac Lab" and be moved to a new GitHub organization. More details will be provided shortly.

Full Changelog: v0.3.0...v0.3.1

✨ New Features

🔧 Improvements

  • Removes duplicated cassie configuration in core extension by @MuhongGuo
  • Fixes type-hinting for articulation properties in from_files_cfg.py by @MuhongGuo
  • Adds X11 setup checks for the Docker container by @hhansen-bdai

🐛 Bug Fixes

  • Fixes configclass shared references to keep compound objects independent across subclass instances by @hhansen-bdai
  • Fixes loading of ContactSensor when using it in an extension by @fyu-bdai
  • Fixes RSL-RL ONNX exporter for empirical normalization by @Nemantor

🤗 New Contributors

v0.3.0

17 Apr 20:01
f71340e
Compare
Choose a tag to compare

👀 Overview

This release includes various fixes and improvements to the framework. It additionally includes many new features, as listed below.

Full Changelog: v0.2.0...v0.3.0

✨ New Features

🔧 Improvements

  • Adds a runner script to execute all tests in the source directory by @jsmith-bdai
  • Allows loading of initialized configs in load_cfg_from_registry by @nikitardn
  • Checks default joint states are configured within limits by @Dhoeller19
  • Expands on unit tests for rigid object asset and terrain importer classes by @jsmith-bdai
  • Adds unit tests for contact sensor class by @fyu-bdai
  • Adds signal interrupt handle to AppLauncher by @Mayankm96
  • Adds ROS2 Humble to Dockerfile by @hhansen-bdai
  • Improved usage instructions for cluster deployment by @pascal-roth
  • Removes unnecessary future imports for Python 3.10 by @Mayankm96

🐛 Bug Fixes

  • Fixes running environments with a single instance by @Dhoeller19
  • Fixes source frame indexing in FrameTransfomer sensor by @jsmith-bdai
  • Fixes handling of time-out signal in RSL-RL and RL-Games wrapper by @Mayankm96
  • Fixes unwanted squeeze in Articulation class for 1-joint assets by @Mayankm96
  • Fixes shape argument ordering in hf_terrains.random_uniform_terrain by @nikitardn
  • Fixes joint and body sub-indexing for observations and rewards by @Dhoeller19
  • Fixes camera sensor for Isaac Sim 2023.1 update by @hhansen-bdai
  • Fixes imitation learning workflow for lift environment by @jsmith-bdai
  • Fixes apply actions method in the NonHolonomicAction action term class by @KyleM73
  • Fixes the tensor shape for the contact sensor's force matrix data by @abmoRobotics
  • Fixes missing max raycast distance in RayCaster sensor by @renezurbruegg
  • Fixes rendering of RTX sensors within the environment stepping by @Dhoeller19

💔 Breaking Changes

✈️ Migration Guide

Renaming of Randomization Manager to Event Manager

While the randomization manager referred to all possible " randomizations " in the environment, many users felt that the triggering
of the terms was not apparent. Additionally, for non-RL use-cases, randomization seemed like a misnomer. Hence, we renamed the class to be called event manager.

Replace the following import and usage:

from omni.isaac.orbit.managers import RandomizationTermCfg as RandTerm

@configclass
class RandomizationCfg:
    """Configuration for randomization."""

    reset_base = RandTerm(
        func=mdp.reset_root_state_uniform,
        mode="reset",
        params={"pose_range": {}, "velocity_range": {}},
    )

@configclass
class MyEnvCfg:

     randomization: RandomizationCfg = RandomizationCfg()

with the following:

from omni.isaac.orbit.managers import EventTermCfg as EventTerm

@configclass
class EventCfg:
    """Configuration for events."""

    reset_base = EventTerm(
        func=mdp.reset_root_state_uniform,
        mode="reset",
        params={"pose_range": {}, "velocity_range": {}},
    )

@configclass
class MyEnvCfg:

     events: EventCfg = EventCfg()

Renaming of MDP terms

We observed that several of the MDP terms had close to overlapping names, such as the reward term joint_pos_limits and termination term joint_pos_limit. To avoid errors, we decided to make the term names clearer.

Please note the following changes in MDP terms:

  • Observation: joint_pos_norm -> joint_pos_limit_normalized
  • Event: add_body_mass -> randomize_rigid_body_mass
  • Termination: base_height -> root_height_below_minimum
  • Termination: joint_pos_limit -> joint_pos_out_of_limit
  • Termination: joint_pos_manual_limit -> joint_pos_out_of_manual_limit
  • Termination: joint_vel_limit -> joint_vel_out_of_limit
  • Termination: joint_vel_manual_limit -> joint_vel_out_of_manual_limit
  • Termination: joint_torque_limit -> joint_effort_out_of_limit

Removal of omni.isaac.contrib_tasks

Initially, we intended to have the contrib_tasksmodule for developers to send their environment implementations. However, many users preferred a more isolated development environment for their projects. Hence, we removed the contrib_tasks and now provide a separate template repository for building projects that use Orbit.

However, we encourage the community to provide their environment implementations directly to the orbit_tasks extension. This allows us to ensure the environments are maintained during future releases of the framework.

For more details, please check: https://github.com/isaac-orbit/orbit.ext_template

🤗 New Contributors

Release 0.2.0

10 Feb 12:22
Compare
Choose a tag to compare

👀 Overview

This release refactors Orbit APIs to make them more modular and performance-efficient. It also introduces various new functionalities, such as batched sensors and managers handling randomization, termination, action spaces, and curriculum.

Full Changelog: v0.1.0...v0.2.0

✨ New Features

  • Procedural terrain generation using height-fields and trimesh library
  • Sensors for contact sensing, frame transformations, and GPU-based ray-casting
  • Scene manager to handle a collection of assets and sensors
  • Managers to handle various aspects of environment designing - action space, observation space, randomization, termination, rewards, and curriculum
  • Spawning support to load meshes in different formats (OBJ, FBX, STL) and URDF files into simulation directly
  • Support for docker and cluster-based deployments
  • New environments for flat and rough terrain locomotion from legged_gym

🔧 Improvements

  • Merged the previous type-specific static markers into a unified VisualizationMarkers class
  • Switched to using PhysX interfaces directly instead of Isaac Sim interface classes for performance
  • Migrated the gym.Env class from the OpenAI Gym 0.21 version to the Gymnasium v0.29 version

💔 Breaking Changes

This release is incompatible with v0.1.0 due to heavy refactoring and changes. We recommend users revisit the tutorials to familiarize themselves with the new APIs. We apologize for any inconvenience caused but believe the enhancements in this release justify the transition.

🤗 New Contributors