必须持有 ZED 相机硬件,SDK 本身不提供相机;需自行从官网下载安装包,仓库只含教程与示例;需 NVIDIA GPU 且算力大于 5,无独显环境无法运行
zed-sdk
stereolabsMIT活跃维护ZED SDK 是 Stereolabs 为 ZED 立体相机提供的空间感知开发套件,支持实时深度估计、SLAM、点云和人体姿态估计,帮助快速搭建智能机器人与空间感知应用。
⚡️The spatial perception framework for rapidly building smart robots and spaces
从 https://www.stereolabs.com/developers/release/#downloads 下载 ZED SDK 安装包,按官方文档在 Windows、Linux 或 Jetson 上安装需要 NVIDIA GPU,Compute Capability > 5;支持 Ubuntu LTS、Windows 和 Jetson 平台;具体显存要求 README 未说明。
面向 ZED 立体相机的跨平台空间感知 SDK,提供深度、跟踪与建图能力
ZED SDK 是 Stereolabs 为 ZED 立体相机提供的空间感知开发套件,支持实时深度估计、SLAM、点云和人体姿态估计,帮助快速搭建智能机器人与空间感知应用。
核心能力
- 提供深度感知、点云与多格式深度数据保存
- 支持物体检测与 GEN_2 人体骨骼跟踪
- 提供位置跟踪与 GNSS 融合的全局定位
- 支持空间建图,输出网格与点云融合结果
- 支持多相机融合与 SVO 录制回放
容易踩的坑
- 5.5.1最新正式版2026-10-20 · 2026-10-20 14:28 UTC
https://www.stereolabs.com/developers/release/5.5
5.5.1
SDK
Bug Fixes
- Fixed SVO playback stopping early on Jetson:
grab()returnedERROR_CODE::END_OF_SVOFILE_REACHEDbefore the end of the recording, at a different frame on every run. Most visible with several cameras played back at once and with ZED X One recordings. - Fixed SVO recordings on Jetson losing their last frames: one or two in SVO2 with ZED X and ZED X One cameras, and up to six in legacy SVO (
ZED_SDK_SVO_VERSION=1).disableRecording()also returns about 300 ms sooner. - Fixed
InitParameters::optional_settings_pathbeing silently ignored when the path had no trailing separator (/my/settingswas read as/my/settingsSN12345.conf), so the calibration from the default settings directory was used instead. The trailing separator is now optional, and a warning is logged whenever the calibration file is not found in the requested directory. Applies toCameraandCameraOne, and to the calibration files the SDK saves into that directory. - Fixed
open()on Windows occasionally never returning with a USB camera that stopped sending images right after its stream started. As on Linux,open()now stops waiting for images after about 30 seconds. - Fixed streams received on the same machine through local shared memory (IPC) being delivered below the sender's frame rate: on Windows, a 30 FPS stream arrived at about 21 FPS with a third of the frames dropped. The Isaac Sim extension streams this way by default.
- Fixed SVO2 files recorded in
SVO_COMPRESSION_MODE::H265with ZED SDK 5.3 or older on a board without a hardware H.265 encoder, such as the Orin Nano, not playing back:grab()returnedERROR_CODE::END_OF_SVOFILE_REACHEDfrom the first frame, or the images came out corrupted. These files now play back as they are, with no need to re-record or convert them. - Fixed applications receiving a stream with
InitParameters::input.setFromStream()crashing, or corrupting their memory, when the stream data was malformed, for example when sent by a faulty or untrusted device on the network. Malformed frames are now dropped and the stream resumes from the next keyframe. - Fixed streaming from Windows falling behind the source frame rate when the sending application has no live camera open, for example when streaming an SVO file with
sl::Camera::enableStreaming()or streaming from a simulator: a 30 FPS SVO was streamed at about 23 FPS. - Fixed SVO playback on desktop never returning the last frame of files recorded in H.264 (
SVO_COMPRESSION_MODE::H264orH264_LOSSLESS):grab()returnedERROR_CODE::END_OF_SVOFILE_REACHEDone frame early, wherever the file was recorded. H.265 files and playback on Jetson were not affected. - Fixed a GPU memory leak where declaring an
sl::Fusionobject allocated CUDA resources beforeinit()was called. GPU resources are now allocated only when the corresponding module is enabled. - Fixed SVO2 recordings of ZED X and ZED X One cameras storing each frame's exposure and gain with an earlier frame. On playback,
getCameraSettings()forsl::VIDEO_SETTINGS::EXPOSURE_TIME,ANALOG_GAINandDIGITAL_GAIN, andgetTimestamp(sl::TIME_REFERENCE::IMAGE_CENTER_OF_EXPOSURE), returned the values of a frame recorded later (one or two frames later in H.264 / H.265, about six inSVO_COMPRESSION_MODE::LOSSLESS), and the last frames of a file had none. Files recorded with older versions keep this offset.
SLAM
Features / Improvements
- Reduced the CPU usage of
POSITIONAL_TRACKING_MODE::GEN_3by about half on desktop and by up to 7% on Jetson, wheregrab()is also up to 8% faster, with the same tracking results. Each keyframe also takes about 280 kB less memory, which adds up over long sessions withPositionalTrackingParameters::enable_area_memoryon. - Improved loop closure accuracy with
POSITIONAL_TRACKING_MODE::GEN_3: once a loop is closed the map along the loop is now refined, and the cor
- Fixed SVO playback stopping early on Jetson:
- 5.5.02026-10-20 · 2026-10-20 14:27 UTC
查看更新说明
https://www.stereolabs.com/developers/release/5.5
5.5.0
ZED SDK 5.5 introduces a new generation of body tracking.
GEN_2is more robust in crowded scenes and to unusual body orientations, and it detects people further from the camera. It is up to 18% faster and up to 14% more accurate thanGEN_1. Neural depth gains a precision selector:InitParameters::depth_precisionset toINT8trades a small amount of accuracy for a faster depth runtime and a lower memory footprint, up to 25% faster with 3 cameras or more. The Person & Head detection models detect people about 50% further out and are far more reliable in top-down or partially occluded views, and custom object detection models can now be optimized ahead of time instead of on first use.Camera support extends to the ZED X One Core, over MIPI through the ZED Link MIPI capture card or over Camera-over-Ethernet through a Holoscan sensor bridge. A new center-of-exposure frame timestamp helps align frames with sensors that timestamp when they measure, such as a LiDAR. On Jetson, the zero-copy capture API exposes its DMA-buffer pool and can return the rectified pair directly as NV12 DMA-BUF buffers, with an experimental backend that keeps rectification entirely off the GPU.
On the platform side, TensorRT 11 is supported with its own installers, any installer now runs on the TensorRT version in its name or newer within the same major, and the Linux installers require fewer system packages. GEN_3 positional tracking is faster per frame and can be told how much GPU it may use. Numerous fixes round out the release, across white balance and video settings, IMU bias, GMSL capture stability, SVO recording, local streaming, spatial mapping and body-tracking fusion.
SDK
Depth
- Added
sl::InitParameters::depth_precisionto select the precision ofNEURALdepth inference.FP16is the default and keeps the current behavior;INT8trades a small amount of accuracy for a faster depth runtime and a lower memory footprint, and is supported byDEPTH_MODE::NEURALonly. It is up to 14% faster than FP16 on Orin NX (single camera) and 23% on Thor when using more than 2 cameras. Always safe to set: the SDK falls back to FP16, and says so in the log, when the depth mode or the GPU does not support INT8. Turing GPUs without tensor cores (T1000, T600, T400, T500, T1200, T2000 and the GTX 16 series) are in that case, and FP16 is faster on them anyway. Available in the C++, C, Python and C# APIs, and in ZED Depth Viewer. - Added OpenEXR (
.exr) support tosl::Mat::write()andsl::Mat::read()for float matrices (F32_C1,F32_C3,F32_C4), so a depth map, disparity map or point cloud can be saved and reloaded with its values unchanged, infinite and invalid pixels included, where PNG rescales them to 16-bit integers and PFM writes them as 0. The files are standard EXR and compatible with any OpenEXR-capable tool (with OpenCV, setOPENCV_IO_ENABLE_OPENEXR=1, and note thatopencv-python5 dropped the codec). Writing.exris float-only: an 8- or 16-bit image returnsERROR_CODE::FAILURE.sl_save_current_depth()and its wrapper equivalents accept an.exrfilename as well. Available in the C++, C, Python and C# APIs. - Fixed
sl::Mat::write()andsl::Mat::read()ignoring a file extension written in capitals.depth.PNG,cloud.PLYorimage.JPGfell through to the default format for the matrix type, so aF32_C1depth map named.PNGwas written as PFM data and aF32_C3point cloud as ASCII, under a filename claiming otherwise. The extension is now matched regardless of case. - Added
sl::InitParameters::allow_depth_cuda_graph, which lets the SDK record the depth computation once and replay it at eachgrab(), lowering CPU cost and depth runtime by 10%, most noticeably on Jetson. At 4 cameras on Thor, depth costs 20% less time and gives back 12 points of CPU. Off by default; enabling it gives the SDK a larger share of the GPU, leaving less headroom fo
- Added
- 5.4.12026-10-20 · 2026-10-20 14:27 UTC
查看更新说明
https://www.stereolabs.com/developers/release/5.4
5.4.1
SDK
Features / Improvements
- Enabled Intra Process Communication (IPC) on Windows.
- Improved image timestamp accuracy on GMSL cameras (ZED X / ZED X One families): the frame timestamp is now captured in hardware instead of sampled in software, reducing timestamp jitter by ~10× and making it immune to CPU load. Enabled by default; set
ZED_SDK_DISABLE_HW_TSC_SOF=1to restore the previous software-sampled timestamps. - DGX Spark (GB10): the 5.4.0 USB camera limitation was traced to a platform kernel (xHCI) issue, fixed in Ubuntu's upcoming
linux-nvidia-7.0kernel, with it, ZED USB cameras are fully functional on DGX Spark. Until its official rollout, the SBSA installer now offers to install that kernel on affected GB10 systems (interactive installs only). - Improved ZED-X IMU temperature reading, a valid temperature is now available directly after
sl::Camera::open.
Bug Fixes
- Fixed the IMU camera moving state that was sometimes stuck to MOVING. This was introduced when IMU frequency switched from 400Hz to 200Hz.
- Fixed
Camera::openwith a SVO2 without high frequency IMU data, the ZED SDK will run in degraded mode and some module wont be available. - Improved USB camera recovery after a disconnection. Resolves a case where grab() could freeze during automatic reconnection, prevents a hang when a camera is physically unplugged mid-recovery, and ensures images are correct after the camera comes back online. open_timeout_sec is now correctly applied to the reconnection retry window. This apply to both sync and async recovery worflow defined by
sl::InitParameters::async_grab_camera_recovery. - Fixed streaming from a Jetson to a Windows receiver: resolves a wire-format incompatibility that stopped a Windows client from decoding a Jetson stream.
- Fixed effect of
sl::InitParameters::open_timeout_secin sl::Camera::open(), this no longer hangs when a stream has no sender: it now returns after the given timeout instead of freezing. - Fixed an issue where rolling SVO recording could produce empty files after the first one.
- ZED X One 4K: requesting HDR at a resolution that has no HDR sensor mode (only QHD+ and HD1200 have one) is now rejected with a warning instead of leaving the GMSL capture stack unable to reopen the camera (repeated open timeouts until the application restarts).
- Fixed calibration/configuration file parsing and writing being corrupted by the application's locale.
SLAM
- Update the PT sample for displaying the fisheye image when the input camera have fisheye lens.
- Fixed GEN_3 positional tracking failing to start when IMU fusion was enabled but the source provided no high-frequency IMU data (e.g. SVO v1 files or network streams without full-rate sensor data). When the source still carries an integrated orientation, tracking now runs visual-inertial using it as a rotation-only attitude prior; when no IMU data is available at all, it falls back to pure visual mode instead of never initializing.
- Fixed excessive positional tracking computation that could push
grab()runtime to 300–400 ms. - With Area Memory off, tracking now correctly runs as pure visual-inertial odometry (VIO) instead of the previously refined pipeline. Behavior with Area Memory enabled is unchanged.
Wrappers
Isaac Sim
- [Experimental] Added the ZED Sim2Real camera model, an optional, calibrated post-process that makes simulated RGB match a real ZED X camera (lens blur, vignetting, temporal auto-exposure, color grading, sensor noise). Enable it via the ZED Sim2Real Apply option on the ZED Camera Helper node, or pass
--apply_zed_sim2realto the Isaac Lab examples (zed_single.py,zed_multi_env.py). - Added the ZED Cameras panel: an at-a-glance list of every ZED camera in the stage (thumbnail, prim name, and model) with one-click lens switching. The panel opens automatically at startup and can be toggled from the **Stereola
- 5.4.02026-06-18 · 2026-06-18 14:10 UTC
查看更新说明
5.4.0
https://www.stereolabs.com/developers/release/5.4
5.4.0
ZED SDK 5.4 makes the built-in NEURAL depth models noticeably faster: an optimized inference path delivers up to 20% quicker depth inference and ~15% lower GPU load on Jetson Thor — with gains carrying over to Orin and desktop GPUs, and the largest wins on heavier pipelines (more cameras, NEURAL PLUS, or concurrent recording) — all with outputs unchanged. The release also opens the depth pipeline to custom algorithms through the experimental
DEPTH_MODE::CUSTOM: an externally computed disparity or depth map — for example from a custom stereo network — can be fed to the SDK each frame, and the full pipeline (point cloud, spatial mapping, object detection, plane detection) then runs on the ingested data. A companion stereoretrieveTensoroverload pre-processes both rectified views in a single fused GPU pass, producing inference-ready tensors that bind directly to frameworks such as TensorRT.Recording and streaming gain a leaner path. SVO recording and outbound streaming now run entirely from
Camera::read(), and stereo rectification is performed on demand, so pure recording or streaming pipelines no longer pay its CPU/GPU cost. A new polling API retrieves encoded H264/H265 packets directly — from incoming, outgoing, or recorded streams — without a second encoding session, and new rectifiedLEFT_NV12/RIGHT_NV12views feed hardware encoders without an extra color conversion.This release also extends the platform reach with experimental support for ARM desktop systems (SBSA: NVIDIA DGX Spark, GH200, and ARM CUDA servers). A new monotonic
MONOTONIC_RAW_CLOCKtimestamp option yields timestamps immune to both NTP/PTP step and frequency adjustments, the per-camera lens distortion model is now exposed throughLENS_DISTORTION_MODEL, and SLAM GEN_3 reports per-pose confidence. Numerous stability and accuracy fixes round out the release across depth, streaming, calibration, and USB camera handling.SDK
General
Features / Improvements
- Optimized the NEURAL depth models' inference path, improving both runtime and load. Depth inference is up to 20% faster and GPU load is reduced by ~15% on Jetson Thor; gains carry over to Orin and desktop GPUs as well, though the magnitude varies by platform. The improvement scales with pipeline load — heavier workloads (more cameras, more demanding models such as NEURAL PLUS, or recording running on top) tend to see the largest gains. For example, 4 cameras running NEURAL depth on Jetson Thor now reach 60 FPS (up from 53). Outputs are unchanged.
- (Experimental) Added
sl::DEPTH_MODE::CUSTOM: feed your own externally computed disparity or depth map (e.g. from a custom stereo network) to the SDK each frame via the newsl::Camera::ingestCustomDepth(), called betweenCamera::read()andCamera::grab(). The full pipeline then runs on the ingested data (point cloud, spatial mapping, object detection, plane detection, etc.). Disparity or metric depth is accepted at any resolution, in CPU or GPU memory, with an optional confidence map for gradedconfidence_thresholdfiltering. Available in the C++, C, Python and C# APIs. As an experimental feature, downstream modules may not be fully robust to arbitrary custom depth/confidence input and can produce unexpected behavior or reduced accuracy. - Added a stereo overload of
sl::Camera::retrieveTensor(Tensor& left, Tensor& right, const TensorParameters&): both rectified views are pre-processed for inference (resize, color conversion, layout, normalization) in a single fused GPU pass, producing densely packed tensors that can be bound directly as network inputs (e.g. TensorRT). Designed for stereo networks and the newDEPTH_MODE::CUSTOM, usable betweenread()andgrab(). C++ only. - Added a new
sl::TIMESTAMP_CLOCK::MONOTONIC_RAW_CLOCKvalue to the process-wide timestamp clock selector, backed by Linux `CLOCK_MONOTONIC_RAW
- 5.3.12026-06-18 · 2026-06-18 12:40 UTC
查看更新说明
https://www.stereolabs.com/developers/release/5.3
5.3.1
SDK
General
Bug Fixes
- Fixed GMSL camera enumeration not recovering after
nvargus-daemonis restarted while the application is running.getDeviceList()now returns the connected GMSL cameras again without requiring an application restart. - Fixed a Desktop (x86) streaming decode latency regression introduced in 5.2.3 with the NVIDIA Video Codec SDK update. The hardware decoder was waiting for the next packet before releasing each frame, adding roughly one frame of latency per received stream (≈20 ms at 60 FPS, more at lower frame rates) on both H264 and H265. Received-stream latency is back to 5.2.1 levels, with no change to image quality, throughput, or decoder load.
- Fixed
sl::Camera::reboot(sl::INPUT_TYPE::USB)silently no-op'ing whenever there wasn't exactly one camera in the right state (multi-camera setups, or cameras whose USB stream was wedged but still enumerable on the bus). It now enumerates every connected ZED 2 / ZED 2i and sends a full reset to each over the MCU HID interface — same path asZED_Explorer --rbt <SN>, applied to every camera. - Fixed regression on some VIDEO_SETTINGS (SCENE_ILLUMINANCE, DENOISING) retrieved values on GMSL cameras (ZED-X / ZED-X Mini). These values can now be correctly retrieved.
- Fixed sporadic crash in
sl::Camera::findFloorPlaneon low texture scenes. - Fixed periodic frame drops when using USB cameras on Linux at HD1080@30.
- Fixed
ZED_SVO_Editor:export_to_mcapcould fail on certain SVO files — this is now resolved. - Rate-limited the GNSS covariance-too-low warning. Repeated occurrences are now batched and reported with a count to avoid log spam.
Samples
- Make the positional tracking sample run at the SVO's actual recording framerate instead of as fast as compute allows. The sample now waits between .grab calls so the elapsed time matches the real interval between captured frames in the SVO.
Wrappers
C API
- Fixed
sl_get_sensors_data_batch_countgrowing its internal buffer indefinitely. The cached batch vector is now cleared before each SDK call, so the reported count reflects only samples from the last grab interval and memory stays flat in long-running consumers. Thanks to mkukarkin for the report and patch.
Python
- Fixed
sl.Mat.init_mat_cpuandsl.Mat.init_mat_resolution_cpunot wrapping the user-provided buffer: the resultingsl.Matwas empty and shared no memory with the caller, so frames retrieved into it stayed invisible from Python. Breaking change: theptrargument is now an integer memory address (e.g.my_array.ctypes.data) or a NumPy array, instead of a string. Callers that were passing a string to work around the bug will now get aTypeErrorand must update their call site — the previous behavior silently produced an unrelated, emptysl.Mat, so no functional usage existed. - Added
set_virtual_stereo_from_serial_numbers,set_virtual_stereo_from_camera_idandset_from_gmsl_porttoInitParametersto avoid reference issue when usinginputattibrute.
- Fixed GMSL camera enumeration not recovering after
用户点评
登录用户的真实使用记录,可按版本和硬件筛选还没有人点评。第一个说出真实体验的人最有价值。
:tada: The ZED SDK 5.5 is released!
ZED SDK 5.5 introduces a new generation of body tracking. GEN_2 is more robust in crowded scenes and to unusual body orientations, and it detects people further from the camera. It is up to 18% faster and up to 14% more accurate than GEN_1. Neural depth gains a precision selector: InitParameters::depth_precision set to INT8 trades a small amount of accuracy for a faster depth runtime and a lower memory footprint, up to 25% faster with 3 cameras or more. The Person & Head detection models detect people about 50% further out and are far more reliable in top-down or partially occluded views, and custom object detection models can now be optimized ahead of time instead of on first use.
Camera support extends to the ZED X One Core, over MIPI through the ZED Link MIPI capture card or over Camera-over-Ethernet through a Holoscan sensor bridge. A new center-of-exposure frame timestamp helps align frames with sensors that timestamp when they measure, such as a LiDAR. On Jetson, the zero-copy capture API exposes its DMA-buffer pool and can return the rectified pair directly as NV12 DMA-BUF buffers, with an experimental backend that keeps rectification entirely off the GPU.
On the platform side, TensorRT 11 is supported with its own installers, any installer now runs on the TensorRT version in its name or newer within the same major, and the Linux installers require fewer system packages. GEN_3 positional tracking is faster per frame and can be told how much GPU it may use. Numerous fixes round out the release, across white balance and video settings, IMU bias, GMSL capture stability, SVO recording, local streaming, spatial mapping and body-tracking fusion.
Please check the Release Notes of the latest version for more details.
Overview
| Depth Sensing | Object Detection | Body Tracking |
|---|---|---|
![]() | ![]() | ![]() |
| Positional Tracking | Global Localization | Spatial Mapping |
|---|---|---|
![]() | ![]() | ![]() |
| Camera Control | Plane Detection | Multi Camera Fusion |
|---|---|---|
![]() | ![]() | ![]() |
Why ZED?
- 🎯 End-to-end spatial perception platform for human-like sensing capabilities.
- ⚡ Real-time performance: all algorithms of the ZED SDK are designed and optimized to run in real-time.
- 📷 Reduce time-to-market with our comprehensive, ready-to-use hardware and software designed for multiple applications.
- 📖 User-friendly and intuitive, with easy-to-use integrations and well-documented API for streamlined development.
- 🛠️ Wide range of supported platforms, from desktop to embedded PCs.
Getting started
The ZED SDK contains all the libraries that power your camera along with tools that let you experiment with its features and settings.
To get started:
- Get a ZED from the Stereolabs Store
- Download the ZED SDK
- Install the ZED SDK on Windows, Linux or Jetson
- Start experimenting with the ZED SDK's tutorials
The documentation and API reference are great starting points to learn more about the ZED SDK and its many modules.
Samples
This repository contains ready-to-use and samples to start using the ZED SDK with only a few lines of code. They are organized by ZED SDK module:
-
Tutorials - A series of basic tutorials that demonstrate the use of each API module.
-
Camera Control - This sample shows how to adjust the ZED camera parameters.
-
Camera Streaming - This sample shows how to stream and receive on local network the ZED's video feed.
-
Depth Sensing - This sample shows how to capture a 3D point cloud and display with OpenGL. It also shows how to save depth data in different formats.
-
Positional Tracking - This sample shows how to use positional tracking and display the result with OpenGL.
-
Global Localization - This sample shows how to fuse the ZED SDK's positional tracking with GNSS data for global positioning.
-
Spatial Mapping - This sample shows how to capture 3D meshes with the ZED and display it with OpenGL. Classic Mesh and Point Cloud fusion are available.
-
Object Detection - This sample shows how to use the Object Detection API module with the ZED.
-
Body Tracking - This sample shows how to use the Body Tracking API with the ZED.
-
Recording - This sample shows how to record and playback video files in SVO format. SVO files let you use all the ZED SDK features without having a ZED connected.
Supported platforms
Here is the list of all supported operating systems for the latest version of the ZED SDK. Please find the recommended specifications to make sure your configuration is compatible with the ZED SDK.
| Ubuntu LTS | Windows | Jetson |
|---|---|---|
The ZED SDK requires the use of an NVIDIA GPU with a Compute Capability > 5.
If you are not familiar with the corresponding versions between NVIDIA JetPack SDK and Jetson Linux, please take a look at our blog post.
Integrations
The ZED SDK can be easily integrated into projects using the following programming languages:
| C++ | Python | C# | C |
|---|---|---|---|
Thanks to its comprehensive API, ZED cameras can be interfaced with multiple third-party libraries and environments.
| Unity | Unreal Engine 5 | OpenCV | ROS | ROS 2 |
|---|---|---|---|---|
| Pytorch | YOLO | Matlab | Isaac SIM | Touch Designer |
|---|---|---|---|---|
Community
Join the conversation and connect with other ZED SDK users to share ideas, solve problems, and help make the ZED SDK awesome. Our aim is to make it extremely convenient for everyone to communicate with us.
-
Discourse is our forum where all ZED users can connect. This is the best place to brainstorm and exchange about ZED cameras, ZED SDK software, and other Stereolabs products. Feel free to create an account and ask your questions, or even share your awesome projects!
-
Twitter Follow Stereolabs @Stereolabs3D for official news and release announcements.
-
GitHub If you come across a bug, please raise an issue in this GitHub repository.
-
Email To talk to Stereolabs directly, the easiest way is by email. Get in touch with us at [email protected].








