Hello NVIDIA Team,
We are experiencing an issue with ROS2 camera publishing in Isaac Sim 5.1.0 while developing a custom robot simulation.
Environment:
- Isaac Sim 5.1.0
- Ubuntu on AWS EC2
- NVIDIA L40S GPU
- ROS2 Humble
- Custom robot imported as USD
Issue:
We implemented the following camera pipeline:
OnPlaybackTick → ROS2Context → IsaacCreateRenderProduct → ROS2CameraHelper
The ROS2CameraHelper continuously reports:
[Warning] [isaacsim.ros2.bridge.ogn.python.nodes.OgnROS2CameraHelper] Render product not valid
The published /image_raw topic contains only zero-value pixels.
Diagnostics performed:
-
The render product itself is valid.
- Verified through Replicator Annotator API.
- Image shape: (480, 640, 4)
- Pixel range: 0-255
- Mean pixel value: ~63.7
-
Camera prim is valid and correctly positioned.
-
Node versions match Isaac Sim 5.1.0 templates:
- ROS2Context = typeVersion 2
- IsaacCreateRenderProduct = typeVersion 2
- ROS2CameraHelper = typeVersion 2
-
Graph was created both:
- Via og.Controller API
- Via native USD authoring
-
og.get_graph_by_path() correctly reports all graph nodes.
-
Timeline is confirmed running:
omni.timeline.get_timeline_interface().is_playing() == True
However:
- on_playback_tick.outputs:tick remains None
- create_render_product.outputs:renderProductPath remains None
- A differential-drive ROS2 graph in the same USD executes normally and publishes ROS2 topics successfully.
Question:
Is there any known limitation, initialization requirement, scheduler dependency, or special handling for OnPlaybackTick-driven OmniGraphs attached to payload-referenced custom robot USDs?
Could there be a difference between:
- Graphs authored in the original defining layer
- Graphs added later through overrides or ActionGraphs attached to referenced USDs
Any guidance on debugging this issue would be greatly appreciated.
I can provide:
- USD graph definition
- Diagnostic Python scripts
- Console logs
- Screenshots
- Reproduction steps
Thank you.