Jump to content

SIPL Stereo Monitor Example

From RidgeRun Developer Wiki

🚧 Documentation is under development

The Holoscan SDK guide is currently under active development. Some sections may be incomplete or change without notice.

Questions? Contact RidgeRun or email to support@ridgerun.com.

Contents Pin





SIPL Stereo Monitor Example

Observe two SIPL capture streams from one stereo rig. The application reports per-camera frame counts, pairs matching sequence identifiers, displays the latest timestamp difference, and stops when both streams reach the requested count or a watchdog condition occurs.

The example checks capture timing signals without rendering or saving pixels. The SIPLCaptureOp page explains the operator setup first. Use a supported stereo camera rig with its matching platform configuration.


Prerequisites
Complete Holoscan Camera Build and Installation with the SIPL components enabled. Use a supported stereo camera rig and matching JSON, sensor, driver, and BSP resources.


What you will learn

  • How two capture operators share one SIPL service.
  • How matching sequence identifiers are paired for display.
  • How startup, stall, and overall timeouts affect the result.
  • Why a small displayed skew does not prove physical synchronization.

Build and run

Use the shared Holoscan Camera build page for configuration and installation. Then run the application on the target:

./holoscan_camera run sipl_stereo_monitor --language cpp \
    --run-args '--camera-config VB1940 --json-config /workspace/holoscan_camera/applications/config/sipl/vb1940_stereo.json --frames 500 --stall-timeout-s 5 --startup-timeout-s 15 --overall-timeout-s 120'

The JSON path and camera configuration must describe the connected stereo rig.

Follow the workflow

Operators used

Operator Role in this example
SIPLCaptureOp (two instances) Captures the two image and sensor-data streams from the stereo rig.
FrameSinkOp (two instances) Tracks frame counts, sequence identifiers, and capture timestamps for each camera.
MetadataSinkOp (two instances) Receives sensor metadata so the capture outputs remain connected and observable.

Each capture operator sends image data and sensor metadata into the monitor. The application keeps unmatched sequence identifiers for each camera. When the same identifier arrives on both streams, it displays the difference between camera 1 and camera 0 capture timestamps.

The watchdog uses host steady time for these conditions:

Condition Reported result
Both frame targets reached Reason reports the target was reached; return code 0.
No first frame or later stall Reason begins with STALL:; return code 1.
Overall timeout Reason reports the overall timeout; the run may have incomplete counts.
Missing required JSON or graph failure The application exits before a valid observation period.

The monitor does not validate pixel contents, perform stereo reconstruction, or apply a skew threshold. Missing or invalid capture timestamps can produce an unhelpful zero difference, so read the counts, pairing output, timing availability, and stop reason together.

Expected result

A useful run shows both camera counts increasing, paired sequence identifiers, and timestamp differences for those pairs. Treat a stall message, incomplete counts, or missing timing values as an observation to investigate. A zero return code after an overall timeout does not by itself mean that the requested frame target was reached.


Related examples and concepts

Examples

Concepts

Source The complete application is in the SIPL Stereo Monitor example. The application source contains pairing, watchdog, and result handling.

Official documentation

NVIDIA Holoscan SDK official documentation provides the current camera and application reference.


Cookies help us deliver our services. By using our services, you agree to our use of cookies.