stereolabs/zed-ros2-wrapper

ROS 2 wrapper for the ZED SDK

What it is

zed‑ros2‑wrapper is an official ROS 2 package that lets you use Stereolabs ZED depth‑sensing cameras inside a ROS 2 robot system. It wraps the ZED SDK (which runs on CUDA‑enabled GPUs) and publishes the camera’s data as standard ROS 2 topics.

Key capabilities (as described in the README)

Feature What you get in ROS 2
Image streams Rectified/unrectified colour and greyscale images.
Depth Per‑pixel depth maps.
Point clouds Colored 3‑D point clouds (with optional point‑cloud‑transport compression).
Positional tracking & mapping Odometry, SLAM‑style mapping, and optional GNSS fusion for Earth‑referenced localization.
Object detection Built‑in object detector (GPU‑accelerated) and optional custom YOLO‑style ONNX models.
Body tracking Human skeleton extraction.
Sensor data IMU, barometer, magnetometer (when supported by the camera).
Simulation mode Runs the same pipeline against a virtual ZED streamed from NVIDIA Isaac Sim, useful for testing without hardware.
Integration Works with NVIDIA Isaac ROS / NITROS for accelerated data transport.

How you get it running

  1. Prerequisites – Ubuntu 20.04/22.04/24.04/26.04, the ZED SDK v5.2, CUDA, and a supported ROS 2 distro (Humble, Jazzy, Lyrical, Foxy for backward compatibility, or Rolling for developers).
  2. Installation – Clone the repo into a ROS 2 workspace, install dependencies with rosdep, then build with colcon build --symlink-install.
  3. Launching – Use the provided launch file:
    ros2 launch zed_wrapper zed_camera.launch.py camera_model:=<model>
    
    Replace <model> with the exact ZED model you have (e.g., zed2i, zedx, virtual, etc.).
  4. Configuration – All parameters live in a set of YAML files under zed_wrapper/config (e.g., common_stereo.yaml, zed2.yaml). You can edit them to change resolution, frame rate, enable/disable object detection, mapping, GNSS fusion, etc.
  5. Visualization – A ready‑made RViz2 config is supplied; run rviz2 -d ./zed_wrapper/config/rviz2/<model>.rviz or launch the helper zed_display_rviz2 package.
  6. Simulation – Add sim_mode:=true use_sim_time:=true to the launch command to connect to an Isaac Sim instance that streams synthetic camera data.

Who would use this?

  • Robotics developers building perception pipelines on ROS 2 who need high‑resolution depth, object detection, or human pose estimation.
  • Researchers experimenting with SLAM, GNSS‑fused localization, or AI‑based object detection on real‑time video streams.
  • Simulation engineers who want to prototype with virtual ZED cameras in NVIDIA Isaac Sim before deploying on hardware.

Limitations noted in the README

  • Some features (object detection, body tracking, GNSS fusion, 2‑D mode, etc.) are not available on older first‑generation ZED cameras or on the ZED X One models.
  • Point‑cloud‑transport is optional; you must install ros-$ROS_DISTRO-point-cloud-transport yourself if you need compressed point clouds.
  • The package is officially tested only on LTS ROS 2 releases; newer non‑LTS releases may work but are not guaranteed.
  • On Jetson platforms with JP6 you may need to set CUDA_TOOLKIT_ROOT_DIR via the nvidia‑jetpack packages.

Quick start cheat‑sheet

# 1. Set up workspace
mkdir -p ~/ros2_ws/src && cd ~/ros2_ws/src
git clone https://github.com/stereolabs/zed-ros2-wrapper.git
cd ..
rosdep update && rosdep install --from-paths src --ignore-src -r -y

# 2. Build
colcon build --symlink-install --cmake-args=-DCMAKE_BUILD_TYPE=Release
source install/local_setup.bash

# 3. Run a ZED camera (replace model as needed)
ros2 launch zed_wrapper zed_camera.launch.py camera_model:=zed2i

All information above is taken directly from the repository’s README; no additional features have been inferred.

Related

  • Project
  • Project
  • Project
  • Project
  • Project