I have a problem with multi-zedx camera synchronization.
I have a working ROS2 setup with 1 zedx on a Jetson Orin with Capture-Dou. The setup is working, and I am using body tracking and object detection modules.
Now, I am going to extend the FOV by adding another zedx camera (Left and right).
When I use the multi_camera package, I get the topics, but they are relative to each camera. Moreover, the main problem is that the cameras’ FOVs overlap, leading to double detection in the overlap zone.
I tried the ZED360 calibration and got the json file, but I don’t know what to do with it!
Are there any solutions to get a unified detection? I my application, there will be multiple people in front of the cameras and some of them in the overlap area.
In addition, I am using two cameras for now; if this works, I will expand to four. So I am looking for something generalizable.
Thank you for the help. If there is any more information I missed, please let me know.
Unfortunately, the ZED ROS2 Wrapper does not support the Fusion module for this type of application, which is not strictly related to robotics (unless for specific niche applications).
You should create your custom ROS 2 Node that publishes the topics that you need from a Fusion setup.
Thank you for the reply.
So when there are overlaps between the cameras, there are no ready-to-use solutions. I wonder if I install the cameras next to each other on a horizontal plane, what the proper angle is to avoid overlaps and blind spots. 75 degrees (considering official FOV=105)?
I didn’t get the part about being strictly related to robotics. I am installing the setup on a mobile robot that cruises among pedestrians, performs gesture recognition, and reacts to it.
import pyzed.sl as sl
import sys
def main():
# 1. Create a Camera object
zed = sl.Camera()
# 2. Set initialization parameters (e.g., resolution, FPS)
init_params = sl.InitParameters()
init_params.camera_resolution = sl.RESOLUTION.HD1080 # Choose desired resolution
init_params.camera_fps = 30 # Choose desired frame rate
# 3. Open the camera
err = zed.open(init_params)
if err != sl.ERROR_CODE.SUCCESS:
print(f"Error opening ZED camera: {err}")
sys.exit(-1)
# 4. Retrieve the camera information
camera_info = zed.get_camera_information()
# 5. Access the CalibrationParameters
# The FOV values are part of the 'CalibrationParameters' for the rectified image.
calibration_params = camera_info.camera_configuration.calibration_parameters
# 6. Retrieve the FoV for the LEFT camera (rectified)
# The rectified image for the LEFT camera is used for stereo processing.
h_fov_left = calibration_params.left_cam.h_fov
v_fov_left = calibration_params.left_cam.v_fov
d_fov_left = calibration_params.left_cam.d_fov
print("\nRectified Image Field of View (Left Camera):")
print(f" Horizontal FoV (H_FOV): {h_fov_left} degrees")
print(f" Vertical FoV (V_FOV): {v_fov_left} degrees")
print(f" Diagonal FoV (D_FOV): {d_fov_left} degrees")
# 7. Close the camera
zed.close()
if **name** == “**main**”:
main()