The ZED SDK allows you to add depth, motion sensing and spatial AI to your application. Available as a standalone installer, it includes applications, tools and sample projects with source code.
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 stereo retrieveTensor overload 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 rectified LEFT_NV12 / RIGHT_NV12 views 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_CLOCK timestamp option yields timestamps immune to both NTP/PTP step and frequency adjustments, the per-camera lens distortion model is now exposed through LENS_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.
Jul 23, 2026
ZED_SDK_DISABLE_HW_TSC_SOF=1 to restore the previous software-sampled timestamps.linux-nvidia-7.0 kernel — 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).sl::Camera::open.Camera::open with a SVO2 without high frequency IMU data, the ZED SDK will run in degraded mode and some module wont be available.sl::InitParameters::async_grab_camera_recovery.sl::InitParameters::open_timeout_sec in sl::Camera::open(), this no longer hangs when a stream has no sender — it now returns after the given timeout instead of freezing.grab() runtime to 300–400 ms.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_sim2real to the Isaac Lab examples (zed_single.py, zed_multi_env.py).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 Stereolabs menu.ZED Depth node: SDK-free RGB + depth capture from a ZED camera using Isaac Sim's renderer, with optional PNG/EXR saving.ingestCustomDepth feature introduced in ZED SDK 5.4.0.isaaclab_utils): mount the real ZED USD on a robot link, build camera configs from ZED spec tables, and import as a utilities-only package (no Kit app required). Standalone examples are now organized under examples/.Lens selection: Wide, Narrow, or Fisheye). When a camera is connected, the Camera Model and Lens Type inputs are replaced by a read-only summary, so there is nothing to set by hand.Camera Selection / Configuration / Streaming / ZED Sim2Real sections for easier navigation in the property panel.Jun 18, 2026
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 new sl::Camera::ingestCustomDepth(), called between Camera::read() and Camera::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 graded confidence_threshold filtering. 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.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 new DEPTH_MODE::CUSTOM, usable between read() and grab(). C++ only.sl::TIMESTAMP_CLOCK::MONOTONIC_RAW_CLOCK value to the process-wide timestamp clock selector, backed by Linux CLOCK_MONOTONIC_RAW. Like MONOTONIC_CLOCK, it is immune to NTP/PTP step adjustments, but it is also not subject to NTP/PTP frequency slewing (adjtimex). Useful when correlating SDK timestamps with free-running hardware counters or with devices that are not time-disciplined by the host. Available in C++, C, Python and C# wrappers. Switch to it before opening any camera with sl::Camera::setTimestampClock(sl::TIMESTAMP_CLOCK::MONOTONIC_RAW_CLOCK).sl::Camera::retrieveEncodedStreamPacket(EncodedStreamPacket&, ENCODED_STREAM_SOURCE) and the introspection method sl::Camera::getEncodedStreamsInfo() (also available on sl::CameraOne). Three sources are addressable on a single camera: RECEIVING (incoming network stream when opened with INPUT_TYPE::STREAM), SENDING (outgoing enableStreaming() bitstream, captured before RTP fragmentation), and RECORDING (the SVO encoder output). Each packet is delivered as Annex-B NAL units (SPS/PPS — and VPS for HEVC — inlined in front of every IDR), so writing successive packets to a .h264 / .hevc file produces a self-contained stream playable by any standard player. The tap drops every packet until the first natural IDR arrives, so the first packet returned is always a keyframe; on RECEIVING streams this can mean a wait of up to one GOP (~2 s with the SDK default) before the first packet is available. Common use case: muxing the SDK's outgoing or recorded stream into a custom container (mp4, mkv, etc.) without paying a second encoding session. Works with H264, H265, H264_LOSSLESS, and H265_LOSSLESS recording modes.sl::Camera::read(), no longer requiring a subsequent sl::Camera::grab() to push a frame.sl::Camera::retrieveImage via the new sl::VIEW::LEFT_NV12 and sl::VIEW::RIGHT_NV12 (also available on sl::CameraOne). These return the rectified image directly as NV12 (YUV 4:2:0 semi-planar), so you no longer have to retrieve BGRA and re-convert before feeding a hardware H264/H265 encoder. Unlike the existing LEFT_NV12_UNRECTIFIED (native-resolution, GPU-only zero-copy), the rectified variant supports resizing (even dimensions) and both CPU and GPU memory. Available in the C++, C, Python and C# wrappers.sl::LENS_DISTORTION_MODEL enum (RAD_TAN, FISHEYE, PINHOLE) and a new CameraParameters::lens_distortion_model field. Raw/unrectified parameters report RAD_TAN or FISHEYE, rectified parameters report PINHOLE, so applications can now tell how the reported intrinsics and distortion coefficients should be interpreted instead of having to guess from the coefficient values. Available for stereo and ZED One cameras across the C++, C, Python and C# APIs.SVO_UNSUPPORTED_COMPRESSION error and could crash. Local streams use an uncompressed transport with no encoded bitstream to copy, so recording now transcodes automatically (as it already did for stereo cameras).retrieveMeasure(MEASURE::NORMALS) occasionally mis-flagging valid normals.Camera::getDeviceList() now reads the serial number through a lightweight probe instead of fully opening and streaming each camera — repeated enumeration no longer leaves devices in a bad state.Camera::getDeviceList(): they are now listed as NOT_AVAILABLE with their path and model populated instead of being silently dropped. On Linux, opening a busy camera now correctly reports it as in-use instead of failing with a generic error.Camera::open() attempts on Linux, which could keep the camera busy across retries.99-slabs.rules): sensor (HID) access now works when the camera enumerates on a USB controller other than bus 1 (e.g. Jetson AGX Orin), and the i2c rules for ZED-GMSL now cover every i2c adapter regardless of numbering.ZED_SDK_Ubuntu24_sbsa_cuda13.0_tensorrt10.16_*, TensorRT libraries bundled) provides the desktop feature set on aarch64. Known limitation: Live USB camera support on these platforms is still experimental and may not work reliably — on the NVIDIA DGX Spark systems we've tested, ZED USB cameras are currently not functional. Behavior may differ on other GB10-based systems or with future system updates; we're investigating with the platform vendor. ZED X (GMSL) cameras are not supported. SVO playback and network‑streamed inputs are unaffected.sl::Pose::pose_confidence to filter or weight tracking results by reliability.POSITIONAL_TRACKING_MODE::GEN_3 failing to start when PositionalTrackingParameters::enable_imu_fusion was set to true.depth sensing/custom depth (C++) — two DEPTH_MODE::CUSTOM samples showing the read / external compute / ingest / grab flow, each with a 3D point cloud viewer, an interactive confidence threshold and a graded confidence input: opencv_sgbm (CPU cv::StereoSGBM at half resolution, texture-based confidence, ideal to validate the plumbing without a network) and tensorrt_stereo_onnx (fully GPU-resident: stereo retrieveTensor tensors bound directly to TensorRT, zero host synchronization across the frame, disparity-derived edge/occlusion confidence; the bundled get_model.py downloads a ready-to-run CREStereo by default or a prebuilt Fast-FoundationStereo ONNX).camera streaming/sender_record_h264 (C++) — easy onramp showing how to capture the SDK's outgoing streaming bitstream to a standard .h264 or .hevc file while streaming over UDP as usual.camera streaming/encoded_passthrough (C++) — multi-source reference exercising every combination of RECEIVING, SENDING, and RECORDING concurrently, including mixed codecs (e.g. H265 in, H264 out) and re-streaming through the SDK.For older releases and changelog, see the ZED SDK release archive.