Repository navigation
Conversation
|
run-ci |
[Medium impact] The PR appears safe to merge; no actionable defects were established. SummaryThis PR reduces presentation work when the Sharpa demos start.
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]
Reviews (1) · Last reviewed commit: "Reduce Sharpa demo scene startup costs" · Reviewed by Greptile |
There was a problem hiding this comment.
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.
| "--backdrop", | ||
| choices=["auto", "studio", "room"], | ||
| default="auto", | ||
| help="Backdrop: auto uses a simple studio for GL and the full room for Kit/RTX.", |
There was a problem hiding this comment.
🟡 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 |
There was a problem hiding this comment.
🟡 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: |
There was a problem hiding this comment.
🟡 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), |
There was a problem hiding this comment.
🟡 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.
|
run-ci |
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
AntoineRichard
left a comment
There was a problem hiding this comment.
Highlevel feedback. I'm confused by the texture size limitter. Othersize it looks reasonable.
| def resize_image(image: np.ndarray, max_size: int) -> np.ndarray: | ||
| """Downsample an image with Lanczos filtering while preserving its aspect ratio. | ||
|
|
||
| Args: | ||
| image: Uint8 RGB or RGBA pixels, shape ``(H, W, C)``. The input is not modified. | ||
| max_size: Positive integer limiting both output dimensions [px]. The caller validates | ||
| this limit before processing images. | ||
|
|
||
| Returns: | ||
| A resized pixel array, or ``image`` itself when both dimensions already fit. | ||
| Images are never enlarged; resized dimensions follow Pillow's thumbnail rounding. | ||
| """ | ||
| if max(image.shape[:2]) <= max_size: | ||
| return image | ||
| resized = Image.fromarray(image) | ||
| resized.thumbnail((max_size, max_size), Image.Resampling.LANCZOS) | ||
| return np.array(resized) |
There was a problem hiding this comment.
KInd of weird to have this utility here since it's not GPU capable? If it's only used to resize a texture, can we move it where its used?
| if path not in self._model_texture_cache: | ||
| image = load_texture(texture) | ||
| if image is not None and self._texture_max_size is not None: | ||
| image = resize_image(image, self._texture_max_size) |
There was a problem hiding this comment.
Why not use a lower resolution texture? I'm not convinced by this hack here.
There was a problem hiding this comment.
Not convinced by the texture max size. Why not use a lower resolution texture to start with?
Integrate upstream main d78054a to retain compatibility with current backend ownership and dependencies.
Integrate upstream main at ce2900d to keep the branch current with shared API and dependency changes. Validate the merged revision with focused checks and full formatting and lint hooks before committing. Remote CI remains separate.
Integrate upstream main at 6d37745 to keep the branch current with shared API and dependency changes. Validate the merged revision with focused checks and all repository formatting and lint hooks. Remote CI remains separate.
Sharpa startup built large nested Python payloads and imported visual geometry that native USD renderers did not use. Keep those payloads compact and load prepared visuals through the public asset root. The RJ45 follow-up improves middle-finger support during seating and stabilizes latch retention after release.
--backdrop datacenterretains the full rack; Kit/OVRTX retain their native scenery.Scope against main: 14 files, +89/-54 lines. The switch front (30.5 MB) and texture layer/maps (3.04 MB) are public in the Isaac Sim 6.2 asset bundle. The changes use existing APIs and demo preparation paths.
Validation
Main
9860e2bd8, Newton42f7def1, RTX PRO 6000 Blackwell GPU. Final configuration at140262844:newton_rtx) seed 17. Each completed insertion, release, regrasp and 59.8–59.9 mm withdrawal. Results use the demo's reported success and finite-state checks, not process exit alone.da243da4e: all 11 supported bounded startup/render launches and the strict Sphinx build passed. Dry coffee delivered 1.242 g; wet coffee delivered 1.244 g with 1.274 g dissolved; teapot completed its 18 s pickup/pour/recovery sequence.The final native runs used the exact committed environment configuration. Controller guards, gains, friction and success thresholds are unchanged. Two rigid substeps add rigid-solver work; the cable and outer collision rates remain unchanged. Shared-GPU wall times are not a performance comparison.
Remaining limits
Five full cycles establish the tested cases, not broad reliability across seeds or hardware. Existing Newton GL arm UDIM texture-resolution warnings also occur on unmodified main; inspected frames remain usable. CI for the final commit is running separately from the completed local/native checks above.