Skip to content

5.3.0

Choose a tag to compare

@adujardin adujardin released this 29 Apr 12:53
· 8 commits to master since this release
f07927d

https://www.stereolabs.com/developers/release/5.3

5.3.0

ZED SDK 5.3 introduces support for the new ZED X Nano camera, an ultra-compact module featuring an 18 mm baseline and dual global-shutter sensors, enabling high-quality stereo capture for close-range manipulation tasks. This release includes an update to the NEURAL LIGHT model, which has improved robustness and accuracy in challenging environments while maintaining the same runtime cost. The new voxel-decimation mode provides point clouds with depth-adaptive resolution, reducing memory and bandwidth usage while preserving detail where it matters most. In addition, native AES-256 encryption for SVO2 recordings ensures secure data storage and protects sensitive captured information.

Core system improvements streamline deployment and integration. Camera calibration is now stored directly on board in EEPROM, removing network dependency at initialization. The SDK can also automatically reuse an existing CUDA primary context, enabling smoother interoperability with frameworks such as PyTorch. Additionally, a new monotonic TIMESTAMP_CLOCK option ensures image and IMU timestamps remain stable and unaffected by wall-clock adjustments (e.g., NTP/PTP).

Performance and ecosystem updates further enhance the platform. Recording now benefits from significantly reduced CPU usage through zero-copy capture, complemented by the new SVO_ENCODING_PRESET API for flexible quality–performance tuning. SLAM GEN_3 delivers improved accuracy in low-texture environments, ROS 2 image topics support zero-copy intra-process communication, and overall streaming and GMSL stability have been strengthened.

SDK

General

Features / Improvements
  • Improved NEURAL_LIGHT depth model: higher overall accuracy, better shape preservation on planar surfaces, and stronger robustness in challenging conditions such as glare and reflections — at the same runtime cost as before.

  • Added support for the new ZED X Nano camera (ultra-compact, 18mm baseline, global shutter sensors). New sl::MODEL::ZED_X_NANO enum value. All tools, calibration, and wrappers (C, Python, C#, ROS 2) are updated. Requires ZED X Driver >= 1.4.2.

  • Camera calibration data is now stored directly on the on-board EEPROM and automatically kept in sync with the factory calibration file. Upon opening a camera, the SDK prioritizes the downloaded local file. If this file is missing and no internet connection is available, the SDK will seamlessly fall back to the internal EEPROM calibration. For cameras that do not have the calibration written in EEPROM, see the new --download_calibration option in ZED_Explorer.

  • Added a new process-wide TIMESTAMP_CLOCK selector on Camera and CameraOne, letting applications opt into timestamps that are immune to wall-clock adjustments (NTP, PTP, manual date change). Default remains SYSTEM_CLOCK for compatibility; switch to sl::Camera::setTimestampClock(sl::TIMESTAMP_CLOCK::MONOTONIC_CLOCK) before opening any camera to get image and IMU timestamps backed by a monotonic clock.

  • In SYSTEM_CLOCK mode, the SDK now follows backward host-clock adjustments at up to 4 ms per sample, keeping IMU and frame timestamps coherent across an NTP/PTP step. The threshold is tunable with sl::Camera::setMaxSystemClockStepMs(ms). Pass a negative value for PTP setups that need step corrections to land instantly.

  • Added Camera::retrieveVoxelMeasure to retrieve a voxel-downsampled point cloud, useful for reducing point density while minimizing information loss. Supports all point cloud measures (MEASURE::XYZ, XYZRGBA, etc.) and returns an unorganized 1D Mat of reduced points. Configuration is controlled through the new VoxelMeasureParameters struct: voxel size (default: 100mm equivalent), output point positioning (centroid or grid-center), and depth-adaptive voxelization via the VOXELIZATION_MODE enum (FIXED, STEREO_UNCERTAINTY, LINEAR) with a tunable resolution_scale. Camera::retrieveVoxelMeasure uses depth confidence to weight voxels and produce more accurate point clouds.

  • Added SVO2 native recording encryption support. A new RecordingParameters::encryption_key field accepts a passphrase, a hex key, or a path to a key file. For decryption, the same key must be passed via the new InitParameters::svo_decryption_key field. Encryption uses AES-256-CTR through OpenSSL (libcrypto), loaded dynamically at runtime — making it an optional dependency. Performance impact is negligible thanks to hardware-accelerated AES-NI instructions. If the key is lost, the data is unrecoverable. New samples are available in recording/encrypted folder. Tools are also updated to support this feature.

  • Added a lightweight background positional-tracking fallback for Object Detection and Body Tracking when positional tracking is not already enabled, allowing AI modules to start even with out-of-order initialization and automatically hand off to explicitly enabled positional tracking. Relevant samples have been updated to reflect this behavior.

  • Added RESOLUTION::XVGA (960×768) and RESOLUTION::TXGA(640×512) for ZED X HDR cameras. This resolution uses respectively 2×2 NEON and 3x3 NEON-accelerated software binning from the native 1920×1536 sensor output.

  • Camera and CameraOne now automatically reuse an existing CUDA primary context (e.g. created by PyTorch), avoiding unnecessary GPU memory duplication when integrating with other CUDA frameworks. The ZED SDK must be opened after the other framework has initialized CUDA. Set ZED_SDK_REUSE_CUDA_CONTEXT=0 to disable this behavior.

  • Added VIDEO_SETTINGS::AE_ANTIBANDING to control the AE anti-banding mode.

  • Added detection of GMSL PHY CSI bandwidth overflow during camera open (compatible with ZED X Driver >=v1.4.2). When the camera reports a bandwidth overflow for the chosen configuration (resolution/FPS or hardware branching), Camera::open() returns ERROR_CODE::CAMERA_EXCEEDS_BANDWIDTH. This prevents opening configurations that would not stream reliably; it is recommended to reduce resolution or FPS, adjust GMSL branching/hardware, or consult the GMSL documentation for platform limits.

  • Highly reduced CPU loads in recording mode using zero-copy feature.

  • Added SVO_ENCODING_PRESET enum and RecordingParameters::encoding_preset parameter to control the GPU encoder speed/quality tradeoff for SVO recording. Available presets: DEFAULT, ULTRAFAST, FAST, MEDIUM and SLOW. Maps to NVENC P1–P5 on Desktop and V4L2 HW presets on Jetson.

  • Improved GMSL camera capture stability and performance in multithreaded and high-FPS scenarios.

  • Improved sl::Camera::reboot() on GMSL: cameras can now be fully reset and reopened after restarting zed_x_daemon, without restarting the application.

Bug Fixes
  • Fixed SVO2 files larger than 2GB failing to open on Windows
  • Fixed VIDEO_SETTINGS::SCENE_ILLUMINANCE not being accessible via getCameraSettings on ZED X One cameras.
  • Fixed a race condition in the SVO2 writer that could cause a crash (heap-use-after-free) when new data channels were created while recording was in progress.
  • Fixed SVO auto-repair failing to open corrupted files on read-only or full disks. The SDK now opens the corrupted file directly and retries writing the repaired file on the next open.
  • Fixed calibration file download, leaving an empty file on disk on poor network connectivity, which caused subsequent Camera::open() calls to fail with INVALID_CALIBRATION_FILE instead of retrying the download.
  • Fixed Camera::open() on live GMSL/USB (Jetson and x86) sometimes failing with "no valid frame after 10 retries" or returning corrupted first frames during sensor warm-up.
  • Fixed the orientation of 3D objects when cameras are mounted vertically (90° roll w.r.t. the ground)
  • Fixed auto-gain behavior in some GMSL camera paths, improving exposure adaptation reliability.
  • Fixed missing format arguments in GNSS covariance warning log, which caused repeated "argument not found" logger errors when ingesting GNSS data with very low covariance when using the Fusion module.
  • Fixed a race condition in the async streaming pipeline that could cause frame corruption on the receiver side when streaming from cameras on Jetson.
  • Fixed a memory leak (~18 MB per camera, once per open) on GMSL cameras (ZED X / ZED X Mini).
  • Fixed a regression that caused SVO recordings from streamed cameras to fail.
  • Fixed Camera::reboot(sl::INPUT_TYPE::GMSL) returning INVALID_FUNCTION_CALL on non-Jetson platforms (x86, Windows). It now returns CAMERA_NOT_DETECTED, correctly signaling that no GMSL hardware is present.
  • Fixed Camera::open() returning INVALID_FIRMWARE for transient firmware-version reads (the version field was momentarily unreadable, e.g. right after a USB driver re-enumeration). The transient case now returns CAMERA_DETECTION_ISSUE, allowing the SDK's internal open loop to recover; INVALID_FIRMWARE is now reserved for the genuine "firmware too old" case.

Platform

  • Added support for Ubuntu 26.04.

SLAM

Features / Improvements
  • Improved accuracy of sl::POSITIONAL_TRACKING_MODE::GEN_3, especially in low-textured areas.
  • Limited the overall memory used by SLAM.
Bug Fixes
  • Fixed false positive loop closure issue that could occur in low-textured areas.
  • Fixed an issue that prevented 2D mode from initializing.
  • Updated GEN3 behavior in enable_localization_only mode: camera pose and covariance in the WORLD reference frame are now updated when SPATIAL_MEMORY_STATUS is LOST (i.e. when the camera moves outside of the loaded area map).

ROS2

Features / Improvements
  • Improved image transport architecture for zero-copy intra-process communication (IPC). Image topics now use rclcpp::TypeAdapter publishers, enabling intra-process subscribers to receive sl::Mat data directly without serialization. Inter-process subscribers continue to receive standard sensor_msgs/msg/Image messages transparently. Compression transports (compressed, theora, zstd) remain available on demand via image_transport with zero CPU overhead when unused.
  • Image transport plugins are now filtered by topic type: visual topics (RGB, grayscale, stereo) only advertise compressed and theora, while measurement topics (depth, confidence) only advertise compressedDepth. This prevents silent data corruption from incompatible plugin/encoding combinations.
  • Added support for zstd image compression transport on ROS 2 Jazzy and later, enabling faster lossless image streaming over the network.
  • Added voxel point cloud support: when depth.voxel_point_cloud is enabled, the point cloud topic publishes voxel-decimated data via retrieveVoxelMeasure(). New parameters: depth.voxel_size_mm, depth.voxel_resolution_mode (FIXED, STEREO_UNCERTAINTY, LINEAR), and depth.voxel_resolution_scale. All voxel parameters are dynamically reconfigurable at runtime.
  • The minimum supported ROS 2 distribution is now Humble. Pre-Humble distros (Foxy, Galactic) will produce a clear CMake error at build time.
Bug Fixes
  • Fixed IPC/NITROS conflict detection: the launch file now checks whether isaac_ros_nitros is actually installed before enforcing the conflict policy, allowing enable_ipc:=true on systems without NITROS.

Wrappers

Python

Features / Improvements
  • Added RESOLUTION.XVGA and RESOLUTION.TXGA to the Python RESOLUTION enum.
  • Added VIDEO_SETTINGS.AE_ANTIBANDING to the Python VIDEO_SETTINGS enum.
  • Added Camera.retrieve_voxel_measure() for voxel-decimated point cloud retrieval. Accepts a VoxelMeasureParameters object for configuring voxel size, resolution mode, and scale.
  • Added VOXELIZATION_MODE enum and VoxelMeasureParameters class.
  • Added SVO_ENCODING_PRESET enum and RecordingParameters.encoding_preset property.
  • Added SVO2 encryption support: RecordingParameters.encryption_key for recording and InitParameters.svo_decryption_key for playback.
  • Added TIMESTAMP_CLOCK enum and module-level set_timestamp_clock() / get_timestamp_clock() / set_max_system_clock_step_ms() functions to select between SYSTEM_CLOCK and MONOTONIC_CLOCK.
Bug Fixes
  • Fixed RecordingStatus.is_paused property returning is_recording instead of is_paused.

C API

  • Added SL_RESOLUTION_XVGA to the SL_RESOLUTION enum.
  • Added SL_VIDEO_SETTINGS_AE_ANTIBANDING to the SL_VIDEO_SETTINGS enum.
  • Added sl_retrieve_voxel_measure for voxel-decimated point cloud retrieval. Accepts SL_VoxelMeasureParameters struct.
  • Added SL_VOXELIZATION_MODE enum and SL_VoxelMeasureParameters struct.
  • Added SL_SVO_ENCODING_PRESET enum and encoding_preset field to SL_RecordingParameters.
  • Added SVO2 encryption support: encryption_key parameter in sl_enable_recording and svo_decryption_key field in SL_InitParameters.
  • Added SL_TIMESTAMP_CLOCK enum and sl_set_timestamp_clock / sl_get_timestamp_clock / sl_set_max_system_clock_step_ms / sl_get_max_system_clock_step_ms functions.

C#

  • Added RESOLUTION.XVGA and RESOLUTION.TXGA to the C# RESOLUTION enum.
  • Added VIDEO_SETTINGS.AE_ANTIBANDING to the C# VIDEO_SETTINGS enum.
  • Added SVO_ENCODING_PRESET enum and encodingPreset field to RecordingParameters.
  • Added VOXELIZATION_MODE enum and VoxelMeasureParameters struct for RetrieveVoxelMeasure.
  • Added SVO2 encryption support: encryption_key parameter in EnableRecording and svoDecryptionKey field in InitParameters.
  • Added TIMESTAMP_CLOCK enum and static Camera.SetTimestampClock / Camera.GetTimestampClock / Camera.SetMaxSystemClockStepMs / Camera.GetMaxSystemClockStepMs methods.

Tools

Features / Improvements

  • ZED Explorer --dc / --download_calibration: new CLI option that downloads the factory calibration from the Stereolabs server and writes it to the camera's EEPROM. Accepts an optional list of serial numbers; if none are provided, all connected cameras are processed. For each camera the tool downloads the .conf file, compares it against the calibration already stored in EEPROM, and writes only if the data differs. Usage: ZED_Explorer --dc [SN1 SN2 ...].
  • Updated default sharpness value in ZED Explorer.
  • Added unrectified views to ZED Studio's camera settings panel.
  • Fixed auto-scaling not working in ZED Sensor Viewer when replaying SVO files.

Bug Fixes

  • Fixed exposure/gain sliders not updating correctly in manual mode in ZED Explorer.

Samples

  • Added a voxel view based on Camera::retrieveVoxelMeasure into the depth sensing sample, key switch 'v'.
  • Added a dedicated voxel point cloud sample (C++ and Python) with interactive controls for all VoxelMeasureParameters fields, 3D viewer with left camera PIP preview, and SVO looping.