ZED 2i Tearing on Nvidia AGX Orin

We recently ordered 4 ZED 2i cameras for use on our Autonomous Gokart project. However, when trying to capture images from any of them, there is significant tearing to the point that the images are not useable.

We tried using the ZED SDK, ZED_Explorer, and ROS2 Humbler on an Nvidia Jetson AGX Orin with 64 GB of RAM and observed the same results regardless of how the cameras were launched. We thought it might be due to USB bandwidth limitations, but made sure to split the connections of the 4 cameras across 2 USB buses and visualized the tree using “lsusb -t”. We are using the default cables and tearing occurs regardless of the resolution, even with VGA @ 15 FPS. We have tried using the docker containers provided by you as well as custom images but they all exhibit the same result even with cheese. ZED_Explorer and the ROS2 wrapper can open all the cameras or a single camera but regardless of the number of cameras launched, the tearing occurs. I tried attaching a video and screenshot but I can’t upload attachments since I’m a new user.

Here are our system details:
• Nvidia Jetson AGX Orin 64 GB RAM with M.2 NVMe SSD running Jetpack 5.1.2
• ZED SDK 4.0.8 (also tested with ZED SDK 4.1)
• CUDA 11.4 (also tested with 12.2)

Hi @privvyledge
Welcome to the Stereolabs community.

I replied to your email to support@stereolabs.com.
I’m sharing the same information here because it can be useful for other users.

The AGX Orin only provides a single USB3 channel, so we do not recommend using more than 2 USB3 cameras in the native configuration.
A USB3 hub does not add USB3 channels and bandwidth, it can make the situation worse because it splits a USB3 channel into sub-channels sharing the same bandwidth and power.

To use more than two cameras with an AGX Orin, you need to add a PCIe USB3 expansion card. The process is explained on this support page, which is still valid for the AGX Orin:

Thank you for your prompt response. I responded to the email but will repost here for the community.

  1. According to Nvidia’s documentation USB-C Specification - Jetson AGX Orin Development Kit Carrier Board - Jetson AGX Orin - NVIDIA Developer Forums and Log in | NVIDIA Developer, the Nvidia AGX Orin should have two USB controllers. One with the USB-C’s and another with the USB Type A’s.
  2. Also according to your documentation GitHub - stereolabs/zed-multi-camera: ZED SDK sample with multiple ZEDs, we should be able to run 4 ZEDs @ 30 FPS simultaneously in VGA mode but we can’t even run one in VGA mode when even after disconnecting the others.

There are two controllers:

  • One USB 3.2 controller with two internal hubs, so one USB3 channel that is split into sub-channels
  • One USB 2 controller that can drive only one ZED in VGA mode

The Jetson device does not provide enough power through USB to drive 4 ZED cameras simultaneously.

This guide provides the correct information to use multiple cameras with Jetson AGX devkits:

I am keeping this here as a solution for anyone with a similar setup in the future. We installed a StarTech PCIe USB Expansion Card and connected 2 cameras directly to the Jetson and 2 to the PCIe expansion card. There is no longer any tearing, and we are able to launch all 4 cameras with ROS. So, I will mark this issue as solved. Two new issues spawned from the multicamera setup, but I won’t put them here since they are separate issues (startup issue, CPU utilization).

1 Like