ZED SDK 5.2
Release notes of the ZED SDK 5.2 series. Patch releases are listed newest first. Download links and the full changelog, including ZED Tools and integrations, are available on the ZED SDK 5.2 release page.
What’s New
ZED SDK 5.2 delivers major performance gains on Jetson with up to 85% lower CPU load, improved GMSL driver reliability at 200 Hz IMU rate, and sharper images in low-resolution modes. It adds support for an advanced zero-copy NV12 interface on Jetson.
This release also introduces the new beta Sensors API (sl::Sensors), a unified interface for managing ZED cameras and Ouster LiDAR devices in a single pipeline, replacing the need for separate APIs and custom fusion code.
This release adds support for JetPack 7.1 / L4T 38.4, unlocking hardware video encoding and decoding on Jetson Thor. Alongside these platform updates, version 5.2 brings important improvements to positional tracking robustness and the Python API, as well as numerous other bug fixes and feature enhancements across the SDK.
5.2.3
Released: Mar 26, 2026
SDK
- Fixed compatibility with newer NVIDIA GPU driver versions (v590+) on Desktop that prevented hardware encoding and decoding, which made recording and streaming modules unusable.
- Fixed a regression in uncalibrated mode causing invalid behavior. This feature was introduced in ZED SDK 5.1 and can be enabled with
export ZED_SDK_ALLOW_UNCALIBRATED_MODE=1, mainly for virtual stereo camera recording.
5.2.2
Released: Mar 13, 2026
SDK
- Fixed
getTimestamp(sl::TIME_REFERENCE::IMAGE)occasionally returning duplicate timestamps when multiple GMSL cameras (CameraandCameraOne) grab concurrently on separate threads. This was a regression introduced in 5.2. - Fixed a deadlock when retrieving views that are unavailable (e.g.
sl::VIEW::NORMALS_RIGHTwithInitParameters::enable_right_side_measureset tofalse). - Fixed a rare deadlock that could occur when calling
Camera::grab()andCamera::disablePositionalTracking()simultaneously.
Platform
- Added support for Jetson L4T 36.5 / JetPack 6.2.2.
5.2.1
Released: Mar 2, 2026
SDK
General
- Fixed
Camera::retrieveImageandCameraOne::retrieveImagewithNV12views and when using default resolution: it now correctly uses the camera resolution instead of requesting the user to manually set it. - Fixed an issue where ZED2/ZED2i could report locked positional tracking information.
- Fixed
Sensors::enableObjectDetectionto work without explicitly settingfused_objects_group_nameinsl::ObjectDetectionSensorsParameters. A default group name is now used automatically when the field is left empty, simplifying setup for single fused group configurations. Setting a custom name is still required when using multiple fused groups. - Fixed
RawBuffer::getWidth()andRawBuffer::getHeight()always returning 0 when usingCamera::retrieveImage(RawBuffer&). The buffer metadata now correctly reports the camera capture resolution. - Set
GEN_3as the global default positional tracking mode. Applied consistency fixes to C++/C#/Python parameters and remaining samples where this was previously omitted. - Negative
ERROR_CODEresults during module enabling are now correctly logged as warnings, consistent withgrab()error handling. - Fixed a rare lock that could appear using
Camera::grab()when corrupted frame detector was enabled. - Fixed an issue leading to the left and right buffer being swapped in
RawBufferretrieval for ZED X camera. - Reduced SDK memory usage per camera instance (up to 40MB savings).
- Fixed
CameraOne::retrieveImagebehavior forVIEW::LEFT_UNRECTIFIED, which previously returned the rectified image in 5.2.0. - Fixed an issue where GMSL2 cameras could stay in state
sl::CAMERA_STATE::REBOOTINGindefinitely. - Fixed an opening issue with ZED X One 4K cameras in QHDPLUS mode.
- Disabled gamma compensation for the ZED X One 4K camera as it conflicts with the ISP.
Streaming
- Fixed streaming corruption and flickering caused by control packets being mixed into the video data stream during frame reassembly.
- Fixed incorrect auto-exposure/auto-gain ROI for the right sensor on dual-sensor cameras (ZED X, ZED X Mini).
- Fixed the sender reporting wrong exposure/gain range values for the secondary sensor (right) on stereo cameras.
- Fixed an issue leading to the left and right images being swapped for ZED X camera, leading to corrupted depth map and warning about potential calibration issue.
- Fixed a memory leak when streaming reception times out.
- Fixed potential hang when closing a streaming receiver.
Object Detection
- Fixed
CustomObjectDetectionRuntimeParametersper-class properties not working with custom object detection models (ingestCustomBoxObjectsandingestCustomMaskObjects). Per-class properties (confidence threshold,is_grounded, tracking parameters, class filtering, etc.) are now correctly applied when usingCUSTOM_BOX_OBJECTSwithretrieveCustomObjects. - Fixed
Sensors::enableObjectDetectionto returnSENSORS_ERROR_CODE::INVALID_FUNCTION_PARAMETERSwhen usingSensors::enableObjectDetectionwithout adding at least one valid camera beforehand. If at least one camera was added, the behavior remains the same: leavingObjectDetectionSensorsParameters::sensors_idsempty still enables object detection with all available cameras. - Updated documentation and samples to reflect YOLO26 support. YOLO26’s default end-to-end output (
1×300×6) and one-to-many output (1×(nc+4)×8400) are handled by the existing custom ONNX detector pipeline. - Fixed random erroneous position estimation with Positional Tracking GEN_3 when Object Detection is enabled.
SLAM
- Reduced the memory footprint of
sl::POSITIONAL_TRACKING_MODE::GEN_3by up to 80%, specifically whenenable_area_memoryis disabled. - Fixed random deadlock occurring in low-texture environments when
enable_2d_ground_modewas enabled. - Fixed a rare crash in
Camera::saveAreaMap()that could occur when closing the camera while a save operation was still in progress. Thread synchronization and pointer safety have been strengthened to prevent any concurrent access issues. - Fixed a rare crash that could occur when
enable_imu_fusionwas set tofalse.
5.2.0
Released: Feb 10, 2026
SDK
General
- Reduced CPU load by 51–85% and grab latency by 5–45% on Jetson AGX (benchmarked with 1× to 8× GMSL cameras, SVGA to HD1200, with and without Neural depth and streaming/recording). Memory usage reduced by up to 28% in multi-camera configurations.
- Added
getCudaStream()tosl::CameraOneto match thesl::CameraAPI, enabling unified CUDA stream management. - Added
sdk_gpu_idtoInitParametersOne. - Fixed a lock that could happen when disabling depth with runtime parameters.
grab()now returnsCORRUPTED_FRAMEonly for actual image corruption (green/purple images). Other quality issues (lens obstruction, stereo mismatch, blur, low light) now returnSUCCESS.- Fixed
sl::CameraConfiguration::fpsnot correctly returning the user-requested frame rate on Windows. - Deprecated the
InitParameters::async_image_retrievalparameter; it no longer has any effect. - Added methods
sl::Camera::retrieveTensorandsl::CameraOne::retrieveTensorto retrieve ansl::Tensor, containing the input image pre-processed for inference with SVO or live camera. This method works withsl::TensorParametersto define input options for deep learning inference. Refer to Tutorial 12 for usage examples. - Updated
convertCoordinateSystemandconvertUnitto acceptcudaStream_tas an argument, facilitating operations on GPU memorysl::Matobjects. - Added
applyTransformto apply a rotation and translation to a point cloud matrix. - Standardized default compression mode to H.265 for both streaming and recording.
Capture
- Improved image processing for low-resolution modes, resulting in significantly sharper images and reduced blur.
- Improved capture stability under high load and high FPS scenarios.
- Introduced
InputType::setFromGMSLPort(int gmsl_port)to open GMSL cameras based on their physical connection, useful for static production rigs where wiring remains constant even if serial numbers change. - Added
NV12toMAT_TYPEandLEFT_NV12_UNRECTIFIED/RIGHT_NV12_UNRECTIFIEDtoVIEW. These new views enable requesting anNV12sl::MatviaCamera::retrieveImageorCameraOne::retrieveImage. - Fixed opening GMSL cameras in parallel with different processes.
Zero-Copy Capture (Jetson Only)
For Advanced Users Only: Introduced the RawBuffer API, enabling zero-copy access to native camera capture buffers (NvBufSurface / Argus) in NV12 format.
- Eliminates memory copies when passing camera data to custom TensorRT, Argus, or NVMM pipelines.
- Uses RAII; the buffer is automatically released when
RawBuffergoes out of scope. - Improper use (such as manual destruction of the NvBufSurface) can crash the Argus stack or destabilize the system.
- Requires defining
SL_ENABLE_ADVANCED_CAPTURE_APIat compilation.
Driver
- Integration of Driver v1.4.0 is now required for improved GMSL stability.
- Standardized IMU rate to 200 Hz for guaranteed reliability (requires driver 1.4.0+), significantly reducing inter-sample jitter. In 8-camera setups, IMU rate spread improved from ~11 Hz (185–197 Hz) to < 1 Hz (199.5–200 Hz).
- Fixed data drop issues in complex setups involving 8+ IMUs.
- Unplugging a GMSL camera now correctly triggers a
CAMERA_DISCONNECTEDerror (requires driver 1.4.0+). - GMSL cameras experiencing micro-disconnections now correctly report
CAMERA_DISCONNECTEDerror (requires driver 1.4.0+).
Streaming
- Added
getStreamingDeviceList()static method toCameraOne. - Fixed an issue where
Camera::getStreamingDeviceList()would incorrectly reportCameraOnedevices. - Added
camera_modelproperty toStreamingProperties. - Fixed a use-after-free that could occur on some devices when a ZED streaming connection timed out during initialization.
Recording
- Added a return error code in
sl::Camera::setSVOPositionandsl::CameraOne::setSVOPositionmethods. - Fixed an IMU read issue that could prevent positional tracking from fusing IMU data in rare cases.
- Fixed an issue in
setSVOPositionthat could prevent seeking to the final frame of an SVO file.
SLAM
GEN_3is now the default positional tracking mode.- Enhanced tracking stability in dark or poorly lit environments.
- Fixed a bug where covariance values would erroneously increase while the camera was stationary.
- Added
sl::KeyFrameclass to expose internal frames used for graph and map creation.
Object Detection
- Added new fine-tuning controls per class in
ObjectTrackingParameters:velocity_smoothing_factor: Tunes the “jitter” of bounding box velocity.min_velocity_threshold: Clamps low-speed movement to zero.prediction_timeout_s: Duration to predict a path after losing sight of an object.min_confirmation_time_s: Required “alive” time before a track is validated.
- Improved numerical stability to prevent random ID swaps during tracking.
New Beta Sensors API: Ouster LiDAR and ZED Cameras in a Unified API
The Sensors API (sl::Sensors) is a major new addition that provides a single, unified interface for managing heterogeneous sensor systems (ZED stereo cameras, ZED One monocular cameras, and Ouster LiDAR devices), eliminating the need for separate APIs and manual coordination. This is an addition to the existing API; the original Camera and CameraOne classes are still supported and improved.
- Natively combine ZED cameras and LiDAR devices in a single coordinated pipeline via
sensors.add(). Previously, LiDAR integration required external libraries and custom fusion code. - A single
sensors.add()call works for any ZED model (ZED 2, ZED 2i, ZED X, ZED X One). The SDK auto-detects the camera type, so there is no need to choose betweensl::Cameraandsl::CameraOne. - Set sensor poses with
sensors.setSensorPose()and retrieve data in any reference frame (SENSOR,BASELINK, orWORLD). Point clouds and images are automatically transformed. - The familiar
read()+grab()separation now works across all sensors simultaneously, enabling custom inference between acquisition and SDK processing. - Retrieve data from all sensors in a single call using
BatchedData<T>(e.g.,sensors.retrieveImage(),sensors.retrieveMeasure()), returning a map of sensor identifiers to results. sensors.syncSVO()automatically aligns SVO and OSF files to a common start timestamp for synchronized playback.- Configure which sensors participate in each Object Detection or Body Tracking instance via
sensors_idsandinstance_module_id, with separate fusion groups per sensor set. - A single
sensors.enableRecording()call records all cameras (SVO) and LiDARs (OSF) with synchronized timestamps. sensors.getProcessErrorCodes()returns per-sensor error diagnostics usingBatchedData<sl::ERROR_CODE>.sensors.getHealthStatus()provides per-sensor health, temperature, and connection status.- Internally managed thread pool parallelizes grab, AI inference, and memory allocation across all sensors.
Migration
Platform
- Added official support for JetPack 7.1 / L4T 38.4, unlocking hardware video encoding and decoding on Jetson Thor.
- Added H.264 software (CPU) encoding for SVOs on Orin Nano, which has no hardware video encoder.
- The H.265 software encoding is also supported but reserved for offline processing such as SVO frame extraction or conversion as it requires extensive compute and is unsuited for real time applications.
- The SDK now automatically falls back to H.264 if H.265 is requested but unavailable. This is customizable via the environment variable
ZED_SDK_H265_FALLBACK_MODE:0(Default): Fallback to H.2641: Force x265 CPU encoding (High latency, intended for offline use).2: Return an error (No fallback).
Installer
- Linux installer now supports custom paths via
--install_pathandZED_DIRenvironment variables.

