Render the table in Franka cable golden images - #7524
Conversation
There was a problem hiding this comment.
Isaac Lab Review Bot
The shared Franka golden-rendering helper is correctly generalized for cable rendering while preserving task-specific table physics. One maintainability issue remains: the new parameter documentation incorrectly claims the helper disables the success visualizer, although that requires a separate post-construction call.
- Design and architecture: Routing cable setup through the shared helper and mutating the existing table spawn preserves the cable friction overrides while aligning cloth, soft, and cable golden-scene configuration. The separate post-construction success-visualizer hide is consistent with the visualizer lifecycle.
- API: No public API or task configuration contract changes. The private helper’s new keyword parameters preserve existing callers through defaults, but the
command_namedocstring inaccurately describes the behavior associated with that parameter and should distinguishdebug_vishandling from the separately hidden success visualizer. - Implementation: The helper reproduces the removed cable reset-range setup, makes the existing table visible without replacing its physics-bearing spawn configuration, and explicitly hides the cable success visualizer after environment construction. Reword the
command_namedocumentation to state that the helper disables goal/current debug visualization and that success-visualizer visibility is handled separately.
Minor fixes needed. Posted 1 actionable finding inline.
Automated review; human maintainers own approval decisions.
| Args: | ||
| env_cfg: Resolved Franka camera environment config to mutate in place. | ||
| data_types: Camera data types the golden capture requests. | ||
| command_name: Name of the pose command term whose success visualizer is disabled. |
There was a problem hiding this comment.
🔵 Suggestion · Implementation — Docstring misstates what debug_vis disables
The command_name argument doc says it names the term "whose success visualizer is disabled", but the helper only sets debug_vis = False, which suppresses the goal/current visualizers. The success visualizer must still be hidden separately after env construction (line 2505), and a reader trusting this docstring could omit that call and reintroduce the marker into new goldens. Reword to state that the goal/current debug visualizers are disabled and the success visualizer is hidden post-construction.
Greptile SummaryThe PR generalizes the deterministic Franka camera-test configuration so the cable test renders its actual table while preserving its task-specific friction settings.
Confidence Score: 5/5The PR appears safe to merge with no actionable correctness, security, or repository-rule issues identified. The helper targets valid command and reset-event terms, retains each table spawn’s existing physics configuration, and disables the success visualizer before any captured simulation step. Important Files Changed
Reviews (1): Last reviewed commit: "Render the table in Franka cable golden ..." | Re-trigger Greptile |
The Franka cable rendering test never made its table visible, so the Warp rasterizer goldens showed the robot and cable floating over the ground plane with no work surface. The table spawns with `visible=False` because the pose command's success visualizer normally draws it in its place, but the golden captures hide that visualizer to keep frames deterministic. Cloth and soft already compensate through `_configure_franka_camera_test_env_cfg`; cable did not use that helper because it names its command and reset event `cable_pose` and `reset_cable`. Generalize the helper with `command_name` and `reset_event_name` parameters and route the cable test through it, replacing the duplicated reset-range block and the separate scene-override call. Make the table visible by setting `visual_material` and `visible` on the existing spawn rather than replacing the spawn with the failure marker config. The marker is built from the base `TABLE_SPAWN_CFG` and carries no `physics_material`, so assigning it wholesale would discard the cable table's `static_friction=0.01, dynamic_friction=0.01` override and silently change the physics the goldens capture. The in-place update is byte-identical to the previous behavior for cloth and soft. Hide the cable success visualizer after env construction, matching cloth and soft. `ObjectUniformPoseCommand.__init__` makes it visible unconditionally and `debug_vis=False` only suppresses the goal and current visualizers, so a now-visible table would otherwise z-fight the marker and pick up its success-dependent color. Regenerate the 32 `franka_cable` goldens.
Hiding the cable pose command's success visualizer is not needed. All 32 franka_cable goldens reproduce unchanged without it, so the marker does not disturb the capture once the table itself is visible.
92795bc to
35d68a6
Compare
|
thanks for the PR, looks good to me. we probably do not need to re-baseline the ones that already has the table (for example: we don't need to re-baseline |
|
run-ci |
|
Backported to |
# Description The Franka cable rendering test never made its table visible, so the Warp rasterizer goldens showed the robot and cable floating over the ground plane with no work surface. The table spawns with `visible=False` because the pose command's success visualizer normally draws it in its place, but the golden captures hide that visualizer to keep frames deterministic. Cloth and soft already compensate through `_configure_franka_camera_test_env_cfg`, but cable did not use that helper because it names its command and reset event `cable_pose` and `reset_cable` rather than `deformable_pose` and `reset_deformable`. This PR: - Generalizes `_configure_franka_camera_test_env_cfg` with `command_name` and `reset_event_name` parameters and routes `rendering_test_franka_cable` through it, replacing the duplicated reset-range block and the separate `_apply_franka_camera_golden_scene_overrides` call. - Makes the table visible by setting `visual_material` and `visible` on the existing spawn instead of replacing the spawn with the failure marker config. The marker is built from the base `TABLE_SPAWN_CFG` and carries no `physics_material`, so assigning it wholesale would discard the cable table's `static_friction=0.01, dynamic_friction=0.01` override and silently change the physics the goldens capture. The in-place update is byte-identical to the previous behavior for cloth and soft. - Regenerates the 32 `franka_cable` golden images. The cable test deliberately does **not** hide the pose command's success visualizer, unlike cloth and soft. That marker turns out not to disturb the capture once the table itself is visible: all 32 goldens reproduce unchanged with and without hiding it. The cable table's friction override is preserved. Comparing the resolved config before and after the helper runs, only `visible` changes: | | `visible` | friction (static, dynamic) | | --- | --- | --- | | baseline (before this change) | `False` | `(0.01, 0.01)` | | after this change | `True` | `(0.01, 0.01)` | | wholesale marker copy (rejected approach) | `True` | `None` | Validation, each test id in its own process on an RTX 5090: - All 9 `franka_cable` ids covering `newton-isaacsim_rtx_renderer`, `newton-ovrtx_renderer` and `newton-newton_renderer` pass against the regenerated goldens. - Cloth and soft were re-run against their **unchanged** goldens to confirm the shared helper change is inert for them: `franka_cloth` kit-based RTX, `franka_cloth` kitless Warp and `franka_soft` kitless Warp all pass, and no cloth or soft golden files are modified. ## Type of change - Bug fix (non-breaking change which fixes an issue) ## Release backport - [x] <!-- backport-active-release --> Backport this pull request to the active release branch after it merges into `develop` ## Screenshots The before/after is visible directly in the diff for `source/isaaclab_tasks/test/golden_images/franka_cable/newton-newton_renderer-rgb.png`, which GitHub renders as an image diff. Previously that golden showed the robot and the blue cable over a bare ground plane, with the green and blue debug-vis axis markers drawn. It now shows the pink table under the cable, matching the corresponding `franka_cloth` golden, and the axis markers are gone because the shared helper sets `debug_vis=False`. The `isaacsim_rtx_renderer` and `ovrtx_renderer` goldens change only marginally, since the success visualizer marker was already standing in for the table in those views. ## Checklist - [x] I have read and understood the [contribution guidelines](https://isaac-sim.github.io/IsaacLab/main/source/refs/contributing.html) - [x] I have run the [`pre-commit` checks](https://pre-commit.com/) with `./isaaclab.sh --format` - [ ] I have made corresponding changes to the documentation - [x] My changes generate no new warnings - [x] I have added tests that prove my fix is effective or that my feature works - [x] I have added a changelog fragment under `source/<pkg>/changelog.d/` for every touched package (do **not** edit `CHANGELOG.rst` or bump `extension.toml` — CI handles that) - [x] I have added my name to the `CONTRIBUTORS.md` or my name already exists there (cherry picked from commit cac523f)
Description
The Franka cable rendering test never made its table visible, so the Warp rasterizer goldens showed the robot and cable floating over the ground plane with no work surface. The table spawns with
visible=Falsebecause the pose command's success visualizer normally draws it in its place, but the golden captures hide that visualizer to keep frames deterministic. Cloth and soft already compensate through_configure_franka_camera_test_env_cfg, but cable did not use that helper because it names its command and reset eventcable_poseandreset_cablerather thandeformable_poseandreset_deformable.This PR:
_configure_franka_camera_test_env_cfgwithcommand_nameandreset_event_nameparameters and routesrendering_test_franka_cablethrough it, replacing the duplicated reset-range block and the separate_apply_franka_camera_golden_scene_overridescall.visual_materialandvisibleon the existing spawn instead of replacing the spawn with the failure marker config. The marker is built from the baseTABLE_SPAWN_CFGand carries nophysics_material, so assigning it wholesale would discard the cable table'sstatic_friction=0.01, dynamic_friction=0.01override and silently change the physics the goldens capture. The in-place update is byte-identical to the previous behavior for cloth and soft.franka_cablegolden images.The cable test deliberately does not hide the pose command's success visualizer, unlike cloth and soft. That marker turns out not to disturb the capture once the table itself is visible: all 32 goldens reproduce unchanged with and without hiding it.
The cable table's friction override is preserved. Comparing the resolved config before and after the helper runs, only
visiblechanges:visibleFalse(0.01, 0.01)True(0.01, 0.01)TrueNoneValidation, each test id in its own process on an RTX 5090:
franka_cableids coveringnewton-isaacsim_rtx_renderer,newton-ovrtx_rendererandnewton-newton_rendererpass against the regenerated goldens.franka_clothkit-based RTX,franka_clothkitless Warp andfranka_softkitless Warp all pass, and no cloth or soft golden files are modified.Type of change
Release backport
developScreenshots
The before/after is visible directly in the diff for
source/isaaclab_tasks/test/golden_images/franka_cable/newton-newton_renderer-rgb.png, which GitHub renders as an image diff.Previously that golden showed the robot and the blue cable over a bare ground plane, with the green and blue debug-vis axis markers drawn. It now shows the pink table under the cable, matching the corresponding
franka_clothgolden, and the axis markers are gone because the shared helper setsdebug_vis=False.The
isaacsim_rtx_rendererandovrtx_renderergoldens change only marginally, since the success visualizer marker was already standing in for the table in those views.Checklist
pre-commitchecks with./isaaclab.sh --formatsource/<pkg>/changelog.d/for every touched package (do not editCHANGELOG.rstor bumpextension.toml— CI handles that)CONTRIBUTORS.mdor my name already exists there