Skip to content

fix: isolate hidden projectiles and disable training pool by default - #223

Merged
tesslerc merged 2 commits into
mainfrom
fix/issue-222-isaacgym-projectile-patch-budget
Jul 31, 2026
Merged

fix: isolate hidden projectiles and disable training pool by default#223
tesslerc merged 2 commits into
mainfrom
fix/issue-222-isaacgym-projectile-patch-budget

Conversation

@jyf588

@jyf588 jyf588 commented May 19, 2026

Copy link
Copy Markdown
Collaborator

Fixes #222.

  • Give hidden projectile slots distinct positions at creation and when they are reset or expire across IsaacGym, IsaacLab, Newton, and MuJoCo.
  • Keep the shared hide_spacing / hidden_z_for_index() layout and guard the zero-projectile lifecycle, including the J-key path.
  • Set ProjectileConfig.num_projectiles=0 for training by default, avoiding unnecessary rigid bodies and PhysX contact-patch pressure.
  • Standard inference config generation enables one projectile only when the configured pool is zero; explicit experiment or CLI pool sizes remain unchanged.
  • Remove the IsaacGym-only default so all backends share the same training and inference semantics.

Validation: focused projectile regression tests pass (2), all touched simulator files compile, and git diff --check is clean.

@tesslerc tesslerc changed the title fix(isaacgym): default projectiles=1 + match hidden-projectile layout… fix: isolate hidden projectiles and disable training pool by default Jul 31, 2026
ProtoMotions and others added 2 commits July 31, 2026 15:43
… across backends

Fixes #222.

- Add ProjectileConfig.hide_spacing (4 m default) + hidden_z_for_index()
  helper so hidden cubes get unique z slots; use it at both spawn time
  (all 4 backends) and runtime hide paths (_update_projectiles /
  _hide_projectiles_for_envs).
- IsaacGym: override SimulatorConfig.projectile default_factory to
  ProjectileConfig(num_projectiles=1). Each cube is a full dynamic
  rigid body that allocates PhysX contact patches against the
  wildcard-collidable add_triangle_mesh terrain; at 4096 envs × 5 cubes
  this exceeded the ~80k maxRigidPatchCount budget (not configurable
  from gymapi.PhysXParams). Other backends keep the 5-cube default.
  Override via --overrides simulator.projectile.num_projectiles=N to
  opt back into more cubes.
- IsaacGym / IsaacLab / Newton: in _set_projectile_root_states, rewrite
  hidden cubes' X/Y by env_id (z <= hide_z is the hidden marker, throws
  skip this) so post-init projectile layout is consistent across backends.
- base_simulator._throw_projectile: early-return when num_projectiles==0
  so backends that opt out can't crash on the J key.

Signed-off-by: protomotions <protomotions.nvidia@gmail.com>
Signed-off-by: Chen Tessler <ctessler@nvidia.com>
@tesslerc
tesslerc force-pushed the fix/issue-222-isaacgym-projectile-patch-budget branch from 05cda39 to ed0dd86 Compare July 31, 2026 22:45
@tesslerc
tesslerc merged commit 18234db into main Jul 31, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

IsaacGym crashes with 2048 parallel environments on H800 when training h1_2 mimic task

3 participants