Isaac Gym Preview 2 Release Now Available

Hi everyone,

I’m happy to announce that our Preview 2 Release of Isaac Gym is now available to download: Isaac Gym - Preview Release | NVIDIA Developer

The team has worked hard to address many of the issues that folks in the forum have discussed, and we’re looking forward to your feedback!

Here’s a quick peek at some of the changes from the release notes:


API + Command Line Parameter Changes

Command line arguments for simulation API and device selection have changed, and are now aligned between the RL examples and general programming examples:

  • --physx_gpu command line option has been removed.
  • --sim_device is used to specify a device for simulation. It can take either cpu or cuda:n as options.
  • --pipeline is used to explicitly choose either the cpu or gpu tensor pipeline API.

Command line arguments for setting the experiment name were improved and extended:

  • --experiment command line option replaced --experiment_name.
  • --metadata flag was added. When used with --experiment <experiment name> additional information about the physics engine, sim device, pipeline and domain randomization is added to the experiment name.

Refactored the API for applying rigid body forces:

  • The new body force API allows applying torques and using different coordinate spaces for force, torque, and position vectors.
  • The apply_body_force function was replaced by apply_body_forces and apply_body_force_at_pos (see API docs).
  • The apply_rigid_body_force_tensor function was replaced by apply_rigid_body_force_tensors and apply_rigid_body_force_at_pos_tensors (see tensor API docs).

Simulation determinism has been improved:

  • A --seed parameter can be set in RL examples to specify what random seed to use. Explicitly setting a seed should produce deterministic results between runs.
  • By default, the seed is set to -1, which will generate a random seed for each run.
  • The --torch_deterministic parameter can now be set to force additional determinism in PyTorch operations, at the expense of performance.
  • For more details, please refer to the Reproducibility section on the Reinforcement Learning Examples page.

The base RL task class has been updated to prepare for future multi-gpu training support:

  • Any user environment inherited from the RL base task class should be updated as well

Asset root and file paths can now be read in from cfg files.

The method attach_camera_to_body now takes named enums instead of an integer argument for the camera attachment mode.

Contents in docker image are now placed under /opt instead of /workspace.

New Features

Asset handling

  • Added support for convex decomposition of collision meshes during asset import.
  • Now uses Assimp for mesh loading. This means that many different types of meshes can be specified in MJCF or URDF assets (including .dae, .stl, .obj, etc.).
  • Added support for loading materials and (embedded and non-embedded) textures from meshes in URDF and MJCF files.
  • Added support for overriding normals loaded from meshes with either smooth vertex normals or face normals.
  • Added flags for explicitly overriding inertia tensors and center of mass in AssetOptions.
  • Added support for visual boxes and material loading from MJCF.
  • See programming/assets for additional information

Updated graphical user interface and visualization options

  • Added API support for getting mouse position and window size from the viewer
  • See programming/simsetup for additional information

Updates related to Shadow Hand Environment and RL framework features

  • Added adaptive KL scheduling to the default rl-pytorch RL framework. This was previously available only in the rl_games RL framework.
  • Added different observation variants in the Shadow Hand environment for a closer match to OpenAI’s Learning Dexterity project: Learning Dexterity
  • Added support of asymmetric observations and Shadow Hand training examples using them.
  • Added examples of training with LSTM policy and value functions with rl_games.
  • Added support of setting control frequency to be lower than a simulation frequency and controlFrequencyInv parameter to the yaml configs to specify how many simulation steps per one control step should be performed.
  • Added correlated noise to Domain Randomization options.
  • Added support for custom distributions of actor parameters for domain randomization.

Other Asset and Example updates:

  • Added new training environments: ANYmal quadruped robot, Quadcopter and NASA Ingenuity helicopter.

Scalability related containerization updates:

  • Added support for Python 3.8.
  • Added support for headless rendering in docker with available graphics driver.
  • Improved CUDA context handling to prepare for multi-GPU training support

Additional new features:

  • Added support for runtime scaling of actors.
  • Added support for recomputing the inertia tensors of rigid bodies when their mass is changed.
  • Added support for specifying position offset when applying force to bodies.
  • Changed the default values of max_depenetration_velocity and bounce_threshold_velocity.
  • Added CoordinateSpace enum to specify position offsets in local, env, or global space.

Bug Fixes

  • Fixed issue with observation and action noise.
  • Fixed joint limit ranges for CMU and NV humanoids.
  • Fixed axes bug for humanoid training.
  • Fixed incorrect visualization of collision meshes with PhysX backend.
  • Fixed a bug with env spacing in z-up simulations.
  • Fixed a bug where meshes, cylinders, or ellipsoids imported from MJCF could have incorrect friction properties.
  • Fixed a bug where primitive shapes created procedurally could have incorrect thickness in Flex.
  • Fixed a possible crash when getting net contact force tensor on GPU.
  • Fixed submitting mixed control tensors in GPU pipeline.
  • Fixed issues with z-up camera view matrix calculation, lookAt function, and mouse drag direction.
  • Fixed rigid body property getter that was returning erroneous inertia tensors.
  • PhysX: Fixed occasional crash with aggregates on GPU.
  • PhysX: Fixed possible buffer overflow in convex-capsule collision on GPU.
  • PhysX: Fixed stability issues with small meshes.
  • PhysX: Improvements to TGS restitution.
  • PhysX: Fixed issue with applying body forces in GPU pipeline.
  • PhysX: Fixed issue with applying body torques in GPU pipeline.
  • PhysX: Fixed various issues causing non-determinism.
  • Fixed synchronization issues in GPU pipeline.
  • Fixed issue with z-up camera view matrix calculation.
  • Fixed issues with setting the rigid shape properties of an actor.
  • Improved error checking for input tensors.
  • Improved error reporting when CPU-only functions get called during simulation with the GPU pipeline.
  • Fixed a bug in computing transform inverse.
  • Fixed a Flex crash on startup caused by a driver bug.
  • Fixed a bug with ground plane friction in the body_physics_props example.

Take care,
-Gav

6 Likes

Fantastic, thank Isaac Gym team for your incredible work.
Also, when will the Omniverse version of Isaac Gym be released?

3 Likes

Great work. Thanks to the team for the effort. Looking forward to testing out this new version.

1 Like

Is there a way to automatically be notified when a new Isaac Gym release is available? e.g. a developer email list?

12 Likes