v2.1.1
👀 Overview
This release has been in development over the past few months and includes a significant number of updates, enhancements, and new features across the entire codebase. Given the volume of changes, we've grouped them into relevant categories to improve readability. This version is compatible with NVIDIA Isaac Sim 4.5.
We appreciate the community’s patience and contributions in ensuring quality and stability throughout. We're aiming for more frequent patch releases moving forward to improve the developer experience.
Note: This minor release does not include a Docker image or pip package.
Full Changelog: v2.1.0...v2.1.1
✨ New Features
- Asset Interfaces
- Adds
positionargument to set external forces and torques at different locations on the rigid body by @AntoineRichard in #1680 - Adds
body_incoming_joint_wrench_bto ArticulationData field by @jtigue-bdai in #2128 - Allows selecting articulation root prim explicitly by @lgulich in #2228
- Adds
- Sensor Interfaces
- Draws connection lines for FrameTransformer visualization by @Mayankm96 in #1754
- Uses visualization marker for connecting lines inside FrameTransformer by @bikcrum in #2526
- MDP Terms
- Adds
body_pose_wandbody_projected_gravity_bobservations by @jtigue-bdai in #2212 - Adds joint effort observation by @jtigue-bdai in #2211
- Adds CoM randomization term to manager-based events by @shendredm in #1714
- Adds time-based mdp (observation) functions by @TheIndoorDad in #2332
- Adds curriculum mdp term to modify any environment parameters by @ooctipus in #2777
- Adds
- New Example Tasks
🔧 Improvements
Core API
- Actuator Interfaces
- Fixes implicit actuator limits configs for assets by @ooctipus in #2952
- Updates actuator configs for Franka arm by @reeceomahoney in #2492
- Asset Interfaces
- Optimizes getters of data inside asset classes by @Mayankm96 in #2118
- Adds method to set the visibility of the Asset's prims by @Mayankm96 in #1752
- Sensor Interfaces
- Updates to ray caster ray alignment and more customizable drift sampling by @jsmith-bdai in #2556
- Extends ContactSensorData by
force_matrix_w_historyattribute by @bikcrum in #2916 - Adds IMU projected_gravity_b and IMU computation speed optimizations by @jtigue-bdai in #2512
- Manager Interfaces
- Adds serialization to observation and action managers by @jsmith-bdai in #2234
- Adds option to define the concatenation dimension in the
ObservationManagerby @pascal-roth in #2393 - Supports composite observation space with proper min max in manager based env by @ooctipus in #2811
- Changes counter update in
CommandManagerby @pascal-roth in #2393 - Integrates
NoiseModelto manager-based workflows by @ozhanozen in #2755 - Updates
NoiseModelWithAdditiveBiasto apply per-feature bias sampling by @ozhanozen in #2760 - Fixes
isaaclab.scene.reset_toto properly accept None as valid argument by @ooctipus in #2970 - Resets step reward buffer properly when weight is zero by @bikcrum in #2392
- Terrain Generation
- Allows for custom
TerrainGeneratorwithout modifications of theTerrainImporterby @pascal-roth in #2487 - Adds option for terrain border to above or below the ground by @pascal-roth in #2394
- Adds ability to set platform height independent of object height for terrain by @jtigue-bdai in #2695
- Adds absolute and relative noise to
MeshRepeatedObjectsTerrainby @jtigue-bdai in #2830
- Allows for custom
- Simulation
- Raises exceptions from initialization callbacks inside SimContext in #2166
- Applies
semantic_tagsto ground by @KumoLiu in #2410 - Sets
enable_stabilizationto false by default by @AntoineRichard in #2628 - Fixes deprecation warning for pxr.Semantics by @kellyguo11 in #2721
- Math Utilities
- Improves the implementation of
euler_xyz_from_quatby @ShaoshuSu in #2365 - Optimizes
yaw_quatimplementation by @hapatel-bdai in #2247 - Changes to
quat_applyandquat_apply_inversefor speed by @jtigue-bdai in #2129 - Changes
quat_box_minusimplementation by @jtigue-bdai in #2217 - Adds
quat_box_plusandrigid_body_twist_transformby @jtigue-bdai in #2217 - Adds math tests for transforms, rotations, and conversions by @jtigue-bdai in #2801
- Improves the implementation of
- General Utilities
- Simplifies buffer validation check for CircularBuffer by @Mayankm96 in #2617
- Modifies
update_class_from_dict()to wholesale replace flat Iterables by @ozhanozen in #2511 - Allows slicing to be processed from lists inside dictionary by @LinghengMeng @kellyguo11 in #2853
Tasks API
- Adds support for
module:taskand updates gymnasium to >=1.0 by @kellyguo11 in #2467 - Adds available RL library configs on error message if entry point is invalid by @Toni-SM in #2713
- Enables hydra for all play.py scripts by @ooctipus in #2995
- Fixes ray lazy metric reporting and hanging processes by @ozhanozen in #2346
- Adds gradient clipping parameter for distillation using RSL-RL by @alessandroassirelli98 in #2454
- Makes GRU-based RNNs exportable in RSL RL by @WT-MM in #3009
- Adds wandb native support in rl_games by @ooctipus in #2650
- Optimizes Stable-Baselines3 wrapper and additional training configs by @araffin in #2022
- Enables sb3 to load checkpoint to continue training by @ooctipus in #2954
- Supports sb3 wrapper to pre-process env's image obs-space to trigger sb3 natively supported cnn creation pipeline by @ooctipus in #2812
Infrastructure
- Dependencies
- Updates torch to 2.7.0 with cuda 12.8 blackwell support by @kellyguo11 in #2998
- Updates gymnasium to v1.2.0 by @kellyguo11 in #2852
- Fixes numpy ver to <2 for isaaclab_rl and isaaclab_tasks by @ooctipus in #2866
- Adds license file for 3rd party OSS dependencies by @kellyguo11 in #2577
- Sets robomimic version to v0.4.0 by @masoudmoghani in #2814
- Upgrades pillow dependencies for upcoming Kit 107.3.1 by @ooctipus in #2908
- Removes protobuf upper version pin by @kwlzn in #2726
- Docker
- Uses
--gpusinstead of nvidia runtime for docker by @yanziz-nvidia in #2411 - Adds optional suffix parameter for docker name by @zoemcc in #2172
- Adds support for bash history in docker by @AntoineRichard in #2659
- Uses
- Testing & Benchmarking
- Switches unittest to pytest for testing by @kellyguo11 @pascal-roth in #2459
- Adds training benchmark unit tests with input config by @matthewtrepte in #2503
- Fixes failing environment and IK tests by @kellyguo11 in #2372
- Repository Utilities
- Adds script to convert urdfs/meshes to instanceable USD in batches by @hapatel-bdai in #2248
- Adds citation link for the repository by @kellyguo11 in #2935
- Adds Internal template generator warning for case when user pip installed isaaclab by @ooctipus in #3027
🐛 Bug Fixes
Core API
- Actuator Interfaces
- Fixes DCMotor clipping for negative power and adds actuator tests by @jtigue-bdai in #2300
- Asset Interfaces
- Sensor Interfaces
- Fixes pose update in
CameraandTiledCameraby @pascal-roth in #2316 - Fixes moving to cpu if needed in camera.py by @renaudponcelet in #2176
- Fixes how camera intrinsics are used for creation and update by @jtigue-bdai in #1624
- Fixes pose update in
- Manager Interfaces
- Fixes ObservationManager history buffer corrupted by external calls to ObservationManager.compute by @patrickhaoy in #2885
- Fixes check for manager term class inside event manager by @miguelalonsojr in #2357
- Fixes the issue of using Modifiers and history buffer together by @ZiwenZhuang in #2461
- Fixes check for re-initializing terms in ManagerBase by @Mayankm96 in #2612
- Fixes collision filtering logic on CPU by @kellyguo11 in #2553
- Fixes import inside InteractiveScene and LiveVisualizer by @Mayankm96 in #2611
- Fixes broken import in Live Visualizer image plot by @pascal-roth in #2486
- MDP Terms
- Fixes shape mismatch in body COM randomization by @shendredm in #2561
- Fixes visual prims handling during texture randomization by @KumoLiu in #2476
- Resets joint position/velocity targets in
reset_scene_to_defaultby @wghou in #2692 - Fixes joint out of position limits terminations by @GiulioRomualdi in #2442
- Fixes
reset_joints_by_scaleandreset_joints_by_offsetsto only affect thejoint_namesspecified in SceneEntityCfg by @ooctipus in #2899
- Math Utilities
- Fixes the implementation of
quat_inv()by @ozhanozen in #2797
- Fixes the implementation of
Tasks API
- Fixes export LSTM to onnx file by @jtigue-bdai in #2821
Example Tasks
- Removes redundant contact termination assignment in
H1RoughEnvCfgby @louislelay in #1748 - Fixes memory leak in SDF calculation by @leondavi in #2680
- Fixes
randomizationtoeventsin Digit envs by @fan-ziqi in #3033
📜 Documentation
- Adds section on isaac sim version in README by @kellyguo11 in #2698
- Adds physics performance how-to guide by @kellyguo11 in #2468
- Adds walkthrough section in documentation with jetbot tutorial by @mpgussert in #2368
- Changes quickstart installation to use conda by @mpgussert in #2686
- Fixes typo in the docs for adding your own library by @norbertcygiert in #2520
- Updates documentation for conda, fabric, and inferencing by @kellyguo11 in #2772
- Updates license headers and contributing with DCO by @kellyguo11 in #2629
- Updates help text and docs to reflect pytest usage by @louislelay in #2638
- Updates doc on actuators to include some references by @AntoineRichard in #2656
- Update documentation on pytorch multi gpu setup by @Alex-Omar-Nvidia in #2687
- Remove deprecated env variable in docs by @Kyu3224 in #2936
💔 Breaking Changes
While this release mainly focuses around various improvements and bug fixes, there are some noticeable behavior changes that are worth highlighting. These are summarized below.
Disabling of additional stabilization pass in PhysX settings
Previously, we were setting the PhysxCfg.enable_stabilization to True by default. This flag enabled additional stabilization processing by the underlying physics engine to improve the stability of complex interactions between large number of bodies.
As discussed in the PR #2628, enabling this flag led to incorrect contact forces report. Under the hood, PhysX introduces various non-physical heuristics to perform stabilization of large number of contacts. However, since the solver has improved, these heuristics are no longer applicable or needed for robotics applications. Hence, we have changed the flag enable_stabilization to False by default.
Clipping of torques inside the DC Motor
Previously, the clipping of torques inside the DC Motor did not account for the negative power regions properly. With the changes introduced in PR #2300, this should be handled properly.
🤗 New Contributors
- @miguelalonsojr made their first contribution in #2357
- @renaudponcelet made their first contribution in #2176
- @yanziz-nvidia made their first contribution in #2411
- @KumoLiu made their first contribution in #2410
- @bikcrum made their first contribution in #2392
- @zoemcc made their first contribution in #2172
- @virgilio96upm made their first contribution in #1716
- @ZiwenZhuang made their first contribution in #2461
- @reeceomahoney made their first contribution in #2492
- @shendredm made their first contribution in #1714
- @matthewtrepte made their first contribution in #2503
- @yijieg made their first contribution in #2507
- @alessandroassirelli98 made their first contribution in #2454
- @TheIndoorDad made their first contribution in #2332
- @ooctipus made their first contribution in #2650
- @araffin made their first contribution in #2022
- @wghou made their first contribution in #2692
- @ShaoshuSu made their first contribution in #2365
- @norbertcygiert made their first contribution in #2520
- @leondavi made their first contribution in #2680
- @kwlzn made their first contribution in #2726
- @bsb808 made their first contribution in #2788
- @patrickhaoy made their first contribution in #2885
- @Kyu3224 made their first contribution in #2936
- @Alex-Omar-Nvidia made their first contribution in #2687
- @WT-MM made their first contribution in #3009