Skip to content

[Bug Report] Newton FrameView fails for frames under an articulation root Xform (e.g. a camera at the robot prim) #8211

Closed

Description

@NeoZng

Describe the bug

On Newton, NewtonSiteFrameView attaches a frame to its nearest ancestor that has RigidBodyAPI or
ArticulationRootAPI (isaaclab_newton/sim/views/newton_site_frame_view.py, _resolve_source_prim). Many
official assets (Franka, UR10, Spot, Allegro, Shadow, Cartpole) put ArticulationRootAPI on the root Xform. That
Xform is not a Newton body, so any frame below it that is not also below a rigid body fails to resolve:

ValueError: FrameView '/World/envs/env_[^/]+/Robot/camera' body pattern '/World/envs/env_0/Robot' matched no Newton bodies.

Camera hits this directly. When prim_path is an ArticulationRootAPI prim, it spawns the camera at
<prim_path>/camera. The same happens for any camera or frame spawned at a new child of the robot prim. On
PhysX the same camera works, because the Fabric view reads the simulated transforms, and the OVPhysX view also
walks to the nearest RigidBodyAPI ancestor. The camera stays at the root Xform's pose, because that Xform is not
simulated.

Steps to reproduce

robot = SPOT_CFG.replace(prim_path="{ENV_REGEX_NS}/Robot")  # or FRANKA_PANDA_CFG
camera = CameraCfg(
    prim_path="{ENV_REGEX_NS}/Robot",
    spawn=sim_utils.PinholeCameraCfg(),
    width=64,
    height=64,
    data_types=["distance_to_camera"],
)
# InteractiveScene(num_envs=2) with SimulationCfg(physics=NewtonCfg(solver_cfg=MJWarpSolverCfg())), then sim.reset()
  • PhysX: the camera is created at Robot/camera. pos_w stays at the root Xform (+offset) while the root body moves.
  • Newton (RTX or Newton Warp renderer): sim.reset() raises the error above from Camera._initialize_impl.

{ENV_REGEX_NS}/Robot/cam_mount (a new non-body child) fails the same way. {ENV_REGEX_NS}/Robot/body/cam works
on both backends.

System Info

  • Commit: develop 3791c0f; also on release/3.0.0 (4d6241e)
  • Isaac Sim Version: 6.1.0-rc.26
  • Newton 1.6.0
  • OS: Ubuntu 24.04
  • GPU: RTX PRO 5000 Blackwell, driver 580.126.20

Additional context

This was introduced with the clone-plan-based Newton frame resolution (#5743). The same predicate is in the
Camera redirect, where it is needed, because the root prim itself cannot be the camera. In the ancestor walk it
is wrong, because ArticulationRootAPI does not make a prim a simulated body.

Checklist

  • I have checked that there is no similar issue in the repo (required)
  • I have checked that the issue is not in running Isaac Sim itself and is related to the repo

Acceptance Criteria

  • On Newton, a frame below a non-body ArticulationRootAPI prim and outside every rigid body resolves as a static per-environment frame, as on PhysX.
  • Frames below a rigid body still follow that body.

Activity

  1. added a commit that references this issue on Oct 7, 2026
    5e8a69a
  2. added a commit that references this issue on Oct 7, 2026
    b867fee
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions