Skip to content

Feature Request: Enable early image publication in ROS for lower-latency downstream processing #419

Description

@Estivio

Preliminary Checks

  • This issue is not a duplicate. Before opening a new issue, please search existing issues.
  • This issue is not a question, bug report, or anything other than a feature request directly related to this project.

Proposal

Proposal:

Allow the ZED ROS2 wrapper to support a new mode or API where camera images are published to ROS topics immediately after capture, before depth estimation, object detection (OD), or other heavy post-processing steps, rather than waiting for results from those computations before publishing the image topic.

Specifically, provide a way to:

  • Publish image frames to ROS as soon as available from the camera (right after capture), without waiting for depth/AI module to finish in the current grab() pipeline.

This could be an enhancement in the wrapper or, if not feasible given current SDK limitations, a proposal to the SDK team for added support.

Use-Case

Use-case / Benefit:

Many downstream ROS applications (tracking, SLAM, visual odometry, time-sensitive robotics) benefit from low-latency access to camera images. Currently, the wrapper pipeline only signals for image publishing after depth/OD is complete in the SDK's blocking grab() function, meaning images may be delayed by compute-heavy steps. If images could be handed off to ROS subscribers immediately, overall system responsiveness and parallel processing would be improved—downstream nodes can start work using images before depth and object detection arrive. This is also better for time sync and precise sensor fusion setups.

Summary:

  • Lower latency and jitter for image topics
  • Better support for time-critical, real-time, or multi-threaded downstream ROS applications
  • Flexibility in how post-processing modules operate relative to image acquisition

Anything else?

Note:

As far as I can tell from both wrapper and SDK docs, this is primarily a limitation at the ZED SDK level? The SDK's grab() call runs all enabled modules synchronously, with image/depth/OD/bodies populated atomically.

EDIT: I am such a moron, I thought the SDK was closed-source. I just found the repo and I think it should be possible🤦🏼‍♂️ I will fork and see if I can make this work for me.

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Fields

    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions