Skip to content

Reduce Sharpa demo scene startup costs - #8785

Open
maxkra15 wants to merge 8 commits into
isaac-sim:mainfrom
maxkra15:maxkra15/sharpa-scene-startup
Open

maxkra15 wants to merge 8 commits into
isaac-sim:mainfrom
maxkra15:maxkra15/sharpa-scene-startup

Conversation

@maxkra15

@maxkra15 maxkra15 commented Oct 22, 2026 •

Copy link
Copy Markdown
Contributor

Description

Sharpa startup repeated texture decoding, built large nested Python payloads, and imported visual-only Newton geometry for native USD renderers. This keeps preparation with its existing owner and makes the default Newton GL scenes smaller.

  • Load the detailed RJ45 switch front from one prepared USD; preserve all 1,151,285 triangles, authored normals and three material groups. --backdrop datacenter retains one full GL rack.
  • Keep coffee/teapot mesh and particle payloads in NumPy arrays. Reuse existing mesh triangulation, avoid redundant config/normal copies, and scope shared texture decoding and optional downsampling to model upload.
  • Default GL coffee/teapot to their studios, with full backdrops available through --backdrop. Kit/OVRTX retain full native scenes; skip their unused visual-only Newton imports.
  • Restore teapot Kit/OVRTX camera preparation, hide the coffee studio floor before import, and match the GL cable's authored green color.
  • Preserve RJ45 failure exit status before Kit closes. Returning failure inside the launcher context previously let Kit exit 0; unsuccessful cycles now raise SystemExit(1) inside that context. Environment cleanup and success criteria are unchanged.

The lean follow-up removes 22 net lines across six files. The separately discovered exit-status fix adds four net lines including its changelog. No framework, source module or tests added. Existing launch metadata was aligned and the user-approved obsolete GL-only rejection check was removed. Current main is merged, including exporter #8769; no companion overlay is required.

Validation

Earlier paired startup measurements remain scoped to their recorded revisions: prepared-front GL first RGB changed from 42.7–43.8 s to 29.2–33.7 s on cached assets (9b6d304/83611cf, before/after/after/before). The compact-array CPU preparation scope changed from 3.75–3.77 s to 0.029–0.038 s (83611cf/dcf896d, fixed 135,314-position cloud, excluding sampling/native import/GPU/rendering). Shared triangulation removes duplication; it did not improve isolated CPU timing. These results do not guarantee startup below 30 seconds.

Matched coffee backdrop runs at 9b6d304 found modest differences: studio/kitchen first-RGB medians were GL 47.5/50.9 s, Kit 48.6/48.4 s, and OVRTX 46.9/50.4 s. With only two runs per scene, this does not establish a precise overhead; the kitchen was not the dominant startup cost.

Asset dependency and remaining limits

The prepared 30,464,855-byte front currently uses the development server requested for this change:

omniverse://isaac-dev.ov.nvidia.com/Isaac/IsaacLab/Environments/RizonSharpaRJ45/Environments/GB300/switch_front_c0ddcdf9d4ef.usdc

SHA-256: c0ddcdf9d4ef0845c6e30dc841ffb53d1edc3ebba4a64ab023cef8633c1b8c09. It is self-contained; provenance and bake source are beside it. Nucleus access is required until public promotion. HORDE uses a byte-identical mirror via the existing visual-root override; the actual URL was independently loaded and verified on the authenticated client.

RJ45 full-cycle reliability remains 9/10 at dcf896d, using fixed geometry and seeds 17–26. Seed 23 lost its grasp during final insertion (8.011 mm slip against the 8 mm guard); two successful instrumented runs had brief capture-flag drops. No controller, physics or success-threshold fix is claimed. Full coffee/teapot sequences were not run. The native RJ45 datacenter still emits an OmniPBR material-resolution warning; captured geometry/materials were usable.

@maxkra15

Copy link
Copy Markdown
Contributor Author

run-ci

@github-actions github-actions Bot added documentation Improvements or additions to documentation isaac-lab Related to Isaac Lab team labels Oct 22, 2026
@isaaclab-bot isaaclab-bot Bot added ci:run-docker Trigger the on-demand Docker and GPU CI workflow and removed ci:run-docker Trigger the on-demand Docker and GPU CI workflow labels Oct 22, 2026
@greptile-apps

greptile-apps Bot commented Oct 22, 2026 •

Copy link
Copy Markdown
Contributor

RetriggerView in GreptileConfidence Score: 5/5

[Medium impact] The PR appears safe to merge; no actionable defects were established.

Summary

This PR reduces presentation work when the Sharpa demos start.

  • Coffee starts with a studio in Newton GL and keeps the kitchen optional.
  • The teapot demo runs with Kit, Newton GL, OVRTX, or no visualizer.
  • RJ45 Newton GL shows the switch front and ports by default.
  • Teapot setup assigns its large lists after building the scene config.
  • Newton GL reuses file textures and can limit their upload size.

No actionable defects were established. maxkra15 explicitly documents that no new tests were added.

Diagram

%%{init: {'theme': 'neutral'}}%%
flowchart TD
  A[Choose visualizers and backdrop] --> B[Launcher resolves viewers and cameras]
  B --> C{Newton GL selected?}
  C -->|Yes| D[Import Newton visual meshes]
  C -->|No| E[Skip visual-only Newton meshes]
  D --> F[Build scene]
  E --> F
  F --> G[GL uploads model textures]
  F --> H[Kit and OVRTX read USD scene]
  G --> I[Reuse decoded textures during upload]
Loading

Reviews (1) · Last reviewed commit: "Reduce Sharpa demo scene startup costs" · Reviewed by Greptile

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

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.

Isaac Lab Review Bot

Needs attention: Style consistency (4). Other reviewed categories look good.

  • PR description: Add the omitted cable-color fix and reproducible base-versus-head coffee/RJ45 startup comparisons with revisions, command, environment count, hardware, backend, warmup, and metric.
  • Design and architecture: Architecture looks good.
  • Scope and over-engineering: No over-engineering issues.
  • API: API changes look good.
  • Compatibility and deprecation: No breaking changes identified.
  • Implementation: Implementation looks good.
  • Style consistency: Added backdrop documentation is inaccurate and duplicated; correct the robot-only room claim and consolidate the RJ45 default description.
  • Test quality: Test quality looks good.

Minor fixes needed. Posted 4 inline findings.

Automated review; human maintainers own approval decisions.

Comment thread examples/demos/teapot_fill.py Outdated
"--backdrop",
choices=["auto", "studio", "room"],
default="auto",
help="Backdrop: auto uses a simple studio for GL and the full room for Kit/RTX.",

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.

🟡 Warning · Style Consistency — Backdrop help overstates room contents

cfg.room is only added when --robot rizon_sharpa is set, so --backdrop room loads just the kitchen island by default. State that the enclosed room applies only to the robot variant.

```

Omitting `--viz` selects Newton GL. Add `--extra video` and `--video` to record a run.
The default `--backdrop auto` shows the detailed gold switch front and all RJ45

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.

🟡 Warning · Style Consistency — Duplicated backdrop prose in README

Lines 21-24 restate the Newton GL and Kit/RTX backdrop defaults already given above, and break the sentence mid-clause after "In GL,". Keep one statement of the defaults and reflow it.

self.gui._render_scalar_plots = lambda: None
self.register_ui_callback(self._render_training_controls, position="side")

def set_model(self, model: newton.Model | None) -> None:

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.

🟡 Warning · Style Consistency — New methods precede class properties

set_model and log_mesh sit between init and the camera_speed property, breaking the prescribed order of dunders, properties, then public instance methods. Move both below the property block.

"gravity": sim.cfg.gravity,
},
window_cfg=self.cfg.window,
texture_max_size=getattr(self.cfg.backend, "texture_max_size", None),

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.

🟡 Warning · Style Consistency — getattr default hides backend-only field

The guide forbids getattr defaults for known attributes; only NewtonGLBackendCfg declares texture_max_size, so this shared initializer hides the capability difference. Read it in the GL visualizer or declare it on both backends.

Clarify backdrop documentation and keep GL-only settings at the GL
initialization boundary. Move pixel resizing to the shared image owner
while preserving the decoded texture cache and pixel behavior.

Integrate upstream main at e4df255.
@maxkra15

Copy link
Copy Markdown
Contributor Author

run-ci

@isaaclab-bot isaaclab-bot Bot added ci:run-docker Trigger the on-demand Docker and GPU CI workflow and removed ci:run-docker Trigger the on-demand Docker and GPU CI workflow labels Oct 23, 2026
Integrate recorded upstream main while retaining source-owned coffee
floor visibility before cloning. Update the existing hard-reset check
to verify the configured texture limit reaches the replacement model.

Recorded upstream main: e907f82

This branch has not been deployed

No deployments
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

documentation Improvements or additions to documentation isaac-lab Related to Isaac Lab team

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant