Skip to content

Render the table in Franka cable golden images - #7524

Merged
kellyguo11 merged 2 commits into
isaac-sim:developfrom
mmichelis:add/cable-camera-config
Sep 4, 2026
Merged

Render the table in Franka cable golden images#7524
kellyguo11 merged 2 commits into
isaac-sim:developfrom
mmichelis:add/cable-camera-config

Conversation

@mmichelis

@mmichelis mmichelis commented Sep 3, 2026

Copy link
Copy Markdown
Collaborator

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

  • 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

  • I have read and understood the contribution guidelines
  • I have run the pre-commit checks with ./isaaclab.sh --format
  • I have made corresponding changes to the documentation
  • My changes generate no new warnings
  • I have added tests that prove my fix is effective or that my feature works
  • 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)
  • I have added my name to the CONTRIBUTORS.md or my name already exists there

@mmichelis
mmichelis requested a review from a team September 3, 2026 07:57
@github-actions github-actions Bot added the isaac-lab Related to Isaac Lab team label Sep 3, 2026

@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

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_name docstring inaccurately describes the behavior associated with that parameter and should distinguish debug_vis handling 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_name documentation 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.

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.

🔵 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-apps

greptile-apps Bot commented Sep 3, 2026

Copy link
Copy Markdown
Contributor

Greptile Summary

The PR generalizes the deterministic Franka camera-test configuration so the cable test renders its actual table while preserving its task-specific friction settings.

  • Adds configurable command and reset-event names to the shared Franka rendering helper.
  • Reuses the helper for Franka cable and hides its success visualizer after environment construction.
  • Regenerates the affected Franka cable golden images across supported renderers and AOVs.

Confidence Score: 5/5

The 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

Filename Overview
source/isaaclab_tasks/test/rendering_test_utils.py Generalizes the Franka golden-scene helper, preserves existing spawn physics configuration, and applies the established visualizer-hiding flow to cable.
source/isaaclab_tasks/changelog.d/franka-cable-golden-table-visibility.skip Records that the rendering-test-only correction has no user-visible release-note impact.
source/isaaclab_tasks/test/golden_images/franka_cable/newton-newton_renderer-rgb.png Updates a representative cable golden image to include the now-visible table; the remaining changed golden files consistently refresh other renderers and AOVs.

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.
@mmichelis
mmichelis force-pushed the add/cable-camera-config branch from 92795bc to 35d68a6 Compare September 3, 2026 14:29
@nvsekkin

nvsekkin commented Sep 3, 2026

Copy link
Copy Markdown
Collaborator

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 source/isaaclab_tasks/test/golden_images/franka_cable/newton-isaacsim_rtx_renderer-simple_shading_full_mdl.png)

@kellyguo11

Copy link
Copy Markdown
Contributor

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 Sep 4, 2026
@kellyguo11
kellyguo11 merged commit cac523f into isaac-sim:develop Sep 4, 2026
53 checks passed
@isaaclab-bot

isaaclab-bot Bot commented Sep 4, 2026

Copy link
Copy Markdown
Contributor

Backported to release/3.0.0 as 85ad43c.

isaaclab-bot Bot pushed a commit that referenced this pull request Sep 4, 2026
# 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)
@mmichelis
mmichelis deleted the add/cable-camera-config branch September 4, 2026 12:30
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

isaac-lab Related to Isaac Lab team

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants