Skip to content

[release/3.0.0-beta2] Fix AutoMate PhysX sizing and assembly ID validation#6048

Merged
ooctipus merged 1 commit into
isaac-sim:release/3.0.0-beta2from
ooctipus:fix/beta2-automate-collision-stack
Jun 9, 2026
Merged

[release/3.0.0-beta2] Fix AutoMate PhysX sizing and assembly ID validation#6048
ooctipus merged 1 commit into
isaac-sim:release/3.0.0-beta2from
ooctipus:fix/beta2-automate-collision-stack

Conversation

@ooctipus

@ooctipus ooctipus commented Jun 9, 2026

Copy link
Copy Markdown
Collaborator

Summary

Validation

  • git diff --check refs/remotes/upstream/release/3.0.0-beta2...HEAD
  • python3 -m py_compile source/isaaclab_tasks/isaaclab_tasks/direct/automate/run_w_id.py source/isaaclab_tasks/isaaclab_tasks/direct/automate/run_disassembly_w_id.py source/isaaclab_tasks/isaaclab_tasks/direct/automate/assembly_env_cfg.py source/isaaclab_tasks/isaaclab_tasks/direct/automate/disassembly_env_cfg.py

@ooctipus ooctipus requested a review from kellyguo11 as a code owner June 9, 2026 01:35
@github-actions github-actions Bot added bug Something isn't working isaac-lab Related to Isaac Lab team labels Jun 9, 2026

@isaaclab-review-bot isaaclab-review-bot Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🤖 IsaacLab Review Bot — PR #6048

Summary

Cherry-pick of #6038 into release/3.0.0-beta2. Two fixes:

  1. PhysX GPU collision stack sizing: Adds gpu_collision_stack_size=2**27 to both assembly and disassembly env configs
  2. Assembly ID placeholder validation: Rejects the literal ASSEMBLY_ID placeholder string before launching simulation

✅ Findings

# Category Status Notes
1 Correctness 2**27 (128 MiB) collision stack is appropriate for complex contact-heavy assembly tasks at 128 envs
2 Consistency Both assembly_env_cfg.py and disassembly_env_cfg.py updated identically
3 Validation parser.error() is the correct argparse pattern — prints usage and exits with code 2
4 Error message Provides example assembly ID (00032) for user guidance
5 Changelog Fragment present at changelog.d/fix-automate-collision-stack.rst
6 CI pre-commit ✅, Build Wheel ✅, installation tests pending

💡 Minor Observations (non-blocking)

  • The validation only catches the exact string "ASSEMBLY_ID". If a user passes an empty string or whitespace, it would still proceed. Consider adding a regex check (e.g., r"^\d{5}$") for stricter validation in a future iteration.
  • The PR body references #6038 but the title also mentions #6039 — the actual commit only cherry-picks from #6038. Title is slightly misleading but acceptable for a release branch backport.

Verdict: LGTM

Clean, minimal cherry-pick. Both fixes are well-scoped and correctly applied. No concerns for merge.

@greptile-apps

greptile-apps Bot commented Jun 9, 2026

Copy link
Copy Markdown
Contributor

Greptile Summary

This cherry-pick from develop fixes two independent issues in the AutoMate simulation tasks: dropped PhysX contacts at the default 128-environment count, and accidental use of a documentation placeholder as an assembly ID.

  • PhysX GPU collision stack (assembly_env_cfg.py, disassembly_env_cfg.py): adds gpu_collision_stack_size=2**27 (128 MB) alongside the existing gpu_max_rigid_contact_count and gpu_max_rigid_patch_count settings, keeping the assembly and disassembly configs in sync.
  • Placeholder guard (run_w_id.py, run_disassembly_w_id.py): immediately after argument parsing, rejects the literal string "ASSEMBLY_ID" with a descriptive parser.error message before any filesystem or config-file side-effects occur.

Confidence Score: 4/5

Safe to merge; changes are small and targeted with no cross-cutting impact.

Both fixes are minimal and well-scoped. The gpu_collision_stack_size addition is a one-liner mirrored identically across the two env configs. The placeholder guard fires early and uses parser.error correctly. The one rough edge is in run_w_id.py: --assembly_id has no default and is not required, so omitting the flag entirely lets None reach update_task_param undetected by the new check.

run_w_id.py — the --assembly_id argument lacks a default and required=True, so the new placeholder check can be bypassed when the flag is omitted entirely.

Important Files Changed

Filename Overview
source/isaaclab_tasks/isaaclab_tasks/direct/automate/assembly_env_cfg.py Adds gpu_collision_stack_size=2**27 (128 MB) to PhysX GPU scene config to prevent dropped contacts at the default 128-environment count.
source/isaaclab_tasks/isaaclab_tasks/direct/automate/disassembly_env_cfg.py Same gpu_collision_stack_size=2**27 addition as the assembly config, keeping the two environment configs in sync.
source/isaaclab_tasks/isaaclab_tasks/direct/automate/run_w_id.py Adds a guard that rejects the literal ASSEMBLY_ID placeholder; --assembly_id has no default and no required=True, so a missing flag still bypasses the check and writes 'None' into the config.
source/isaaclab_tasks/isaaclab_tasks/direct/automate/run_disassembly_w_id.py Same placeholder guard added; --assembly_id already has a concrete default (00731), so the check is only triggered by an explicit placeholder argument.
source/isaaclab_tasks/changelog.d/fix-automate-collision-stack.rst New changelog entry accurately describing both the collision-stack size increase and the assembly-ID validation improvement.

Flowchart

%%{init: {'theme': 'neutral'}}%%
flowchart TD
    A([User invokes run script]) --> B[parse_args]
    B --> C{assembly_id == ASSEMBLY_ID?}
    C -- Yes --> D[parser.error: exit with message]
    C -- No --> E[update_task_param writes ID into cfg file]
    E --> F[subprocess runs isaaclab.sh train/play]
    F --> G([Simulation starts with PhysX gpu_collision_stack_size = 2 pow 27])
Loading

Reviews (1): Last reviewed commit: "Fix AutoMate PhysX collision stack sizin..." | Re-trigger Greptile

Comment on lines +60 to +61
if args.assembly_id == "ASSEMBLY_ID":
parser.error("replace ASSEMBLY_ID with an AutoMate assembly ID, for example 00032")

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Missing None guard alongside the placeholder check

--assembly_id has no default value and is not marked required=True, so when a caller omits the flag entirely args.assembly_id is None. None != "ASSEMBLY_ID" is True, so the new validation passes silently and update_task_param receives None as the ID — causing the string literal 'None' to be written into the config file. Adding an is None check (or required=True on the argument) would close this gap alongside the placeholder guard.

@ooctipus ooctipus merged commit 3aa2083 into isaac-sim:release/3.0.0-beta2 Jun 9, 2026
37 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

bug Something isn't working isaac-lab Related to Isaac Lab team

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants