ZED Node

Subscribed Topics

The ZED node publishes data to the following topics:

  • Left camera

    • /zed/rgb/image_rect_color : Color rectified image (left RGB image by default).
    • /zed/rgb/image_raw_color : Color unrectified image (left RGB image by default).
    • /zed/rgb/camera_info : Left camera calibration data.
  • Right camera

    • /zed/right/image_rect_color : Color rectified right image.
    • /zed/right/image_raw_color : Color unrectified right image.
    • /zed/right/camera_info : Right camera calibration data.
  • Depth and point cloud

    • /zed/depth/depth_registered : Depth map image registered on left image (by default 32 bits float, in meters).
    • /zed/point_cloud/cloud_registered : Registered color point cloud.
  • Visual odometry

    • /zed/odom : Absolute 3D position and orientation relative to the odometry_frame.

Launch file parameters

Specify your launch parameters in the zed_camera.launch file available here.

Parameter Description Value
svo_file Specify SVO filename Path to an SVO file
resolution Select ZED camera resolution ‘0’: HD2K, ‘1’: HD1080, ‘2’: HD720, ‘3’: VGA
frame_rate Set ZED camera video framerate int
sensing_mode Select depth sensing mode ‘0’: STANDARD, ‘1’: FILL
quality Select depth map quality ‘0’: NONE, ‘1’: PERFORMANCE, ‘2’: MEDIUM, ‘3’: QUALITY
openni_depth_mode Convert 32bit depth in meters to 16bit in millimeters ‘0’: 32bit float meters, ‘1’: 16bit uchar millimeters
zed_id Select a ZED camera by its ID. ID are assigned by Ubuntu. Useful when multiple cameras are connected. ID is ignored if an SVO path is specified. int, default ‘0’
gpu_id Select a GPU device for depth computation int, default ‘-1’ (best device found)
publish_tf Enable/Disable publish odometry TF true, false
odometry_frame Odometry frame name string, default=‘odometry_frame’
base_frame Base link frame name string, default=‘base_frame’
camera_frame Camera frame name string, default=‘camera_frame’
depth_frame Depth frame name string, default=‘depth_frame’

Topic names can also be customized in the launch file.

Dynamic parameter

The ZED node let you reconfigure the the depth map confidence threshold dynamically. You can use rqt to change its value. The confidence is mapped between 0 (high confidence threshold, sparse data) and 100 (low confidence threshold, dense data).

Transform frame

The ZED ROS wrapper broadcasts multiple coordinate frames that each provide information about the camera position and orientation. If needed, the reference frames can be changed in the launch file.

  • zed_center is the current position and orientation of ZED, determined by visual odometry.
  • zed_right_camera is the position and orientation of ZED right camera.
  • zed_left_camera is the position and orientation of ZED left camera.
  • zed_depth_camera is the origin of the depth values / point cloud. It is the same as zed_left_camera.

For RVIZ compatibilty, the root frame odometry_frame is called map .

map (odometry_frame)
└─base_frame
  └─camera_frame
    └─zed_center
      └─zed_right_camera
      └─zed_left_camera    
        │ zed_depth_camera

Using multiple ZED

It is possible to use multiple ZED cameras with ROS. Simply launch the node with the zed_multi_cam.launch file :

roslaunch zed_wrapper zed_multi_cam.launch

Assigning a GPU to a camera

To improve performance, you can specify in the launch file the gpu_id of the graphic card that will be used for the depth computation. By default, (-1) will select the GPU with the highest number of CUDA cores. When using multiple ZED, you can assign each camera to a GPU to higher the performances

Limitations

Performance

This wrapper lets you quickly prototype applications and interface the ZED with other sensors and packages available in ROS. However, the ROS layer introduces significant latency and a performance hit. If performance is a major concern for your application, please consider using the ZED SDK library.

Using multiple ZED

The ZED camera uses the full USB 3.0 bandwidth to output video. When using multiple ZED, you may need to reduce camera framerate and resolution to avoid corrupted frames (green or purple frames). You can also use multiple GPUs to load-balance computations and improve performances.