Cant detect cameras in ros2 wrapper

I can see my two zed x one gs cameras with ZED_Explorer, and i have set them up as a virtual stereo pair in the Zed_Media_Server. I have build the ros2 wrapper, but when i run it with the virtual config i get camera stream failed to start, and when i run it with zedxonegs config i get camera not detected. ZED_Diagnostic gives no errors.

I actually also get the issue if i just try to open the cameras in a python script, so might not be only a ros2 wrapper thing, it still works in ZED_Explorer and ZED_Media_Server though.

Hi @Jacob
What command do you use to launch the node?

ros2 launch zed_wrapper zed_camera.launch.py camera_model:=virtual custom_baseline:=7.0 or ros2 launch zed_wrapper zed_camera.launch.py camera_model:=zedxonegs.

I also tried the following small python script which also cant detect the camera:

import pyzed.sl as sl

# Create a ZED camera object

zed = sl.Camera()

# Set configuration parameters

init_params = sl.InitParameters()

init_params.camera_resolution = sl.RESOLUTION.HD1080

init_params.camera_fps = 30

# Open the camera

err = zed.open(init_params)

if (err != sl.ERROR_CODE.SUCCESS) :

print(repr(err))

exit(-1)

print(“ZED Camera Opened”)

You must also provide the address and port of the local stream generated by the ZED Media Server:

ros2 launch zed_wrapper zed_camera.launch.py camera_model:=virtual custom_baseline:=7.0 stream_address:=<ip_address> stream_port:=<stream_port>

Normally, ip_address is 127.0.0.1 if the media server is running on the same machine

I think it might work, at least i get a new error on a missing calibration file. What port is the individual cameras streaming to if i want to only open one?

Also, should i set a parameter for the calibration file when i launch or just place the file some specific place?

I have the ros node working now, thank you. One question though, im thinking of using the ros wrapper for most information but use the API for the actual image capture since there seem to be a speed limitation of image transfer over ros, would there be a lot of overhead of running the wrapper without subscribing to the images and depth topics, or does it only use computation to calculate the things i subscribe to?

Also, i see you have added support for nvidia nitros, but i see you are mentioning in a forum post that there is issues running it in docker containers, is that still a issue or has that been fixed? If that is fixed, would i need to have the wrapper in the same docker as the isaac packages, or can i communicate between the containers over the host network stack if they are both on the same host?

Have you placed the custom calibration file in the /usr/local/zed/settings folder after changing its name?

When you start a ZED Media Server instance you can retrieve the single camera streams only by using the ZED SDK API functions.

I recommend you read this guide to tune the ROS 2 environment.

The NVIDIA Isaac ROS integration documentation explains how to create a full working Docker setup.

Even without running the ros2 wrapper or anything else, the Zed Media Server uses about 150% cpu on my jetson orin NX 16 even without the gui open or any consumers of a video stream. Is this normal or have i somehow set it up to not use the graphics card maybe? I already have it on MAXN and have run the clock scripts.

What ZED SDK version are you using?

I am using 5.0.6 and CUDA version v12.6.68

I’ve just reported your feedback to the SDK team. They will try to replicate the behavior and fix it with one of the next releases of the ZED SDK.

Should i downgrade to a earlier version until then, or do the earlier releases have the same issue?

No one reported this problem before. You can try to install a previous version and report the behavior.

Do i need to compile it from source to run 5.0.5 fx? I can only find even older versions in your legacy releases section

When you install a different SDK version you always must clean and recompile all the software that you’ve built with another version.

Where can i download older version 5 releases? Also, i can see that running the ZED_Explorer with 1 camera open also consumes 110% cpu. Can i check somehow if the sdk utilizes the graphics card to encode or it consumes cpu for encoding by mistake fx?

I have tried to set it up with your provided docker container on the jetson for V 5.0, and here the cpu usage for the ZED_Media_Server is between 120-140% also. Is there something else i can try to decrease this? And is there a way to retrieve the data from the two zed x one cameras without Zed_Media_Server running?

You cannot download old Patch releases. Only old Major and Minor releases.

Encoding and Decoding is performed only by HW, indeed they are not supported on Jetson Orin Nano, the only Jetson modules without hardare encoders.

You can use them as monocular cameras, but in this case you cannot use all the modules of the ZED SDK relying on depth information.