Latency ZED X Mini / GSML2

Hi together,

what are the current latencies for using your GSML2 cameras, especially ZED X mini? (in combination with 1) Your capture cards or 2) ZED Box mini directly

I read you had some problems with that one year ago - are these issues fixed? Is the GSML Standard in general lower in latency than the USB devices?

Thanks

Erik

Hi Eric,

Thank you for reaching out with your questions.

Regarding latency, the issue has been resolved, and we now achieve a latency of 1–2 frames.
I wouldn’t say that the full GMSL2 stack is significantly lower in latency compared to USB 3.0, especially at high throughput. The difference is around ~10 ms in total. However, GMSL2 offers much more stable latency, particularly on embedded devices. With GMSL2, latency remains consistent, whereas USB 3.0 performance depends heavily on the host/driver and the number of connected cameras.

Best,
Rodolphe

Stereolabs Support

Hi Rudolphe, thanks for clarifying. By saying “the difference is around 10ms” - what exactly do you mean? Do you mean the overall GSML2 latency is about consistently 10ms (for example in a ZED X mini - ZED Box Mini -GSML 2 usecase?) Or do I mix something up? Thanks, Erik

Hi Erik,

What I meant is that the overall latency difference between a full GMSL2 pipeline and a USB 3.0 pipeline is roughly around 10 ms. GMSL2 should indeed be a bit lower in latency compared to USB 3.0, but its main advantage is to be much more stable compared to USB 3.0.

Rodolphe

Stereolabs Support

1 Like

Sounds good to me and I now understand what you mean.

Just to clarify my usecase: I want to use the Positional Tracking Module in combination with GSML2 with ZED X Mini and ZED Box Mini. How can I get the smallest delay between system timestamp and real-world position capture time in combination with the most precise position/orientation estimate. What “best practice” in the camera settings should I choose (FPS/resolution setting)? Do you have any recommendation for me? I hope this still fits into the topic. Thanks, Erik

For your use case, we recommend maximizing the camera frame rate while using Positional Tracking in GEN3 mode. In practice, this means:

  • HD1200 at 60 FPS for a good balance of resolution and latency, or
  • SVGA at 120 FPS if minimizing delay is the top priority.

There shouldn’t be a difference between both choices in terms of position/orientation accuracy.

Stereolabs Support

Thanks for clarifying!

Hi together, regarding this topic I would have a follow-up question on ZED X Mini / GSML Latency. Do you see any difference in running your positional tracking module directly in the C++ compiled version or in the Python runned version? Does this make any difference (in timestamp & 6 DOF position/orientation acquisition)? As far as I understand, the python just accesses the C++ compiled files if explained in simple words, but maybe you could clarify! Thanks, Erik

Hi @Wikingererik2001,

That is correct – the Python wrapper calls the C++ ZED SDK’s methods using Cython bindings.

In our benchmarks, we’ve made sure to test and validate the performance of the Python wrapper as well, so there should be no difference in performance between the two. In terms of acquisition and retrieval of data, this is the same than the C++ API.

Hi, I’m experiencing higher latency on GMSL2 (Zed X and Zed X Mini) compared to USB3 (Zed 2i). I’m seeing almost equivalent performance to Zed X / GMSL2 Latency

I’m running on a Jetson Orin AGX 64 GB Dev Kit. It has Ubuntu 20.04, SDK v 5.0.7, and firmware v2001. When were these latency issues fixed? Is there anything specific I can look for to help debug the issue?

Hi @sandeep,

Could you please share how you are measuring latency in both cases, and which modules of the SDK you are using?

Hi @mattrouss ,

I open a millisecond timer on my monitor (Samsung S50GC, 100Hz refresh rate, 5ms response time) and display the Zed Explorer next to it, then take a screenshot. I’ve done this test with the Zed X, Zed X Mini, and Zed 2i cameras each being the only cameras plugged into the Jetson (Orin AGX 64 GB Dev Kit running at MAXN performance mode using the Quad Capture Card). The Jetson has no other code running on it, and was configured per the Quad Capture Card instructions. It is running Ubuntu 20.04, SDK v 5.0.7.

I’ve used a variety of resolutions and fps, but I see from other forum posts that SVGA and 120fps should achieve the lowest latency, but I see 80-90ms with this configuration. I see 110-130ms with HD1200/60fps. The Zed 2i using USB3 is able to get 60ms at HD720/60fps.

I’ve also done this test using a custom script, grabbing only the left frame with all features turned off, then displaying it via OpenCV. This has the same latency. Finally, testing using gstreamer, with both zedsrc and nvarguscamerasrc as inputs (command at the bottom), seems to add 10-20ms to the testing time.

Thanks,

Sandeep

Zedsrc: gst-launch-1.0 -e zedsrc camera-sn=XXXXX stream-type=0 camera-resolution=4 camera-fps=120 depth-mode=0 bt-body-fitting=false bt-body-tracking=false enable-area-memory=false enable-imu-fusion=false enable-pose-smoothing=false od-enable-tracking=false ! nv3dsink sync=false

Hi @sandeep,

Thank you for sharing these details, we are reproducing the same setup internally to investigate this further, will get back to you as soon as I have more information