Skip to content

OnPlaybackTick-driven ROS2 camera OmniGraph added as over on payload-referenced robot stops publishing after 1-2 frames (render product/data valid, ROS2CameraHelper output stalls) #703

Description

@nimra-pixel

Description

Summary

Following up on a previously closed forum thread: Isaac Sim 5.1.0 - ROS2CameraHelper reports "Render product not valid" despite valid render product and image data

We've since narrowed the issue significantly with additional diagnostics and believe we've isolated the actual distinguishing factor, which was an open question in that thread.

Environment

  • Isaac Sim 5.1.0
  • Ubuntu on AWS EC2, NVIDIA L40S GPU
  • ROS2 Humble (in Docker, --network host)
  • Custom robot (Nova Carter) referenced via payload in a City Massing demo environment

Pipeline

OnPlaybackTick → ROS2Context → IsaacCreateRenderProduct → ROS2CameraHelper (×2: depth, semantic_segmentation)

authored as a USD over override on Nova_Carter_ROS, a prim composed from an external payload (World_CityMassingDemopack_custom1.usd).

The key distinguishing factor we've isolated

Every pre-existing camera graph on this same robot (front_hawk, back_hawk, left_hawk, right_hawk stereo pairs) publishes continuously and correctly. These graphs are authored directly in the payload's own defining USD layer.

Our new graph, added identically in structure and node types/versions, but authored as an over override on top of the already-composed payload (not in the defining layer), publishes only 1-2 frames after Play, then goes silent — no further errors, no further data, indefinitely, while the native graphs on the same robot keep running at full rate.

Diagnostics performed

  1. DDS/transport layer — ruled out. Initially all topics (including pre-existing, previously-working ones) went completely silent after an EC2 instance stop/start. Root cause: AWS VPC blocks UDP multicast, which both rmw_fastrtps_cpp and default rmw_cyclonedds_cpp discovery rely on. Fixed with:
   <CycloneDDS><Domain><General><AllowMulticast>false</AllowMulticast></General><Discovery><Peers><Peer address="localhost"/></Peers></Discovery></Domain></CycloneDDS>

forcing unicast discovery to localhost (both processes on the same host, --network host). This fully restored the pre-existing camera/lidar/imu topics to sustained, correct rates. Our new graph's topics were unaffected by this fix — still only 1-2 frames.

  1. Node attribute values — verified via og.Controller.attribute(...).get() (not raw prim.GetAttributes(), which incorrectly shows None for connection-driven inputs):

    • gpr_render_product.inputs:cameraPrim → correctly resolves to the target camera
    • gpr_render_product.outputs:renderProductPath → valid, distinct path (e.g. /Render/OmniverseKit/HydraTextures/Replicator_02), confirmed via UsdRender.Product inspection: resolution=(640,480), camera relationship target correct
    • ROS2CameraHelper.inputs:context/renderProductPath/nodeNamespace/topicName/type → all correctly resolved on both depth and segmentation helpers
  2. QoS profile — found empty ("") on our nodes vs. a full profile JSON on the working reference nodes; authored a matching QoS profile. No change in behavior.

  3. Execution wiring — hypothesized ROS2CameraHelper.inputs:execIn chained through IsaacCreateRenderProduct.outputs:execOut (rather than directly from OnPlaybackTick) might only pulse once. Rewired both helpers' execIn directly to OnPlaybackTick.outputs:tick in parallel via og.Controller.connect(). No change in behavior.

  4. Render product resource limits — this robot has ~10 concurrent render products (4 stereo pairs + LiDAR + viewport). Disabled an existing camera (back_hawk) to free a slot; no change in our graph's behavior. GPU memory was not under pressure (5GB/40GB used).

  5. Type mismatches — found and fixed inputs:height/inputs:width on IsaacCreateRenderProduct incorrectly typed uint64 instead of schema-required uint. Fixed; eliminated load-time errors, no effect on the runtime stalling behavior.

Question

Is there a known difference in how OnPlaybackTick-driven OmniGraphs are scheduled/re-evaluated when:

  • authored in a payload's defining layer, vs.
  • added afterward as an over override on the already-composed prim

We can provide the full .usda scene, diagnostic scripts, and Console logs on request.

Isaac Sim version

5.1.0

Operating System (OS)

Ubuntu 22.04

GPU Name

NVIDIA L40S

GPU Driver and CUDA versions

nvidia-smi

Logs

No response

Additional information

Full .usda scene, gpr_camera_node.py, and step-by-step reproduction session available on request.

Metadata

Metadata

Assignees

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions