👀 Overview
This patch release focuses on improving actuator configuration and fixing key bugs while reverting unintended behavioral changes from v2.0.1. We strongly recommend switching to this new version if you're migrating from a pre-2.0 release of Isaac Lab.
Key Changes:
- Actuator limit handling: Introduced
velocity_limit_sim
andeffort_limit_sim
to clearly distinguish simulation solver limits from actuator model constraints. Reverted implicit actuator velocity limits to pre-v2.0 behavior - Simulation configuration update: Removed
disable_contact_processing
flag to simplify behavior - Rendering configuration update: Reverted to pre-2.0 configuration to improve the quality of the render product
- Tiled camera fixes: Fixed motion vector processing and added a hotfix for retrieving semantic images from the TiledCamera
- WebRTC support: Added IP specification for live-streaming
Full Changelog: v2.0.1...v2.0.2
✨ New Features
- Adds
velocity_limit_sim
andeffort_limit_sim
to actuator by @jtigue-bdai in #1654 - Adds WebRTC livestreaming support with IP specification by @sheikh-nv in #1967
🔧 Improvements
- Adds guidelines and examples for code contribution by @Mayankm96 in #1876
- Separates joint state setters inside Articulation class by @Mayankm96 in #1751
- Implements deterministic evaluation for skrl's multi-agent algorithms by @Toni-SM in #1972
- Adds new extensions to
pyproject.toml
by @Mayankm96 in #1988 - Updates docs on Isaac Sim binary installation path and VSCode integration by @j3soon in #1970
- Removes remaining deprecation warning in RigidObject deprecation by @jtigue-bdai in #1851
- Adds security and show&tell notes to documentation by @kellyguo11 in #1830
- Updates docs for segmentation and 50 series GPUs issues by @kellyguo11 in #1943
- Adds workaround for semantic segmentation issue with tiled camera by @kellyguo11 in #1947
🐛 Bug Fixes
- Fixes offset from object obs for Franka stacking env when using parallel envs by @peterd-NV in #1839
- Adds scene update to ManagerBasedEnv, DirectRLEnv and MARL envs initialization by @jtigue-bdai in #1809, #1865
- Loads actuator networks in eval() mode to prevent gradients by @Mayankm96 in #1862
- Fixes instructions on importing ANYmal URDF in docs by @Mayankm96 in #1915
- Fixes setting of root velocities in the event term
reset_root_state_from_terrain
by @syundo0730 in #1884 - Fixes
activate_contact_sensors
when using spawner.MultiUsdFileCfg by @Mayankm96 in #1990 - Fixes misalignment in motion vectors from TiledCamera by @lhy0807 in #2012
- Sets default tensor device to CPU for Camera rot buffer by @kellyguo11 in #2002
💔 Breaking Changes
- Reverts the setting of joint velocity limits for implicit actuators by @Mayankm96 in #1873
- Removes
disable_contact_processing
flag from SimulationContext by @Mayankm96 in #1861 - Reverts to old render settings in kit experience files by @pascal-roth in #1855
✈️ Migration Guide
Warning
We strongly recommend reviewing the details to fully understand the change in behavior, as it may impact the deployment of learned policies. Please open an issue on GitHub if you face any problems.
Introduction of simulation's effort and velocity limits parameters in ActuatorBaseCfg
Details
We have introduced the configuration variables velocity_limit_sim
and effort_limit_sim
to the isaaclab.actuators.ActuatorBaseCfg
to allow users to set the simulation joint velocity and effort limits through the actuator configuration class.
Previously, we were overusing the attributes velocity_limit
and effort_limit
inside the actuator configuration. A series of changes in-between led to a regression from v1.4.0 to v2.0.1 release of IsaacLab. To make this clearer to understand, we note the change in their behavior in a tabular form:
Actuator Type | Attribute | v1.4.0 Behavior | v2.0.1 Behavior |
---|---|---|---|
Implicit | velocity_limit |
Ignored, not set into simulation | Set into simulation |
Implicit | effort_limit |
Set into simulation | Set into simulation |
Explicit | velocity_limit |
Used by actuator models (e.g., DC Motor), not set into simulation | Used by actuator models (e.g., DC Motor), set into simulation |
Explicit | effort_limit |
Used by actuator models, not set into simulation | Used by actuator models, set into simulation |
Setting the limits from the configuration into the simulation directly affects the behavior of the underlying physics engine solver. This impact is particularly noticeable when velocity limits are too restrictive, especially in joints with high stiffness, where it becomes easier to reach these limits. As a result, the change in behavior caused previously trained policies to not function correctly in IsaacLab v2.0.1.
Consequently, we have reverted back to the prior behavior and added velocity_limit_sim
and effort_limit_sim
attributes to make it clear that setting those parameters means changing solver's configuration. The new behavior is as follows:
Attribute | Implicit Actuator | Explicit Actuator |
---|---|---|
velocity_limit |
Ignored, not set into simulation | Used by the model (e.g., DC Motor), not set into simulation |
effort_limit |
Set into simulation (same as effort_limit_sim ) |
Used by the models, not set into simulation |
velocity_limit_sim |
Set into simulation | Set into simulation |
effort_limit_sim |
Set into simulation (same as effort_limit ) |
Set into simulation |
Users are advised to use the xxx_sim
flag if they want to directly modify the solver limits.
Removal of disable_contact_processing
flag in SimulationCfg
Related MRs: #1861
Details
We have now removed the disable_contact_processing
flag from the SimulationCfg
to not have the user worry about these intricacies of the simulator. The flag is always True by default unless a contact sensor is created (which will internally set this flag to False).
Previously, the flag disable_contact_processing
led to confusion about its behavior. As the name suggests, the flag controls the contact reporting from the underlying physics engine, PhysX. Disabling this flag (note the double negation) means that PhysX collects the contact information from its solver and allows reporting them to the user. Enabling this flag means this operation is not performed and the overhead of it is avoided.
Many of our examples (for instance, the locomotion environments) were setting this flag to True which meant the contacts should not get reported. However, this issue was not noticed earlier since GPU simulation bypasses this flag, and only CPU simulation gets affected. Running the same examples on CPU device led to different behaviors because of this reason.
Existing users, who currently set this flag themselves, should receive a deprecated warning mentioning the removal of this flag and the switch to the new default behavior.
Switch to older rendering settings to improve render quality
Related MRs: #1855
Details
With the IsaacLab 2.0.0 release, we switched to new render settings aimed at improving tiled-rendering performance, but at the cost of reduced rendering quality. This change particularly affected dome lighting in the scene, which is the default in many of our examples.
As reported by several users, this change negatively impacted render quality, even in cases where it wasn’t necessary (such as when recording videos of the simulation). In response to this feedback, we have reverted to the previous render settings by default to restore the quality users expected.
For users who are looking to trade render quality for speed, we will provide guidelines in the future.
🤗 New Contributors
- @syundo0730 made their first contribution in #1884
- @Gonglitian made their first contribution in #1981
- @lhy0807 made their first contribution in #2012