Zed2i camera issues with starting in docker container, ROS2 Jazzy

I am starting my Zed2 ROS2 wrapper in a docker container with the ZED SDK, Cuda support etc. It has all worked before, but I seem to get issues sometimes when starting the camera now. When setting debug_common: true I can see when frames are grabbed, and then usually I also get all ros2 topics. Currently, when launching the zed2 ros2 container, the images are not grabbed. I don’t get any error or log that seems to give me an indication of what could be wrong.

Now, to check if it is something with how I build my container, I tried the Dockerfile from the GitHub. I built this docker image: zed_ros2_desktop_u22.04_sdk_5.0.7_cuda_12.8.0

There, I have different logs, they look like this:

~/ros2_ws# ros2 launch zed_wrapper zed_camera.launch.py camera_model:=zed2i
[INFO] [launch]: Default logging verbosity is set to INFO
[INFO] [launch.user]: Using common configuration file: /root/ros2_ws/install/zed_wrapper/share/zed_wrapper/config/common_stereo.yaml
[INFO] [launch.user]: Using camera configuration file: /root/ros2_ws/install/zed_wrapper/share/zed_wrapper/config/zed2i.yaml
[INFO] [launch.user]: Using FFMPEG configuration file: /root/ros2_ws/install/zed_wrapper/share/zed_wrapper/config/ffmpeg.yaml
[INFO] [launch.user]: Using Object Detection configuration file: /root/ros2_ws/install/zed_wrapper/share/zed_wrapper/config/object_detection.yaml
[INFO] [launch.user]: Using Custom Object Detection configuration file: /root/ros2_ws/install/zed_wrapper/share/zed_wrapper/config/custom_object_detection.yaml
[INFO] [launch.user]: Loading ZED node zed_node in container /zed/zed_container
sequence size exceeds remaining buffer
sequence size exceeds remaining buffer
sequence size exceeds remaining buffer
sequence size exceeds remaining buffer
sequence size exceeds remaining buffer
sequence size exceeds remaining buffer
sequence size exceeds remaining buffer
sequence size exceeds remaining buffer
sequence size exceeds remaining buffer
sequence size exceeds remaining buffer
sequence size exceeds remaining buffer
[INFO] [robot_state_publisher-1]: process started with pid [111474]
[INFO] [component_container_isolated-2]: process started with pid [111476]
[robot_state_publisher-1] [INFO] [1761918419.554875038] [zed.zed_state_publisher]: got segment zed_camera_center
[robot_state_publisher-1] [INFO] [1761918419.555120983] [zed.zed_state_publisher]: got segment zed_camera_link
[robot_state_publisher-1] [INFO] [1761918419.555132034] [zed.zed_state_publisher]: got segment zed_left_camera_frame
[robot_state_publisher-1] [INFO] [1761918419.555137815] [zed.zed_state_publisher]: got segment zed_left_camera_optical_frame
[robot_state_publisher-1] [INFO] [1761918419.555142434] [zed.zed_state_publisher]: got segment zed_right_camera_frame
[robot_state_publisher-1] [INFO] [1761918419.555146942] [zed.zed_state_publisher]: got segment zed_right_camera_optical_frame
[component_container_isolated-2] sequence size exceeds remaining buffer
[component_container_isolated-2] sequence size exceeds remaining buffer
[component_container_isolated-2] sequence size exceeds remaining buffer
[robot_state_publisher-1] sequence size exceeds remaining buffer
[robot_state_publisher-1] sequence size exceeds remaining buffer
[robot_state_publisher-1] sequence size exceeds remaining buffer
[robot_state_publisher-1] sequence size exceeds remaining buffer
[robot_state_publisher-1] sequence size exceeds remaining buffer

Are there any things I could look out for when the camera is not starting?

Here is the log when starting my own container:
zed_camera_container | [INFO] [launch]: Default logging verbosity is set to INFO
zed_camera_container | [INFO] [launch.user]: Using common configuration file: /ros2_ws/install/zed_wrapper/share/zed_wrapper/config/common_stereo.yaml
zed_camera_container | [INFO] [launch.user]: Using camera configuration file: /ros2_ws/install/zed_wrapper/share/zed_wrapper/config/zed2i.yaml
zed_camera_container | [INFO] [launch.user]: Using FFMPEG configuration file: /ros2_ws/install/zed_wrapper/share/zed_wrapper/config/ffmpeg.yaml
zed_camera_container | [INFO] [launch.user]: Loading ZED node zed_node in container /zed/zed_container
zed_camera_container | [INFO] [robot_state_publisher-1]: process started with pid [53]
zed_camera_container | [INFO] [component_container_isolated-2]: process started with pid [54]
zed_camera_container | [robot_state_publisher-1] [INFO] [1761844255.203382714] [zed.zed_state_publisher]: Robot initialized
zed_camera_container | [component_container_isolated-2] [INFO] [1761844255.435933920] [zed.zed_container]: Load Library: /ros2_ws/install/zed_components/lib/libzed_camera_component.so
zed_camera_container | [component_container_isolated-2] [INFO] [1761844255.452673022] [zed.zed_container]: Found class: rclcpp_components::NodeFactoryTemplate<stereolabs::ZedCamera>
zed_camera_container | [component_container_isolated-2] [INFO] [1761844255.452714840] [zed.zed_container]: Instantiate class: rclcpp_components::NodeFactoryTemplate<stereolabs::ZedCamera>
zed_camera_container | [component_container_isolated-2] [INFO] [1761844255.688614476] [zed.zed_node]: ********************************
zed_camera_container | [component_container_isolated-2] [INFO] [1761844255.688638531] [zed.zed_node]: ZED Camera Component
zed_camera_container | [INFO] [launch_ros.actions.load_composable_nodes]: Loaded node ‘/zed/zed_node’ in container ‘/zed/zed_container’
zed_camera_container | [component_container_isolated-2] [INFO] [1761844255.688642949] [zed.zed_node]: ********************************
zed_camera_container | [component_container_isolated-2] [INFO] [1761844255.688647588] [zed.zed_node]: * namespace: /zed
zed_camera_container | [component_container_isolated-2] [INFO] [1761844255.688651495] [zed.zed_node]: * node name: zed_node
zed_camera_container | [component_container_isolated-2] [INFO] [1761844255.688654451] [zed.zed_node]: ********************************
zed_camera_container | [component_container_isolated-2] [INFO]

...

zed_camera_container | [component_container_isolated-2] [INFO] [1761844255.760340659] [zed.zed_node]: ***** STARTING CAMERA *****
zed_camera_container | [component_container_isolated-2] [INFO] [1761844255.890647436] [zed.zed_node]: ZED SDK Version: 5.0.7 - Build 104550_3395de9d
zed_camera_container | [component_container_isolated-2] [INFO] [1761844255.893709756] [zed.zed_node]: *** CAMERA OPENING ***
zed_camera_container | [component_container_isolated-2] [2025-10-30 17:10:56 UTC][ZED][INFO] Logging level INFO
zed_camera_container | [component_container_isolated-2] [2025-10-30 17:10:56 UTC][ZED][INFO] [Init] Depth mode: NEURAL LIGHT
zed_camera_container | [component_container_isolated-2] [2025-10-30 17:10:57 UTC][ZED][INFO] [Init] Camera successfully opened.
zed_camera_container | [component_container_isolated-2] [2025-10-30 17:10:57 UTC][ZED][INFO] [Init] Camera FW version: 1523
zed_camera_container | [component_container_isolated-2] [2025-10-30 17:10:57 UTC][ZED][INFO] [Init] Video mode: HD720@30
zed_camera_container | [component_container_isolated-2] [2025-10-30 17:10:57 UTC][ZED][INFO] [Init] Serial Number: S/N 37925192
zed_camera_container | [component_container_isolated-2] [DEBUG] [1761844258.285886464] [zed.zed_node]: Opening successfull
zed_camera_container | [component_container_isolated-2] [INFO] [1761844258.285934635] [zed.zed_node]: ZED SDK running on GPU #0
zed_camera_container | [component_container_isolated-2] [INFO] [1761844258.285944363] [zed.zed_node]: * Camera Model → ZED 2i
zed_camera_container | [component_container_isolated-2] [INFO] [1761844258.285948541] [zed.zed_node]: * Serial Number → 37925192
zed_camera_container | [component_container_isolated-2] [DEBUG] [1761844258.285970112] [zed.zed_node]: *** Update Diagnostic ***
zed_camera_container | [component_container_isolated-2] [INFO] [1761844258.286023222] [zed.zed_node]: * Focal Lenght → 2.12736 mm
zed_camera_container | [component_container_isolated-2] [INFO] [1761844258.286039302] [zed.zed_node]: * Input → USB
zed_camera_container | [component_container_isolated-2] [INFO] [1761844258.286045133] [zed.zed_node]: * Camera FW Version → 1523
zed_camera_container | [component_container_isolated-2] [INFO] [1761844258.286049271] [zed.zed_node]: * Sensors FW Version → 777
zed_camera_container | [component_container_isolated-2] [INFO] [1761844258.286060151] [zed.zed_node]: * Camera grab size → 1280x720
zed_camera_container | [component_container_isolated-2] [INFO] [1761844258.286065121] [zed.zed_node]: * Color/Depth publishing size → 640x360
zed_camera_container | [component_container_isolated-2] [INFO] [1761844258.286070982] [zed.zed_node]: * Point Cloud publishing size → 448x256

zed_camera_container | [component_container_isolated-2] [INFO] [1761844258.562224636] [zed.zed_node]: Camera-IMU Translation:
zed_camera_container | [component_container_isolated-2] -0.002 -0.023061 0.000217
zed_camera_container | [component_container_isolated-2] [INFO] [1761844258.562254142] [zed.zed_node]: Camera-IMU Rotation:
zed_camera_container | [component_container_isolated-2] 7D53917F6300
zed_camera_container | [component_container_isolated-2] 0.999992 -0.003872 -0.000344
zed_camera_container | [component_container_isolated-2] 0.003872 0.999992 0.000354
zed_camera_container | [component_container_isolated-2] 0.000343 -0.000355 1.000000
zed_camera_container | [component_container_isolated-2]
zed_camera_container | [component_container_isolated-2] [INFO] [1761844258.562264762] [zed.zed_node]: *** Subscribers ***
zed_camera_container | [component_container_isolated-2] [INFO] [1761844258.563255859] [zed.zed_node]: * Plane detection: ‘/clicked_point’
zed_camera_container | [component_container_isolated-2] [DEBUG] [1761844258.710839510] [zed.zed_node]: Point Cloud thread started
zed_camera_container | [component_container_isolated-2] [DEBUG] [1761844258.710859548] [zed.zed_node]: Grab thread started
zed_camera_container | [component_container_isolated-2] [DEBUG] [1761844258.711098047] [zed.zed_node]: Depth extraction enabled
zed_camera_container | [component_container_isolated-2] [DEBUG] [1761844258.712848556] [zed.zed_node]: *** Update Diagnostic ***
zed_camera_container | [component_container_isolated-2] [DEBUG] [1761844258.714491872] [zed.zed_node]: New setting for AEC / AGC: 1
zed_camera_container | [component_container_isolated-2] [DEBUG] [1761844258.714759427] [zed.zed_node]: New setting for WHITEBALANCE AUTO: 1
zed_camera_container | [component_container_isolated-2] [WARN] [1761844258.714884632] [zed.zed_node]: POSITIONAL TRACKING disabled in the parameters, but forced to ENABLE because required by pos_tracking.publish_tf: true
zed_camera_container | [component_container_isolated-2] [INFO] [1761844258.714920861] [zed.zed_node]: *** Starting Positional Tracking ***
zed_camera_container | [component_container_isolated-2] [INFO] [1761844258.714928215] [zed.zed_node]: * Waiting for valid static transformations…
zed_camera_container | [component_container_isolated-2] [DEBUG] [1761844259.689898213] [zed.zed_node]: *** Update Diagnostic ***
zed_camera_container | [component_container_isolated-2] [INFO] [1761844259.723204822] [zed.zed_node]: Static transform ref. CMOS Sensor to Camera Center [zed_left_camera_frame → zed_camera_center]
zed_camera_container | [component_container_isolated-2] [INFO] [1761844259.723273942] [zed.zed_node]: * Translation: {0.010,-0.060,0.000}
zed_camera_container | [component_container_isolated-2] [INFO] [1761844259.723284813] [zed.zed_node]: * Rotation: {0.000,-0.000,0.000}
zed_camera_container | [component_container_isolated-2] [DEBUG] [1761844308.739183320] [zed.zed_node]: *** Update Diagnostic ***

Please follow the instructions in this section of the documentation:

I’m currently rebuilding the Docker setup, although the DDS tuning is already implemented in my ROS2 Jazzy container. The same container runs perfectly fine on my workstation, but I’m encountering problems when deploying it on the robot.

On the robot, one of the cameras is mounted and connected via a USB extension cable, which then plugs directly into the mainboard of the onboard PC. When checking the connection using lsusb -t, it correctly reports a USB 3.0 connection (5000M).

However, despite the USB 3.0 link, the camera exhibits issues only on the robot setup.
Has anyone experienced similar problems with ZED2i cameras when using USB extension cables?

If so, would switching to a ZED X camera be a more reliable solution for this kind of setup?

Thanks in advance for any insights!

I have tested with a short cable and a long cable now, but also with the short cable I have the problem, that the ros2 node gets stuck at start up, here:

zed_camera_container | [component_container_isolated-2] [INFO] [1762191737.004544684] [zed.zed_node]: *** Subscribers ***
zed_camera_container | [component_container_isolated-2] [INFO] [1762191737.005313433] [zed.zed_node]: * Plane detection: ‘/clicked_point’
zed_camera_container | [component_container_isolated-2] [DEBUG] [1762191737.089728212] [zed.zed_node]: Grab thread started
zed_camera_container | [component_container_isolated-2] [DEBUG] [1762191737.089910696] [zed.zed_node]: Depth extraction enabled
zed_camera_container | [component_container_isolated-2] [DEBUG] [1762191737.090632506] [zed.zed_node]: *** Update Diagnostic ***
zed_camera_container | [component_container_isolated-2] [INFO] [1762191737.188641665] [zed.zed_node]: *** Starting Positional Tracking ***
zed_camera_container | [component_container_isolated-2] [INFO] [1762191737.188670970] [zed.zed_node]: * Waiting for valid static transformations…
zed_camera_container | [component_container_isolated-2] [DEBUG] [1762191737.812034972] [zed.zed_node]: *** Update Diagnostic ***
zed_camera_container | [component_container_isolated-2] [INFO] [1762191738.208767244] [zed.zed_node]: Static transform ref. CMOS Sensor to Camera Center [zed_left_camera_frame → zed_camera_center]
zed_camera_container | [component_container_isolated-2] [INFO] [1762191738.208803032] [zed.zed_node]: * Translation: {0.010,-0.060,0.000}
zed_camera_container | [component_container_isolated-2] [INFO] [1762191738.208810045] [zed.zed_node]: * Rotation: {0.000,-0.000,0.000}

The Zed node only logs rotation and translation and does nothing after. This happens for both short and extended cables, both USB 3.0. Also, no error logs or anything.

How long is the cable? Is it active? Is it placed close to power cables or motor control cables that could introduce noise?

Yes, GMSL2 cameras are specifically designed for this type of setup.

This is the expected behavior. There’s no output when the node runs, unless something “weird” happens.
You can check that the topics are published or use the Diagnostic to verify that it’s running.