Releases: isaac-sim/IsaacLab
v0.3.1
👀 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
- Allows setting USD variants when loading prim from USD file by @lorenwel
- Adds
fix_root_link
attribute to ArticulationRootPropertiesCfg by @Mayankm96
🔧 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
- @MuhongGuo made their first contribution in #383
- @lorenwel made their first contribution in #402
v0.3.0
👀 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
- Adds terrain-aware patch sampling into the terrain generator by @nikitardn
- Adds a viewer camera controller to the base environment by @farbod-farshidian
- Adds animation recording for environments by @Mayankm96
- Adds Franka cabinet opening environment from IsaacGymEnvs by @renezurbruegg
- Adds Allegro hand cube manipulation environment from IsaacGymEnvs by @Mayankm96, @arbhardwaj98
- Adds Allegro and Shadow Hand asset configurations by @Mayankm96
- Adds Kinova (Jaco2, Gen3) asset configurations by @Mayankm96
- Adds approximate torque calculation for implicit actuator by @nikitardn
- Adds loading of custom kit experience files using AppLauncher by @Mayankm96
🔧 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
- Drops support for Isaac Sim 2022.2.2 and earlier by @hhansen-bdai
- Removes
compat
submodule from orbit by @Mayankm96 - Removes
omni.isaac.contrib_tasks
in favor of separate project template by @nburger-bdai - Changes link names ordering in articulation to follow PhysX by @Mayankm96
- Renames
RandomizationManager
toEventManager
by @pascal-roth - Renames some terms in
omni.isaac.orbit.envs.mdp
to avoid confusion by @Mayankm96
✈️ 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_tasks
module 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
- @fyu-bdai made their first contribution in 06ada15
- @arbhardwaj98 made their first contribution in 1a42eb9
- @phenomen21 made their first contribution in #248
- @Ltesfaye made their first contribution in #320
- @KyleM73 made their first contribution in #317
- @VladimirFokow made their first contribution in #321
- @shafeef901 made their first contribution in #300
- @RumblingTurtle made their first contribution in #341
Release 0.2.0
👀 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
- @kouroshD
- @Toni-SM
- @pascal-roth
- @nikitardn
- @Dhoeller19
- @jsmith-bdai
- @AutonomousHansen
- @farbod-farshidian
Release 0.1.0
👀 Overview
The initial release of the ORBIT framework. It includes the core APIs built around Isaac Sim for robot learning. In addition, provides an initial set of environments for learning.
The main set of features includes:
- Python configuration handling system using the decorator
@configclass
- Different explicit actuator models for processing commands
- Actuator groups to handle complex articulations
- Support for different robots:
- legged robots: ANYmal-C, ANYmal-B, Unitree A1
- fixed-arm manipulators: Franka Emika arm, UR5
- wheel-based mobile manipulators: Clearpath Ridgeback with Franka Emika arm or UR5
- legged mobile manipulators
- Batched implementation of motion generators
- differential inverse kinematics
- Initial set of environments for learning
- classic: cart-pole, humanoid, ant
- locomotion: legged locomotion on flat terrain
- manipulation: table-top object lifting, end-effector tracking
- Demonstrations of different learning workflows
- Imitation learning: robomimic
- Reinforcement learning: stable-baselines3, rsl-rl, rl-games